servlet:一次请求多次响应的问题
今天遇到一个问题,客户端发起请求,得到服务端响应是重定向次数过多,尝试清除Cookie。
Servlet代 1 import java.io.IOException;
2
3 import javax.servlet.ServletException;
4 import javax.servlet.http.HttpServlet;
5 import javax.servlet.http.HttpServletRequest;
6 import javax.servlet.http.HttpServletResponse;
7
8 public class LoginServlet extends HttpServlet {
9 @Override
10 protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
11 req.setCharacterEncoding("utf-8");
12 resp.setContentType("text/html;charset=utf-8");
13 resp.sendRedirect("/servlet/login.jsp");14 }
15 }
web.xml配置如下:
1 <?xml version="1.0" encoding="UTF-8"?>
2 <web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee"
3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4 xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
5 http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
6 <servlet>
7 <servlet-name>loginServlet</servlet-name>
8 <servlet-class>com.xzp.servlet.LoginServlet</servlet-class>
9 <load-on-startup>1</load-on-startup>
10 </servlet>
11 <servlet-mapping>
12 <servlet-name>loginServlet</servlet-name>
13 <url-pattern>/*</url-pattern>
14 </servlet-mapping>
15 16 </web-app>
原因:
<url-pattern>/*</url-pattern>中的/*指的是:loginServlet的所有请求都会被捕捉,过滤。当LoginServlet业务逻辑处理结束时,会重定向resp.sendRedirect("/servlet/login.jsp");这时客户端会再次请求LoginServlet,LoginServlet捕捉到请求重新执行,相当于回调了doGet()方法,最终导致重定向次数太多。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)