【问题标题】:I can't add a Servlet on my project我无法在我的项目中添加 Servlet
【发布时间】:2014-07-12 05:09:52
【问题描述】:

我正在尝试在我的项目中添加一个 servlet。但它似乎不起作用。

首先,我在 web.xml 文件中插入了 and 标签。

我试图访问地址“/App/newrmt?~~”。但是浏览器显示404错误信息。

我认为系统无法识别我描述的映射模式。

在将标签插入 web.xml 文件之前,我应该做些什么来添加新的 servlet 和模式?

它的原始web.xml代码如下。

<servlet>
    <servlet-name>action</servlet-name>
    <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
    <init-param>
        <param-name>config</param-name>
        <param-value>/WEB-INF/struts-config.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet>
    <servlet-name>HttpReceiver</servlet-name>
    <servlet-class>myProject.HttpReceiver</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet> 

<servlet> 
    <servlet-name>RmtlImg</servlet-name> 
    <servlet-class>myProject.ImageServlet</servlet-class> 
    <init-param> 
        <param-name>dir</param-name> 
        <param-value>/APP/WAS/FILES/A/</param-value> 
    </init-param> 
</servlet>


<servlet-mapping>
    <servlet-name>action</servlet-name>
    <url-pattern>*.do</url-pattern>
</servlet-mapping>
<servlet-mapping>
    <servlet-name>HttpReceiver</servlet-name>
    <url-pattern>*.http</url-pattern>
</servlet-mapping>
<servlet-mapping>
    <servlet-name>RmtlImg</servlet-name>
    <url-pattern>/rmtlimgdown</url-pattern>
</servlet-mapping>

然后,我改变了如下代码

<servlet>
    <servlet-name>action</servlet-name>
    <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
    <init-param>
        <param-name>config</param-name>
        <param-value>/WEB-INF/struts-config.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet>
    <servlet-name>HttpReceiver</servlet-name>
    <servlet-class>myProject.HttpReceiver</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet> 

<servlet> 
    <servlet-name>RmtlImg</servlet-name> 
    <servlet-class>myProject.ImageServlet</servlet-class> 
    <init-param> 
        <param-name>dir</param-name> 
        <param-value>/APP/WAS/FILES/A/</param-value> 
    </init-param> 
</servlet>
**<servlet> 
    <servlet-name>NewRmtlImg</servlet-name> 
    <servlet-class>myProject.ImageServlet</servlet-class> 
    <init-param> 
        <param-name>dir</param-name> 
        <param-value>/APP/WAS/FILES/A/</param-value> 
    </init-param> 
</servlet>**

<servlet-mapping>
    <servlet-name>action</servlet-name>
    <url-pattern>*.do</url-pattern>
</servlet-mapping>
<servlet-mapping>
    <servlet-name>HttpReceiver</servlet-name>
    <url-pattern>*.http</url-pattern>
</servlet-mapping>
<servlet-mapping>
    <servlet-name>RmtlImg</servlet-name>
    <url-pattern>/rmtlimgdown</url-pattern>
</servlet-mapping>
**<servlet-mapping>
    <servlet-name>NewRmtlImg</servlet-name>
    <url-pattern>/newrmt</url-pattern>
</servlet-mapping>**

当我像下面一样更改标签中的模式时,效果很好。这意味着 servlet-class 本身编码良好。只是 WAS 不理解这种模式。

<servlet-mapping>
    <servlet-name>NewRmtlImg</servlet-name>
    <url-pattern>/newrmt</url-pattern>
</servlet-mapping>

===> 

<servlet-mapping>
    <servlet-name>NewRmtlImg</servlet-name>
    <url-pattern>/rmtlimgdown</url-pattern>
</servlet-mapping>

任何人都可以帮助我!

【问题讨论】:

  • 试错行不通。尝试阅读有关 servlet 的教程。如果您有 30 分钟或 1 小时的时间,您将学到足够的知识来回答这里的一些问题。

标签: java xml jsp servlets web.xml


【解决方案1】:

当我像下面一样更改标签中的模式时,效果很好。这意味着 servlet-class 本身编码良好。只是 WAS 不理解这种模式。

这可能有助于您理解url-pattern

Servlet 匹配过程

一个请求可以匹配给定上下文中的多个 servlet 映射。 servlet 容器使用简单的匹配过程来确定最佳匹配。

匹配过程有四个简单的规则。

  • 首先,容器更喜欢精确路径匹配而不是通配符路径匹配。

  • 其次,容器更喜欢匹配最长的模式

  • 第三,容器更喜欢路径匹配而不是文件类型匹配。

  • 最后,&lt;url-pattern&gt;/&lt;/url-pattern&gt; 模式总是匹配任何没有其他模式匹配的请求。


查看我的帖子How does a servlets filter identify next destination is another filter or a servlet/jsp?了解详细说明。

【讨论】:

    【解决方案2】:

    我解决了这个问题。

    我发现我需要更改设置文件“httpd.conf”。

    系统已经配置了多个带有“MatchExpression”的虚拟主机。

    所以我要做的是在配置文件中添加一个 url-pattern。

    对不起,我的英语不好。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-03-27
      • 1970-01-01
      • 1970-01-01
      • 2016-04-30
      • 2016-09-24
      • 1970-01-01
      • 2021-04-01
      相关资源
      最近更新 更多