【问题标题】:why servlet name appending to requesting map url ? is it possible to have URL without servlet name prefix?为什么 servlet 名称附加到请求的地图 url 上?是否可以有没有 servlet 名称前缀的 URL?
【发布时间】:2016-09-03 11:20:21
【问题描述】:

我有 servlet xml 文件 personDetails-servlet.xml

<bean>
<mvc:annotation-driven />
<bean id="viewResolver"
    class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="prefix" value="/WEB-INF/jsp/yyy/config/" />
    <property name="suffix" value=".jsp" />
</bean>
<context:component-scan base-package="com.ddd.config.controller" />
</beans>

和 Web.xml 条目

 <servlet>
      <servlet-name>personDetails</servlet-name>
      <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
     <load-on-startup>1</load-on-startup>
 </servlet>
 <servlet-mapping>
    <servlet-name>personDetails</servlet-name>
     <url-pattern>/personDetails/*</url-pattern>
 </servlet-mapping>

下面是PersonDetailsController

 package com.ddd.config.controller;
 @Controller
 public class PersonDetailsController {
 @RequestMapping(value="/personDetails/personAddressDetails.html",            method=RequestMethod.GET)
 public String abc(ModelMap model) throws Exception{
 }
 }

我正在尝试使用http://localhost:8080/myapp/personDetails/ConfgurationDetails.html 它不工作 当我尝试使用以下一个时,它正在工作 http://localhost:8080/myapp/personDetails/personDetails/ConfgurationDetails.html

有人可以告诉我如何在不添加 servlet 名称来请求映射 ulr 的情况下做到这一点,还可以告诉我名称是如何添加的。 谢谢

【问题讨论】:

    标签: java spring spring-mvc servlets jakarta-ee


    【解决方案1】:

    根据您的web.xml 配置文件,您告诉您的应用程序使用org.springframework.web.servlet.DispatcherServlet 类来处理匹配&lt;application_context&gt;/personDetails/* 的请求。

    前面的 URL 是您将在 Spring MVC 中使用的所有 URL 的起点。因此,如果您声明以下处理程序@RequestMapping(value="/personAddressDetails.html"),那么您需要调用的URL 将是&lt;application_context&gt;/personDetails/personAddressDetails.html

    换句话说,您不需要将 servlet 映射前缀添加到 Controller 的 RequestMapping 注释中。

    【讨论】:

    • 嗨,亚历山大感谢您的回复。但我试过这个。我知道它会起作用。但是,这里也添加了 servlet 名称前缀。但我需要一些解决方案,其中只有 applicationContext/ReqestMapping。我在多个地方都有这个问题。我无法使用 servlet 名称前缀维护 url。我只需要请求映射。有没有可能..?
    • 我不确定我理解你的意思。如果您想摆脱 /personDetails 部分,则使用 /* 作为 Dispatcher 的 servlet 映射。
    • 你所说的,你需要使用 /* 。我已经改变了剩下的地方谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-02
    相关资源
    最近更新 更多