有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

spring mvc Java多URL模式,无扩展

当我想使用这种模式访问url时,我的问题就开始了,忽略了任何扩展名

localhost:8084/project/foo/1

我有这个网站。xml配置:

<?xml version="1.0" encoding="UTF-8"?>

<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_1.xsd"
         version="3.1">
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:applicationContext.xml</param-value>
    </context-param>
    <servlet>
        <servlet-name>dispatcher</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>dispatcher</servlet-name>
        <url-pattern>*.html</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>dispatcher</servlet-name>
        <url-pattern>/foo</url-pattern>
    </servlet-mapping>
    <session-config>
        <session-timeout>
            30
        </session-timeout>
    </session-config>
</web-app>

实际上,要访问那个url,我需要使用/foo/1.html,我想使用/foo/1,因为我将使用这个数字作为id来查找一个对象,我不知道我是否缺少什么,但这个配置不起作用

控制器代码

@Controller
public class FooController {

    @RequestMapping(value = "/foo/{id}")
    public ModelAndView telefono(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, @PathVariable String id) {
        Map<String, Object> model = new HashMap<String, Object>();
        // Code to search foo
        return new ModelAndView("foo", model);
    }
}

共 (1) 个答案

  1. # 1 楼答案

    你试过了吗

      <servlet-mapping>
            <servlet-name>dispatcher</servlet-name>
            <url-pattern>/foo/*</url-pattern>
        </servlet-mapping>
    

    勾选this out

    试试这个

    @RequestMapping(value = "/{id}")
    

    As/foo重定向到servlet make/foo/1将尝试查找/foo/foo/1