springMVC环境配置
- 当springMVC配置文件在src源码文件家路径时
<servlet>
<servlet-name>springDispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<!-- Map all requests to the DispatcherServlet for handling -->
<servlet-mapping>
<servlet-name>springDispatcherServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
- 当springMVC配置文件在WEB-INF目录下时,
将配置文件名称设置为XXX(servlet-name)-servlet.xml
<servlet>
<servlet-name>springDispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<!-- <url-pattern>/</url-pattern>如果设置为"/*",将拦截包括".jsp"在类的所有资源
但是filter中的<url-pattern>/</url-pattern>设为"/*" -->
<servlet-mapping>
<servlet-name>springDispatcherServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
RequestMapping部分参数测试说明
package com.zyh.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
@RequestMapping("/carbert")
@Controller
public class Hello {
@RequestMapping(value = "/hello", method = RequestMethod.POST)
public String test() {
System.out.println("处理中。。。");
return "successful";
}
@RequestMapping(value ="/hello01", params = {"username!=1","pwd=0"})
public String test2() {
return "successful2";
}
@RequestMapping(value = "/hello02", headers = "User-Agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:73.0) Gecko/20100101 Firefox/73.0")
public String test03() {
return "successful3";
}
@RequestMapping(value ="/hello03")
public String test3() {
return "successful";
}
@RequestMapping(value = "/antTest01")
public String antTest01() {
System.out.println("antTest01精确匹配地址。。。");
return "successful";
}
@RequestMapping(value = "/antTest0?")
public String antTest02() {
System.out.println("antTest02通配符?匹配地址。。。");
return "successful";
}
@RequestMapping(value = "/antTest*")
public String antTest03() {
System.out.println();
return "successful";
}
@RequestMapping()
public String antTest04() {
System.out.println();
return "successful";
}
}
params 和 headers
- params 和 headers支持简单的表达式:
- param1: 表示请求必须包含名为 param1 的请求参数
- !param1: 表示请求不能包含名为 param1 的请求参数
- param1 != value1: 表示请求包含名为 param1 的请求参数,但其值不能为 value1
- {"param1=value1", "param2"}: 请求必须包含名为 param1 和param2 的两个请求参数,且 param1 参数的值必须为 value1
RequestMapping-Ant 风格资源地址支持 3 种匹配符:
?:匹配文件名中的一个字符
*:匹配文件名中的任意字符
**:** 匹配多层路径
通过 @PathVariable 可以将 URL 中占位符参数绑定到控制器处理方法的入参中:
URL 中的 {xxx} 占位符可以通过 @PathVariable("xxx") 绑定到操作方法的入参中。
<!-- -->
/user/*/createUser
匹配 /user/aaa/createUser、/user/bbb/createUser 等 URL
/user/**/createUser
匹配 /user/createUser、/user/aaa/bbb/createUser 等 URL
/user/createUser??
匹配 /user/createUseraa、/user/createUserbb 等 URL
发送除GET和POST之外的其他请求(Rest风格)
1. 设置一个filter,org.springframework.web.filter.HiddenHttpMethodFilter
<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>
2. 为请求设置一个表单,method="POST" ,并设置一个_method,其value值即为发送请求的方式
<form action="book/01" method="post">
<input name="_method" value="put">
<input type=submit value="修改1号图书信息"><br>
</form>
<form action="book/01" method="post">
<input name="_method" value="delete">
<input type=submit value="删除1号图书信息"><br>
</form>
@RequestMapping(value = "/book/{id}", method = RequestMethod.GET)
public String select(@PathVariable("id")Integer id) {
System.out.println("查询到"+id+"号图书");
return "successful";
}
@RequestMapping(value = "/book/{id}", method = RequestMethod.DELETE)
public String delete(@PathVariable("id")Integer id) {
System.out.println("删除"+id+"号图书");
return "successful";
}
@RequestMapping(value = "/book/{id}", method = RequestMethod.PUT)
public String update(@PathVariable("id")Integer id) {
System.out.println("修改"+id+"号图书");
return "successful";
}
@RequestMapping(value = "/book/{id}", method = RequestMethod.POST)
public String insert(@PathVariable("id")Integer id) {
System.out.println("添加"+id+"号图书");
return "successful";
}
注意:高版本Tomcat接受Rest-Jsp异常问题,对请求页面进行以下设置isErrorPage="true"
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" isErrorPage="true"%>