zoukankan      html  css  js  c++  java
  • Servlet & JSP

    getParameter 方法获取的是表单或 URL 的请求参数。参数是从 Web 客户端传递至 Web 服务端。例如有如下的 servlet:

    @WebServlet(name = "helloServlet", urlPatterns = {"/hello"})
    public class HelloServlet extends HttpServlet {
        @Override
        protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {    
            Enumeration<String> paramNames = req.getParameterNames();
            while (paramNames.hasMoreElements()) {
                String paramName = (String) paramNames.nextElement();
                resp.getWriter().println(paramName + ": " + req.getParameter(paramName));
            }
        }    
    }

    当接收 /hello?foo=a&bar=b 请求时,容器便将 foo 和 bar 这两个参数通过 HttpServletRequest 传递至 doGet 方法。

    C:Usershuey>curl "http://localhost:8080/hello-mvn-web/hello?foo=a&bar=b"
    foo: a
    bar: b

    request.getAttribute 获取的是作用域在 request 范围的属性。与 getParameter 从客户端获取参数不同,attribute 是在 servlet 容器内部传递的。常见的一种情况是:当 request 从一个 servlet 转发至另一个 servlet 时,attribute 通过 request 跟着传递。例如有如下的 a.jsp:

    <% request.setAttribute("user", "huey"); %>
    <jsp:forward page="b.jsp" />

    在 a.jsp 中设置了名为 user 的属性,然后转发至 b.sjp。b.jsp 的内容如下:

    <% 
        String user = (String) request.getAttribute("user");
        out.println("Hello, " + user + "!");
    %>

    测试访问 /a.jsp:

    C:Usershuey>curl "http://localhost:8080/hello-mvn-web/a.jsp"
    Hello, huey!

    另一个区别是:getParameter 方法返回的 String 对象,getAttribute 方法返回的是 Object 对象。这也跟上述的差异有关,因为 attribute 是在 servlet 容器内部传递,所以它可以是任意的 Java 对象;而 parameter 是从 HTTP 客户端传递至服务端,因此它不能是任意的 Java 对象,只能是字符串。

    对于 attribute,ServletRequest 还提供了 setAttribute 和 removeAttribute 来设置和删除 attribute。而对于 parameter,ServletRequest 只提供了 getParameter 方法。

  • 相关阅读:
    高精度模板(未完待续)
    $CH0201$ 费解的开关
    $POJ2288$ $Islands$ $and$ $Bridges$
    luoguP1445 [Violet]樱花
    P3694 邦邦的大合唱站队
    [NOI2009]管道取珠
    [AHOI2006]基因匹配
    luogu P3411 序列变换
    HNOI2001 产品加工
    牛客ACM赛 B [小a的旅行计划 ]
  • 原文地址:https://www.cnblogs.com/huey/p/5447431.html
Copyright © 2011-2022 走看看