Ste*_*e C 2 web-services web.xml servlets url-pattern
在我的servlet类中,我用以下内容注释了类:
@WebServlet("/OnlinePostListener/testFromAnnotation")
public class OnlinePostListener extends HttpServlet {
...
}
Run Code Online (Sandbox Code Playgroud)
我的web.xml包含以下内容:
<servlet>
<description>
</description>
<display-name>OnlinePostListener</display-name>
<servlet-name>OnlinePostListener</servlet-name>
<servlet-class>com.me.forwardingProxy.OnlinePostListener</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>OnlinePostListener</servlet-name>
<url-pattern>/testFromWebXML</url-pattern>
</servlet-mapping>
Run Code Online (Sandbox Code Playgroud)
我的servlet仅在访问URL时响应:
http://localhost:8080/forwardingProxy/OnlinePostListener/testFromAnnotation
Run Code Online (Sandbox Code Playgroud)
但不是:
http://localhost:8080/forwardingProxy/OnlinePostListener/testFromWebXML
Run Code Online (Sandbox Code Playgroud)
@ WebServlet的注释和servlet-mapping有什么区别?为什么servlet映射不适用于此URL模式?
这是因为你在后面的例子中使用了错误的url来获取servlet.
使用正确的网址:
http://localhost:8080/forwardingProxy/testFromWebXML
Run Code Online (Sandbox Code Playgroud)
错误:您在以后的情况下使用了额外的/ OnlinePostListener.
在第一种情况下,您指定的servlet的映射URL "/OnlinePostListener/testFromAnnotation"因此http://localhost:8080/forwardingProxy在稍后的情况下将此字符串作为附加URL用于将servlet映射到/testFromWebXML(AND NOT /OnlinePostListener/testFromWebXML).
但是,如果您坚持使用URL http://localhost:8080/forwardingProxy/OnlinePostListener/testFromWebXML来利用web.xml,则应进行以下更改:
<servlet-mapping>
<servlet-name>OnlinePostListener</servlet-name>
<url-pattern>/OnlinePostListener/testFromWebXML</url-pattern>
</servlet-mapping>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4883 次 |
| 最近记录: |