HttpServletRequest.getParameter(String)和getAttribute()的区别

本文解析了getParameter()和getAttribute()两种从request对象获取参数的方法的区别。getParameter()用于客户端与服务器间的数据传递,而getAttribute()则涉及服务器内部数据的存取。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

【转】地址忘记了,,,

getParameter(String)和getAttribute()这两个方法都是从request对象中获得参数的方法。但实际上他们之间有着本质的区别。


1. getParameter()是指客户端和server端之间的数据传递。我们在从浏览器端发出一个请求到server端时(无论是GET和POST方式),所有的参数都是被包装成了String的形式之后才被传递到server端的。所以,我们在server端的代码中就可以通request.getPapameter(String)的方式来取得。


2. getAttribute()一向是和setAttribute()一起使用的,只有先用setAttribute()设置之后,才能够通过getAttribute()来获得值,它们传递的是Object类型的数据。而且必须在同一个request对象中使用才有效。

何谓同一个request呢?例如,在同一个servelet中,同一个Action中(Struts),同一个JSP中等等;或者是同一个request被forward了多次,那么每一个处理这个request对象的web组件都是使用的同一个request对象;或者include的方式也是一样的。



从以上分析,这两者之间的区别就很明确了。getParameter()是在数据从客户端到server端之后才有效的,而getAttribute()则是server端内部的事情,只有在server端调用了setAttribute()之后,并且没有redirect,没有到客户端之前,getAttribute()才有效。


同理,getParameterNames()和getParameterValues(String)---获取前台多选的内容 跟getParameter(String)是一样的道理。
package edu.njupt; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import java.io.IOException; import java.io.PrintWriter; import java.util.ArrayList; import java.util.Arrays; import java.util.Objects; @WebServlet("/MyWeb") public class ServletDemo03 extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { req.setCharacterEncoding("utf-8"); resp.setContentType("text/html;charset=utf-8"); HttpSession session = req.getSession(); User inputUser = new User(); PrintWriter out = resp.getWriter(); String uname = req.getParameter("uname"); String uQQ = req.getParameter("uQQ"); String uemail=req.getParameter("uemail"); String uaddress=req.getParameter("uaddress"); String unumber=req.getParameter("unumber"); String usex=req.getParameter("usex"); String uid=req.getParameter("uid"); String checkcode = req.getParameter("check-code"); String cb = req.getParameter("cb"); String CC = (String) req.getSession().getAttribute("checkCode"); // inputUser.setname(req.getParameter("name")); // inputUser.setUserQQ(req.getParameter("QQ")); // inputUser.setUseremail(req.getParameter("email")); // inputUser.setUseraddress(req.getParameter("address")); // inputUser.setUsernumber(req.getParameter("number")); // inputUser.setUsersex(req.getParameter("sex")); // inputUser.setUserid(req.getParameter("id")); System.out.println(uname); System.out.println(uQQ); System.out.println(uemail); System.out.println(uaddress); System.out.println(unumber); System.out.println(usex); System.out.println(uid); System.out.println(checkcode); System.out.println(cb); String[] cbs = req.getParameterValues("cb"); System.out.println(Arrays.toString(cbs)); if (Objects.equals(checkcode,CC)) { // User selectUser = UserDAO.getAUser(inputUser); if (uname !=null&&uQQ !=null&&uemail !=null&&uaddress !=null&&unumber !=null&&usex !=null&&uid !=null) { System.out.println("登陆成功"); // session.setAttribute("information", selectUser); // ArrayList userlist = UserDAO.getAllUser(); // session.setAttribute("userlist", userlist); req.getRequestDispatcher("/Suc").forward(req, resp); } else { System.out.println("登陆失败"); req.getRequestDispatcher("/Fail").forward(req, resp); } } else { System.out.println("验证码错误"); req.getRequestDispatcher("/CCW").forward(req, resp); } } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { doGet(req, resp); } }
02-06
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值