gpt4 book ai didi

java - Servlet 参数与属性

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:12:22 24 4
gpt4 key购买 nike

我的问题是 - 如果我使用网守 servlet 将页面转发到其他 servlet,是让第二个 servlet 引用参数更好还是为它们创建属性以供引用?

假设我有一个形式:

<form action=www.ermehgerdpuppies.com/Gatekeeper id = puppyForm> 
<select name=puppyList>
<option value=cutePuppyServlet_12>CutePuppy
<option value=uglyPuppyServlet_14>UglyPuppy
</select></form>

我将此表单提交给 Gatekeeper servlet:

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

if (request.getParameterMap().containsKey("puppyList"))
{
String qString = request.getParameter("puppyList");
String[] qsArray = qString.split("_");
request.setAttribute("merPuppy", qsArray[1]);
RequestDispatcher rd = getServletContext().getRequestDispatcher(qsArray[0]);
rd.forward(request, response);
}
}

然后转到 cutePuppyServlet(对于这个例子,它转到 cutePuppy)

现在在我的 cutePuppyServlet.java 中,我可以这样引用数据:

request.getParameter("puppyList");

request.getAttribute("merPuppy");

有了参数,我可以检查它是否存在,以防止炸毁一切。我的问题是,哪个更利于可维护性?我应该坚持转发参数还是应该创建一个属性?

最佳答案

为内部 servlet 使用参数的优点:

  • 如果需要,嵌套的 servlet 可以独立于父 servlet。
  • 开发者对参数比较敏感(不知道为什么,很少看到用到请求属性)
  • 更少的代码,因为容器从客户端隐式传递它们。

使用请求属性的优点:

  • 包含、转发等将包含它们,因为请求不会更改,尽管其 URL 可能会更改。
  • 这就是属性的真正含义,组件之间的消息传递。因此,您坚持 servlet 设计。

归根结底,这并不重要。我会选择属性,因为我更关心以标准方式做事(即使这是一个没有人关心或遵循的标准),而不是快速做事。

关于java - Servlet 参数与属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16175861/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com