【问题标题】:Mapping servlet in web.xml [duplicate]在 web.xml 中映射 servlet [重复]
【发布时间】:2013-09-24 05:49:41
【问题描述】:

xml 文件位于我的项目的WebContent/WEB-INF/web.xml。我正在使用 Eclipse 并运行 Tomcat(不是通过 Eclipse 安装的。我更喜欢单独安装)。

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
  <display-name>EmployeeManagement</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
  <context-param>
    <param-name>name</param-name>
    <param-value>Pramod</param-value>
  </context-param>
  <servlet-mapping>
        <servlet-name>Registration</servlet-name>
        <url-pattern>/EmployeeManagement/WebContent/Registration</url-pattern>
   </servlet-mapping>
</web-app>

当表单页面提交给servlet时它不起作用。我每次都收到 404 错误。我遇到这个问题有一段时间了。有人请帮帮我。

【问题讨论】:

  • 发布您的form action
  • 我在你的 web.xml 中看不到 Servlet 标签

标签: java xml eclipse tomcat servlets


【解决方案1】:

您缺少对映射很重要的&lt;servlet&gt;...&lt;/servlet&gt; 标签。所以使用以下内容:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
<display-name>EmployeeManagement</display-name>
<welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<context-param>
    <param-name>name</param-name>
    <param-value>Pramod</param-value>
</context-param>
<servlet>
    <servlet-name>Registration</servlet-name>
    <servlet-class>com.yourPackageName.yourServletName</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>Registration</servlet-name>
    <url-pattern>/EmployeeManagement/WebContent/Registration</url-pattern>
</servlet-mapping>
</web-app>

并且您应该在您的表单上提供action 值,如下所示:

<form action="/EmployeeManagement/WebContent/Registration" method="post">

      //Some code here

</form> 

还要注意以下代码中的所有值都区分大小写:

<servlet>
    <servlet-name>Registration</servlet-name>
    <servlet-class>com.yourPackageName.yourServletName</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>Registration</servlet-name>
    <url-pattern>/EmployeeManagement/WebContent/Registration</url-pattern>
</servlet-mapping>

您的 servlet 名称 Registration 在标签 &lt;servlet&gt;...&lt;/servlet&gt;&lt;servlet-mapping&gt;...&lt;/servlet-mapping&gt; 上应该相同,并且 package 名称应该与您的 servlet 类所在的位置相同。

【讨论】:

  • 在哪里可以找到用于配置 web.xml 的 servlet-name 和 url-pattern
【解决方案2】:

你还没有将 servlet 名称映射到 servlet 类,它应该如下所示,

&lt;servlet-class&gt; 中给出你的servlet的路径

    <servlet>
         <servlet-name>Registration</servlet-name>
         <servlet-class>com.Registration<servlet-class>
    </servlet>
    <servlet-mapping>
         <servlet-name>Registration</servlet-name>
         <url-pattern>/EmployeeManagement/WebContent/Registration</url-pattern>
    </servlet-mapping>

【讨论】:

    【解决方案3】:

    检查您的表单操作。 那里有路径吗

    /EmployeeManagement/WebContent/Registration
    

    YOURAPPCONTEXT/EmployeeManagement/WebContent/Registration
    

    YOURAPPNAME/EmployeeManagement/WebContent/Registration
    

    【讨论】:

      【解决方案4】:

      您已指定 servlet-mapping 并在 servlet-name 中使用名称 Registration 之前未定义它。

      在 servlet 映射中使用之前,您需要定义 servlet

      <servlet>
          <servlet-name>Registration</servlet-name>
          <servlet-class>[fully qualifyied name of your servlet]</servlet-class>
      </servlet>
      

      【讨论】:

        【解决方案5】:

        您缺少在 web.xml 中定义 servlet 的另一部分

        <servlet>
           <servlet-name>Registration</servlet-name>
           <servlet-class>
              package.path.to.RegistrationServlet
          </servlet-class>
        </servlet>
        

        【讨论】:

          【解决方案6】:

          您忘记了配置的重要部分。您应该在servlet-mapping 标签之前将其添加到您的web.xml

          <servlet>
              <servlet-name>Registration</servlet-name>
              <servlet-class>com.name.of.your.servlet.class</servlet-class>
          </servlet>
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2015-03-01
            • 2013-01-20
            • 2012-04-17
            • 2012-07-23
            • 2016-07-05
            • 2018-03-12
            • 2012-01-02
            相关资源
            最近更新 更多