req.getAttribute 和 req.getParameter

本文详细解析了JavaWeb中getAttribute与getParameter方法的区别,解释了为何在服务器端跳转时,更倾向于使用setAttribute和getAttribute来传递参数,而非直接使用getParameter。文章指出,getAttribute和setParameter允许在多个页面间共享信息,且能存放任意类型的Java对象。

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

req.getAttribute和req.getParameter两个方法的区别 

最近学习javaWeb,在Servlet中使用req.getParameter来取值,使用req.setAttribute和req.getAttribute来存取值,对于其作用有一些混乱。

request对象代表客户端的一次请求,可以用它来存储客户端请求的一些参数。

getParameter()方法
     该方法是用于客户端传递过来的参数,它的返回值类型永远是是字符串类型这个赋值动作是有客户端完成的。

 getAttribute()方法
      该方法是专用在请求传到服务器端后,在去使用其进行存取一些附加数据。它的返回类型永远是Object.

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

原因:

1)从上面分析可以找到getParameter获取的是客户端发送的参数,而且在服务器端不能通过setParameter(key, value)来添加参数,因为没有这个函数

      所以如果需要在服务器端进行跳转,并需要想下个页面发送新的参数时,则没法实现。但是attribute可以,可以通过setAttribute(),将值放入到request对象,然后在其他页面使用getAttribute获取对应的值,这样就达到一次请求可以在多个页面共享一些对象信息

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


req.getParameter的意思 

 大致的内容如下:

<form action="xxxxxxx.do" >
<input name="name" value="哈哈"/>
<input type="submit" value="提交"/>
</form>
这个form提交请求后,在你的action中
String name = request.getparameter("name"); 
那么name的值就是“哈哈”
   它是一种取参数的方法。把jsp文件中的数据读取到出来。然后就可以封装利用起来。


再看这里:

   <body>
       <form action="${pageContext.request.contextPath }/login.action" name="frmLogin"  method="post">
          用户名: <input type="text" name="name"> <br/>
        密码: <input type="text" name="pwd"> <br/>
          <input type="submit" value="登陆"> <br/>
       </form>
  </body>
</html>

   它将jsp的内容拿出来,再封装到User实现类的setName方法中进行进一步封装。
    // 1. 获取请求数据,封装
        String name = request.getParameter("name");
        String pwd = request.getParameter("pwd");
        User user = new User();
        user.setName(name);
        user.setPwd(pwd);
 

 


转载自:https://blog.csdn.net/IT_COOKIE_SAM/article/details/52722881

              https://blog.csdn.net/qq_40301026/article/details/90740229

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、付费专栏及课程。

余额充值