1 <servlet> 2 <servlet-name>login</servlet-name> 3 <servlet-class>com.jd.login.UI.LoginUIServlet</servlet-class> 4 </servlet> 5 <servlet-mapping> 6 <servlet-name>login</servlet-name> 7 <url-pattern>/*</url-pattern> 8 </servlet-mapping>
若將servlet的url-pattern配置為“/*”時會攔截內部所有請求,使所有請求都由com.jd.login.UI.LoginUIServlet來處理,所以當項目跑起來后會出現棧溢出錯誤:java.lang.StackOverflowError
1 @WebServlet(name = "LoginUIServlet",value="/servlet/LoginUIServlet") 2 public class LoginUIServlet extends HttpServlet { 3 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 4 //出現死循環,因為所有請求都被攔截 5 request.getRequestDispatcher("/WEB-INF/pages/login.jsp").forward(request,response); 6 } 7 8 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 9 this.doPost(request,response); 10 } 11 }
棧溢出異常如下:

解決:
將web.xml中的servlet的url-pattern配置為具體的路徑
1 <servlet> 2 <servlet-name>login</servlet-name> 3 <servlet-class>com.jd.login.UI.LoginUIServlet</servlet-class> 4 </servlet> 5 <servlet-mapping> 6 <servlet-name>login</servlet-name> 7 <url-pattern>/servlet/LoginUIServlet</url-pattern> 8 </servlet-mapping>
檢驗:
在瀏覽器中輸入localhost/servlet/LoginUIServlet,結果如下

備注:在IDEA中跑起來的web項目,在瀏覽器中訪問不要添加應用名稱。
