私は経験豊富な j2ee 開発者ではないので、完全に基本的なものや明白なものが欠けている場合は、あらかじめご容赦ください。
私は Tomcat 7 を使用しています。プロジェクトは、tomcat7-maven-plugin
プラグインとredeploy
ゴールを使用して tomcat インスタンスにデプロイされpom.xml
ます。ビルドはエラーなしで動作します。唯一の奇妙な点は、名前#
の末尾に..war
mytest#.war
サーブレット コードは非常に単純です。デバッグ情報を出力し、GET 要求に対して文字列で応答するだけです。
初期部分は正常に動作します。次のマッピング情報を出力します(正しいと思います):
Path=/mytest/ //this is context path
StupidServlet[/stupid] //this line and following ones are registrations
jsp[*.jsp, *.jspx]
default[/]
ただし、リクエストしようとするとhttp://localhost:8080/mytest/stupid
、Tomcat から 404 メッセージが表示されます。Index.jsp も 404 であり、ルートは無効なリダイレクトを返します (少なくとも firefox はそれを伝えます)。
私のweb.xml
ファイルは、Servlet 3.0標準に対応するために、ここのいくつかの回答から取られています:
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
version="3.0"/>
サーブレット コード:
@WebServlet(name = "StupidServlet", loadOnStartup = 1, urlPatterns = {"/stupid"})
public class StupidServlet extends javax.servlet.http.HttpServlet {
@Override
public void init() throws ServletException {
super.init();
System.out.print("This is STUPID INIT FROM SERVLET!!!!");
Map servlets = getServletContext().getServletRegistrations();
System.out.println("\n===REGISTRATIONS==="+getServletContext().getServletContextName());
System.out.println("Path="+getServletContext().getContextPath());
for(String key:servlets.keySet()){
ServletRegistration servlet = servlets.get(key);
System.out.println(""+key+servlet.getMappings());
}
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("STUPID REQUEST IS DONE");
super.doGet(req, resp);
resp.getOutputStream().println("My name is Stupid Servlet");
resp.flushBuffer();
}
}