我正在使用Servlets和JSP。 我想从我的网络应用程序中删除一些订单。 Servlets 3.0版,servlet容器Tomcat v.7.65。
我web.xml
的一部分:
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/web-app_3_0.xsd"
version="3.0">
<servlet>
<servlet-name>InitController</servlet-name>
<servlet-class>com.taxi.service.controller.InitController</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet>
<servlet-name>OrderController</servlet-name>
<servlet-class>com.taxi.service.controller.OrderController</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>InitController</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>OrderController</servlet-name>
<url-pattern>/createNewOrder</url-pattern>
<url-pattern>/deleteOrderFromAdmin/*</url-pattern>
<url-pattern>/editOrderFromAdmin/*</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>/index.jsp</welcome-file>
</welcome-file-list>
</web-app>
我正在尝试删除订单,在我的jsp中我使用:
<td><a href="<c:url value='/deleteOrderFromAdmin/${order.id}' />">Delete</a></td>
但是当我试图添加特殊的映射/ deleteOrderFromAdmin / *时,我收到一个错误(我知道我的InitController创建了这个问题,因为它映射为“/”):
javax.servlet.ServletException: Servlet execution threw an exception
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:326)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:748)
at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:486)
at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:411)
at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:338)
at com.taxi.service.controller.InitController.doGet(InitController.java:33)
我的InitController必须在启动时加载,因为它包含许多我的服务选项,以及我应用程序中的其他Web服务。
在我的订单删除方法中,我正在使用某种路径interpritation,如下所示:
Long orderId = null;
String[] pathParts = request.getPathInfo().split("/");
if(pathParts != null && StringUtils.isNoneEmpty(pathParts[1])){
orderId = Long.parseLong(pathParts[1]);
}
if (orderId != null) {
orderService.deleteOrder(orderId);
}
我必须接受此订单ID并且必须删除它。
问题:如何解决映射问题?
感谢。
更新
所有这些映射更改(“/ *”)都是从我需要从我的jsp页面获取该订单ID开始的。是否有一些替代方法可以从jsp中获取这些id?