我有一個簡單的Servlet,看起來像這樣:Servlet的服務和init方法被調用,但不是的doGet
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class Bla extends HttpServlet {
private static final long serialVersionUID = 16252534;
@Override
public void init() throws ServletException {
System.out.println("init");
}
@Override
public void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
System.out.println("doGet");
resp.setContentType("text/html");
PrintWriter out = resp.getWriter();
out.println("<html><h1>It works!!</h1></html>");
}
@Override
public void service(ServletRequest req, ServletResponse resp) throws ServletException, IOException {
System.out.println("service");
}
@Override
public void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("doPost");
}
@Override
public void destroy() {
System.out.println("Destroy servlet");
}
}
和的web.xml,看起來像這樣:
<?xml version="1.0" encoding="UTF-8" ?>
<web-app>
<display-name>Archetype Created Web Application</display-name>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>Bla</servlet-name>
<servlet-class>instrurental_proj.servlets.Bla</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Bla</servlet-name>
<url-pattern>/bla</url-pattern>
</servlet-mapping>
</web-app>
當我訪問url http://localhost:8080/instrurental/bla
時,在控制檯中打印出以下內容:
init
service
,但不是我所期望的doGet
。另外,瀏覽器中沒有任何東西被打印出來! (我期待它說「它有效」)。
自昨天以來,我一直在努力解決這個問題。有沒有人有任何建議,問題是什麼?
問題是你重載'服務'基本上破壞了servlet的正常流程。如果你添加'super.service(req,resp)'到你重寫的方法,它就會起作用。 – 2014-09-01 14:56:53
@ M.Deinum謝謝!它現在有效! – CodyBugstein 2014-09-01 15:01:26