Servlet参数与属性

问题描述 投票:3回答:3

我的问题是-如果我正在使用网守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");

带有参数,我可以检查它是否存在以防止炸毁所有内容。我的问题是,哪个对可维护性更好?我应该坚持转发参数还是应该创建属性?

java servlets attributes
3个回答
6
投票

内部Servlet使用参数的优点:

  • 如果需要,嵌套的Servlet可以独立于父Servlet而独立。
  • 开发人员更加了解参数(我不知道为什么,但是我很少看到使用请求属性)
  • 较少的代码,因为容器隐式地从客户端传递了它们。

使用请求属性的优点:

  • 包含,转发等将包含它们,因为请求不会更改(尽管其URL可能会更改。
  • 这是属性实际上意味着的,组件之间传递消息。因此,您将坚持Servlet设计。

归根结底,这无关紧要。我之所以选择属性,是因为我比起快速地做事,更关心按标准方式做事(即使这是没人关心或遵循的标准)。


1
投票

如果数据已经可以作为参数使用,并且在设计中始终可以访问(即:整个请求周期都可以访问请求参数),并且将其设置为属性,然后以参数,而不必将其设置为属性。

“少即是多,我想这就是我要讲的重点。


1
投票

I think主要区别在于属性对中的“值”部分可以是Java对象,而带有参数的它只能是字符串。

© www.soinside.com 2019 - 2024. All rights reserved.