今天學習cookie的時候,建好了一個動態Web工程后,重啟Tomcat突然啟動不了。然后在網上尋找答案也沒找到我的這種問題,后來只好直接尋找。最后發現了造成這個問題的原因,現將這個原因記錄在這里,避免以后遇到相同的問題忘記。
在新版的Eclipse中,新建的servlet會在servlet中加入注解@WebServlet("/Servlet名稱")如圖所示:
1 @WebServlet("/LoginServlet") 2 public class LoginServlet extends HttpServlet { 3 4 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 5 6 String uname = request.getParameter("uname"); 7 String upwd = request.getParameter("upwd"); 8 9 response.setContentType("text/html;charset=utf-8"); 10 11 if("admin".equals(uname)&&"admin".equals(upwd)) {//正確 12 13 //請求轉發方式(對象是request獲取的) 14 request.getRequestDispatcher("login_success.html").forward(request, response); 15 16 }else { 17 response.getWriter().write("登錄失敗!"); 18 } 19 20 } 21 22 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 23 doGet(request, response); 24 } 25 26 }
在類定義上面自動添加了一個注解@WebServlet("/LoginServlet"),這相當於web.xml中這個Servlet的url-pattern,然后我又自己在web.xml中配置了url-pattern也為/LoginServlet,這就讓Tomcat服務器認為有兩個相同的url-patten,而這是不允許的,所以無法啟動Tomcat服務器,只需要將其中一個改掉即可解決。