欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 前端技术 > javascript >内容正文

javascript

【JSP/Servlet】getParameter和getAttribute的使用、区别

发布时间:2024/2/28 javascript 47 豆豆
生活随笔 收集整理的这篇文章主要介绍了 【JSP/Servlet】getParameter和getAttribute的使用、区别 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

总结:request、cookie、session、context的区别

这四个对象有不同级别的作用域和生命周期。

(1)request:解决了一次请求内的数据共享问题(作用域:一次请求)

req.setAttribute("uname", "张三"); // 在servlet中添加request参数

(2)cookie:解决了同一用户不同请求的数据共享的问题(作用域:一次会话/或者设置定时)

Cookie c = new Cookie("uname", "张三"); // 创建Cookie对象c.setPath("CookieServlet"); // 指定共享cookie的Servletresp.addCookie(c); // 将cookie添加到响应对象中

(3)session:解决了同一用户不同请求的数据共享问题(作用域:会话创建->浏览器关闭)

// session 技术是依赖Cookie 技术的服务器端的数据存储技术// cookie存储在本地浏览器,而session存储在服务器HttpSession hs=req.getSession(); // 在servlet中获取session对象hs.setAttribute("uname","张三"); // 数据存储

(4)context:解决了不同用户的数据共享问题(作用域:服务器启动->服务器关闭)

ServletContext sc=this.getServletContext(); // 在servlet中获取context对象sc.setAttribute("str", "ServletContext对象学习");// 数据存储

getParameter和getAttribute区别

  • getParameter()获取的是客户端设置的数据,在服务器端调用。
    getAttribute()获取的是服务器设置的数据,在客户端调用。

  • getParameter()永远返回字符串
    getAttribute()返回值是任意类型



既然parameter和attribute都是传递参数,为什么不直接使用parameter呢?

服务器端

  • 不能通过setParameter(key,value)来添加参数,因为没有这个函数
  • 不能通过req.getAttribute("name")获取前端通过表单提交的数据,会取不到值

可以通过setAttribute(),将值放入到request对象,然后在前端页面使用getAttribute()获取对应的值,这样就达到一次请求可以在多个页面共享一些对象信息

②parameter返回值是字符串,意味着不能传递其他的对象,如Map,List,但是attribute则可以存放任意类型的Java对象


示例

服务器端获取请求信息(Java Servlet)

String uname = req.getParameter("name");

服务器端设置请求信息(Java Servlet)

(1)重定向的方式

HttpSession hs = req.getSession(); // 存储到session hs.setAttribute("user", u); resp.sendRedirect("/09-Manager/main/main.jsp");

(2)请求转发的方式

req.setAttribute("str", "用户名或密码错误,请重新输入!"); req.getRequestDispatcher("/login.jsp").forward(req, resp);

客户端获取请求信息(JSP页面)

<%List<User> list=(ArrayList<User>)request.getAttribute("allUser");%>

总结

以上是生活随笔为你收集整理的【JSP/Servlet】getParameter和getAttribute的使用、区别的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。