簡體   English   中英

我無法在項目中添加Servlet

[英]I can't add a Servlet on my project

我正在嘗試在我的項目上添加一個servlet。 但這似乎行不通。

首先,我將and標記插入web.xml文件中。

然后,我嘗試訪問地址“ / 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類本身已被正確編碼。 只是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類本身已被正確編碼。 只是WAS不了解這種模式。

它可能會幫助您了解url-pattern

Servlet匹配程序

在給定的上下文中,一個請求可以匹配多個servlet映射。 Servlet容器使用簡單的匹配過程來確定最佳匹配。

匹配過程具有四個簡單規則。

  • 首先,容器比通配符路徑匹配更喜歡精確的路徑匹配。

  • 其次,容器喜歡匹配最長的圖案

  • 第三,容器比文件類型匹配更喜歡路徑匹配。

  • 最后,模式<url-pattern>/</url-pattern>始終匹配沒有其他模式匹配的任何請求。


看看我的帖子servlet過濾器如何識別下一個目標是另一個過濾器還是servlet / jsp? 詳細說明。

我解決了這個問題。

我發現我需要更改設置文件“ httpd.conf”。

系統已使用“ MatchExpression”配置了幾個虛擬主機。

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

對不起,我的英語不好。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM