[英]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容器使用簡單的匹配過程來確定最佳匹配。
首先,容器比通配符路徑匹配更喜歡精確的路徑匹配。
其次,容器喜歡匹配最長的圖案 。
第三,容器比文件類型匹配更喜歡路徑匹配。
最后,模式<url-pattern>/</url-pattern>
始終匹配沒有其他模式匹配的任何請求。
看看我的帖子servlet過濾器如何識別下一個目標是另一個過濾器還是servlet / jsp? 詳細說明。
我解決了這個問題。
我發現我需要更改設置文件“ httpd.conf”。
系統已使用“ MatchExpression”配置了幾個虛擬主機。
所以我要做的是在配置文件中添加一個url-pattern。
對不起,我的英語不好。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.