当前位置: 首页 > 知识库问答 >
问题:

何时为映射servlet加载web.xml文件?

秦凯定
2023-03-14
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app >
  <servlet>
    <servlet-name>SearchEngineServlet</servlet-name>
    <servlet-class>SearchEngine</servlet-class>
  </servlet>

   <servlet-mapping>
    <servlet-name>SearchEngineServlet</servlet-name>
    <url-pattern>/servlet/*</url-pattern>
  </servlet-mapping>
</web-app>
<!DOCTYPE html>
<html>
<head>
    <title>Search Engine</title>
</head>
<body>
    <div>

        <a href="search">Click to call Servlet</a>

        <form action="servlet/search" method="post">
            <input type="text" name="s">
            <input type="submit" value="Submit">
        </form>
    </div>
</body>
</html>
public class SearchEngine extends HttpServlet {

    private String mymsg;

    @Override
    public void init() throws ServletException 
    {      
        mymsg = "Http Servlet Demo";   
    }

    @Override
    public void doPost(HttpServletRequest request,
        HttpServletResponse response) throws ServletException, 
        IOException 
    {      
        PrintWriter out = response.getWriter();
        out.println("<h1>" + mymsg + "</h1>");
    }
}
web.xml -> /home/cubouyaka/web/apache-tomcat-8.5.38/webapps/SearchEngine/WEB-INF/web.xml
SearchEngine.java -> /home/cubouyaka/web/apache-tomcat-8.5.38/webapps/SearchEngine/WEB-INF/src/SearchEngine.java
index.html -> /home/cubouyaka/web/apache-tomcat-8.5.38/webapps/SearchEngine/index.html

然后我可以访问index.html,但是当我试图单击链接以使用servlet时,我得到了一个not file错误,说/home/cubouyaka/web/apache-tomcat-8.5.38/webapps/searchengine/servlet/search不存在,但是我在web.xml中进行了映射,所以我不明白为什么我会得到这个错误。

有人能帮帮我吗?我已经浪费了很多时间试图解决这个问题…

共有1个答案

汝飞
2023-03-14

您可以查看这篇文章,以便在加载web.xml时得到答案,但在您的情况下,这不是一个问题。

假设您的上下文路径为空(绑定到根),代码也是正确的。只有一件事是错的:

<a href="search">Click to call Servlet</a>

这里还应该引用连接到servlet/*下映射的servlet的url。

<a href="servlet/search">Click to call Servlet</a>
 类似资料:
  • 问题内容: xml文件位于我的项目中。我正在使用Eclipse并运行Tomcat(它不是通过Eclipse安装的。我希望它是单独的安装)。 当表单页面提交到servlet时,它不起作用。我每次都收到404错误。我已经遇到这个问题一段时间了。有人请帮助我。 问题答案: 您缺少标记,这对于映射很重要。因此,使用以下命令: 并且您应该像下面这样在表单上赋予价值: 并记下所有值在以下代码中区分大小写: 您

  • 我对java servlet很陌生。我对为什么我们在web中使用servlet映射感到非常困惑.xml我已经制作了一个使用两个servlet的项目,如果我不使用servlet映射,那么项目也会以正确的方式执行。那么为什么使用 servlet 映射..???

  • xml文件位于我的项目的中。我正在使用Eclipse并运行Tomcat(它不是通过Eclipse安装的,我更希望它是一个单独的安装)。 当表单页面提交给servlet时,它就不起作用了。我每次都得到一个404错误。我遇到这个问题有一段时间了。谁来帮帮我。

  • 我正在尝试在web.xml中映射多个servlet。在我的index.html中,我有一个操作“desktype.do”的表单,当我运行程序时,它成功了。我是这样开始的: …效果很好。它成功地编译,并且在按下我在index.html中设置的按钮后,它就会按照需要运行。在添加了额外的servlet映射之后: 我收到错误“模块尚未部署。详细信息请参阅服务器日志。构建失败(总时间;0秒)”我不确定该怎么

  • 问题内容: 我有一个内容为web.xml的文件: 我尝试过要求 这两个请求都由Servlet2处理。为什么? 更新 谢谢你们的帮助。我意识到行为取决于servlet映射声明的顺序。我尝试了这个web.xml 结果: 问题答案: 从Servlet 3.0 规范开始,这是Web容器在收到请求后必须定位servlet的方式(重点是我的): 用于映射到servlet的路径是来自请求对象的请求URL减去上下

  • 我试过请求 这两个请求都由Servlet2处理。为什么? 更新 结果: