JSP中request.getParameter()和session.getAttribute()有何..

http://tieba.baidu.com/p/341011625

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

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

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 com.example.servlet; import com.example.model.Book; import com.example.model.User; import com.example.service.BookService; import jakarta.servlet.ServletException; import jakarta.servlet.annotation.WebServlet; import jakarta.servlet.http.HttpServlet; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpSession; import java.io.IOException; @WebServlet(name = "AddBookServlet", urlPatterns = {"/addBook"}) public class AddBookServlet extends HttpServlet { private final BookService bookService = new BookService(); @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { HttpSession session = request.getSession(false); User user = (User) session.getAttribute("user"); // 检查用户是否是管理员 if (user == null || !user.getRole().equals("admin")) { response.sendRedirect("bookList"); // 非管理员,重定向到图书列表 return; } // 获取表单数据 String title = request.getParameter("title"); String author = request.getParameter("author"); String category = request.getParameter("category"); String isbn = request.getParameter("isbn"); String description = request.getParameter("description"); String imageUrl = request.getParameter("imageUrl"); String totalStockStr = request.getParameter("totalStock"); if (title == null || title.isEmpty() || author == null || author.isEmpty() || category == null || category.isEmpty() || isbn == null || isbn.isEmpty() || totalStockStr == null || totalStockStr.isEmpty()) { request.setAttribute("errorMessage", "请填写所有必填字段"); request.getRequestDispatcher("addBook.jsp").forward(request, response); return; } int totalStock; try { totalStock = Integer.parseInt(totalStockStr); if (totalStock < 0) { request.setAttribute("errorMessage", "库存数量必须大于或等于 0"); request.getRequestDispatcher("addBook.jsp").forward(request, response); return; } } catch (NumberFormatException e) { request.setAttribute("errorMessage", "库存数量必须是数字"); request.getRequestDispatcher("addBook.jsp").forward(request, response); return; } // 创建 Book 对象 Book book = new Book(); book.setTitle(title); book.setAuthor(author); book.setCategory(category); book.setIsbn(isbn); book.setDescription(description); book.setImageUrl(imageUrl); book.setTotalStock(totalStock); book.setAvailableStock(totalStock); // 添加时,可用库存等于总库存 // 调用 BookService 添加图书 boolean success = bookService.addBook(book); if (success) { // 添加成功,重定向到图书列表 response.sendRedirect("bookList"); } else { // 添加失败,设置错误信息并返回添加图书页面 request.setAttribute("errorMessage", "添加图书失败,请检查数据"); request.getRequestDispatcher("addBook.jsp").forward(request, response); } } } 修改错误
最新发布
12-13
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值