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 方法。

  • 相关阅读:
    java_十进制数转换为二进制,八进制,十六进制数的算法
    vim常用命令 vim键盘布局
    百度HTTPS加密搜索有什么用?
    delete
    hadoop2的automatic HA+Federation+Yarn配置的教程
    MinGW GCC下sleep()函数问题
    delete
    8天学通MongoDB——第一天 基础入门
    8天学通MongoDB——第六天 分片技术
    8天学通MongoDB——第五天 主从复制
  • 原文地址:https://www.cnblogs.com/huey/p/5447431.html
Copyright © 2011-2022 走看看