关于请求路径的问题
springmvc支持ant风格
- ?
- *
- /**
限定了/web/m3后面有且仅有一个字符,但不能是斜杠
后面可以是任意字符(0 ~ n)
后面可以是多层路径
@GetMapping、@PostMapping....
分别只限定了只支持Get、Post请求
对于非Get、Post请求的支持
需要有额外的内容添加,要增加一个过滤器来额外处理
- 过滤器
- 返回的不再是页面而是数据
<!-- 注册一个支持所有http请求类型的过滤器-->
<filter>
<filter-name>hiddenHttpMethodFilter</filter-name>
<filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>hiddenHttpMethodFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
表单提交里面还要添加一个隐藏的参数
关于静态资源访问的问题
由于我们的servlet设置了URL匹配方式为 / ,所以它将静态资源也当作一个后台的请求
比如http://localhost:8080/static/css/index.css 它尝试去匹配一个static/css/index.css的Controller里面的RequestMapping的组合,因为没有,所以404
解决方式很多,最简单的就是让springmvc单独处理,将这些交给容器的默认的servlet处理,就不让DispatcherServlet来处理了
解决方式一:
<!-- 默认的servlet处理者-->
<mvc:default-servlet-handler/>
使用这种方法时,一定要同时加上 <mvc:annotation-driven/>,只加上它一个的话相当于全部给他处理了
解决方式二:
通过映射关系描述 ,一一对应编写规则
<mvc:resources mapping="/static/css/*" location="static/css/"/>
解决方式三:
自行在web.xml中定义映射规则
@PathVariable
RESTful风格