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()方法,最終導致重定向次數太多。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM