如何在servlet中设置servlet-mapping以获取我的控制器中的id值?

时间:2015-10-14 13:57:07

标签: java jsp servlets

我正在使用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?

0 个答案:

没有答案