【问题标题】:Java Servlet Web XML URL MappingJava Servlet Web XML URL 映射
【发布时间】:2012-05-09 06:52:24
【问题描述】:

我一直在为这个 Tomcat 的 web xml 文件苦苦挣扎。

<context-param>
    <param-name>name</param-name>
    <param-value>Bob</param-value>
</context-param>

<servlet>
    <servlet-name>test</servlet-name>
    <servlet-class>TestServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>test</servlet-name>
    <url-pattern>/servlet/*</url-pattern>
</servlet-mapping>

我知道这个文件正在被读取,因为当我使用测试时

public class TestServlet extends HttpServlet{
public void doGet(HttpServletRequest req, HttpServletResponse res){
    res.setContentType("text/html");

    String name = getServletContext().getInitParameter("name");

    PrintWriter out = null;
    try{
        out = res.getWriter();
    }catch(Exception e){}

    out.println("<html><head></head><body><img src=\"/twitter.png\"><p>Hi my name is " + name + "</p></body></html>");
}

}

我能够读取我放入上下文参数中的名称。我对你们的问题是如何创建一个 URL 映射,这样我就不必通过 /servlet/ 来访问我在 URL 中的 servlet?当我尝试制作 url 模式时,例如

/test/*,即使我说的是网站/test/TestServlet,我也无法访问 servlet。我从浏览器收到 404 Not Found 错误

【问题讨论】:

    标签: java servlets web.xml url-pattern


    【解决方案1】:

    将servlet类放在一个包中,不要依赖InvokerServlet。它自 Tomcat 5.5 起被禁用,并在 Tomcat 7.0 中被移除。

    请不要阅读 10~15 岁的教程/书籍。技术每年都在变化。

    另见:

    【讨论】:

    • 嗨 BalusC,感谢您的及时回复。拿到 servlet 3.0 后我还有一个问题。当我尝试@WebServlet("/MyServlet") 时,如何访问我的servlet?我是去 website/servlet/MyServlet 还是可以通过 website/MyServlet 访问它?
    猜你喜欢
    • 2011-07-09
    • 2012-01-20
    • 2017-09-21
    • 1970-01-01
    • 2012-04-17
    • 2017-09-12
    • 2023-03-21
    • 2018-11-24
    • 2016-01-02
    相关资源
    最近更新 更多