Servlet中request.sendRedirect()不起作用

本文介绍了一种在Servlet中正确实现页面重定向的方法。通过使用request.getContextPath()获取项目的根目录路径,解决了从Servlet重定向到特定JSP页面时遇到的问题。

项目中的Servlet中重定向到wishingWall目录下的wishingWall.jsp时没有任何效果

response.sendRedirect("/wishingWall/wishingWall.jsp");


 

可以考虑使用相对于根目录的路径,

response.sendRedirect(request.getContextPath()+"/wishingWall/wishingWall.jsp");


 

request.getContextPath()获得相对于项目根目录的上下文路径,因此更改路径后能实现跳转,因此可以得到不跳转是关于路径的逻辑错误
package com.example.servlet; import com.example.model.User; import com.example.service.BorrowService; 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 = "BorrowServlet", urlPatterns = {"/borrow"}) public class BorrowServlet extends HttpServlet { private final BorrowService borrowService = new BorrowService(); @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { HttpSession session = request.getSession(false); User user = (User) session.getAttribute("user"); if (user == null) { response.sendRedirect("index.jsp"); return; } String bookIdParam = request.getParameter("bookId"); if (bookIdParam == null || bookIdParam.isEmpty()) { response.sendRedirect("bookList"); // 没有 bookId,重定向到列表 return; } try { int bookId = Integer.parseInt(bookIdParam); boolean success = borrowService.borrowBook(user.getUserId(), bookId); if (success) { // 借阅成功,重定向到我的借阅 response.sendRedirect("myBorrowings"); } else { // 借阅失败,设置错误信息并返回图书列表 request.setAttribute("errorMessage", "借阅失败,图书已借完或不存在"); request.getRequestDispatcher("bookList").forward(request, response); } } catch (NumberFormatException e) { // bookId 不是数字 response.sendRedirect("bookList"); // 重定向到图书列表 } } } 修改错误
最新发布
12-13
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值