JSP中request.getParameter()和session.getAttribute()有没有区别,它们各自适合那些场合

本文详细解释了request和session在Web开发中的作用与区别。request主要用于获取当前请求中的参数,适用于临时性的数据交互;session则用于跨页面保持用户会话状态,如登录验证等功能。
 
request.get是从上一个页面用户提交的数据中取得,

而session存在范围是用户这一次看你的网站。比如用,用户需要密码才能访问你的网站,用户初次登录时,你可以把变量设到SESSION里,以后只要检查SESSION里的变量就可以知道用户是否已经在登录状态。
---------------------------------------------------------------

request.getParameter()
request 是请求,即把需要的参数得到,一般是从上一个页面用户提交的数据中得到

session.getAttribute()
session 是用来保持会话的连接,说明见楼上
---------------------------------------------------------------

1,request.getParameter() 得到客户端数据
2,session.getAttribute() 存入变量以便让更多页面可以得到该变量,通过设置存在时间,可以用在是否在线,是否已登录等场合

---------------------------------------------------------------

request.getParameter()是从上一个页面用户提交的数据中取得,

session.getAttribute()在整个会话期间都有效,这样可以方便的多次获得该变量

---------------------------------------------------------------

request.getParameter()上一个页面提交的。
比如 form 里的 或者市 url 里的。

session.getAttribute()是在用户的整个会话期有效。
---------------------------------------------------------------

这个问题主要是request和session的差别,request范围较小一些,只是一个请求,简单说就是你在页面上的一个操作, request.getParameter()就是从上一个页面中的url、form中获取参数,但如果一个request涉及多个类,后面还要取参数, 可以用request.setAttribute()和request.getAttribute(),但是当结果输出之后,request就结束了。
而session可以跨越很多页面,可以理解是客户端同一个IE窗口发出的多个请求。这之间都可以传递参数,比如很多网站的用户登录都用到了。
 
package servlet; import vo.Pet; import dao.PetDAO; import javax.servlet.*; import javax.servlet.annotation.MultipartConfig; import javax.servlet.annotation.WebServlet; import javax.servlet.http.*; import java.io.IOException; import java.io.InputStream; import java.util.UUID; @WebServlet("/PetServlet") public class PetServlet extends HttpServlet { private PetDAO petDAO = new PetDAO(); @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 检查登录状态 HttpSession session = request.getSession(false); Object userObj = session != null ? session.getAttribute("user") : null; if (userObj == null) { response.sendRedirect("login.jsp"); return; } String action = request.getParameter("action"); if ("add".equals(action)) { // 获取表单数据 String petName = request.getParameter("petName"); String petType = request.getParameter("petType"); Integer age = Integer.parseInt(request.getParameter("age")); String description = request.getParameter("description"); String createdBy = ((vo.User) userObj).getUsernameHye(); // 保存宠物信息到数据库 Pet pet = new Pet(); pet.setPetNameHye(petName); pet.setPetTypeHye(petType); pet.setAgeHye(age); pet.setDescriptionHye(description); pet.setCreatedByHye(createdBy); response.sendRedirect("PetServlet?action=list"); } } @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { HttpSession session = request.getSession(false); if (session == null || session.getAttribute("user") == null) { response.sendRedirect("login.jsp"); return; } String action = request.getParameter("action"); if ("list".equals(action)) { request.setAttribute("petList", petDAO.getAllPets()); request.getRequestDispatcher("pets.jsp").forward(request, response); } else if ("delete".equals(action)) { int id = Integer.parseInt(request.getParameter("id")); petDAO.deletePet(id); response.sendRedirect("PetServlet?action=list"); } } } 我想删除会显示图片的代码
最新发布
12-31
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值