SpringMVC 学习—框架简介,搭建框架入门案例_Love Life .的博客-CSDN博客一.SpringMVC简介1.什么是MVCMVC是一种软件架构的思想,将软件按照模型,视图,控制器来划分M:Model,模型层,指工程中的JavaBean,作用是处理数据 JavaBean分为俩类: ·一类称为实体类Bean:专门用来存储业务数据,如Stuent,User等。 ·一类称为业务处理Bean:指Service或Dao对象,专门用于处理业务逻辑和数据访问。V:View,视图层,指功能中的html...https://blog.csdn.net/m0_52901132/article/details/124129642?spm=1001.2014.3001.5501接上叙
从注解名称我们可以看到,@RequestMapping注解的作用就是将请求和处理请求的控制器方法关联起立,建立映射关系
SpringMVC接收到指定的请求,就回来找到在映射关系中对应的控制器方法来处理这个请求
@RequestMapping标识一个类:设置映射的请求路径的初始信息
@Requestmapping标识一个方法:设置映射的请求路径的具体信息
当模块比较多时如(现在有俩个模块:order订单模块,user用户模块,这时俩个模块中都有一个@RequestMapping("list")对应的控制器方法,当浏览器发送请求这时会报错404,因为控制器中有俩个list,它不知道要用那个list,所以这时需要order这个类定义一个@RequestMapping(Xxx)注解在user类上页添加一个@RequestMapping注解,在发送请求时就可以明确地写出到底访问那个请求如/user/list)
@RequestMapping注解的value属性通过请求的请求地址匹配请求映射
@RequestMapping注解的value属性是一个字符串数组,表示该请求映射能够匹配多个请求地址所对应的请求。
@RequestMapping注解的value属性必须设置,至少通过请求地址匹配请求映射
@RequestMapping注解的method属性通过请求方式(get,post,put,delete)匹配请求映射。
@RequestMapping注解的method是一个RequestMethod类型的数组,表示该请求映射能够匹配多种请求方式的请求。
若当前请求的请求地址满足请求映射的value属性,但是请求方式不满足method属性,则浏览器会报错405:Request method "POST" not supported
测试RequestMapping注解的method属性---->GET 测试RequestMapping注解的method属性---->GET
没有携带参数
携带参数
跟value属性,性质差不多
?:表示可以是任意字符
*:表示可以是0个或多个字符
**:表示任意的一层或多层目录
注意:在使用**,只能使用/**/xxx的方式
原始方式:/deleteUser?id=1
rest方式:/deleteUser/1
SpringMVC路径中的占位符常用于restful风格中,但请求路径中将某些数据通过路径的方式传输到服务器中,就可以在相应的@RequestMapping注解的value属性中通过占位符{xxx}表示传输的数据,再通过@PathVariable注解,将占位符所表示的数据赋值给控制器方法的形参
测试通过ServletAPI获取参数
@Controller
public class TestParamController {
@RequestMapping("/testParam")
public String testParam(ServletRequest request) {
String username = request.getParameter("username");
String password = request.getParameter("password");
System.out.println("用户名:" + username + ",密码:" + password); // 用户名:admin,密码:123
return "success";
}
}
@RequestMapping("/testparamter")
public String testParamter(String username,String password,String[] hobby) {
System.out.println("用户名:" + username + ",密码:" + password+ ",爱好:" + Arrays.toString(hobby));
/*
结果:
用户名:admin,密码:123,爱好:[run, Swimming, Bodybuilding]
若请求参数中出现了多个同名的请求参数,可以在控制器方法的形参位置设置字符串类型或字符串数组接收此请求参数
若使用字符串类型的形参,最终结果为请求参数的每一个值之间使用逗号进行拼接
*/
return "success";
}
@RequestParam是将请求参数和控制器方法的形参创建映射关系
@RequestParam注解一共有三个属性:
value:指定为形参赋值的请求参数的参数名
required:设置是否必须传输此请求参数,默认值为true
若设置为true时,则当前请求必须传输value所指定的请求参数,若没有传输该请求参数,且没有设置defaultValue属性,则页面报错400,Required String Parameter 'xxx'is not present,
若设置为false,则当前请求不是必须传输value所指定的请求参数,若没有传输,则注解所标识的形参的值为null
defaultValue:不管required属性值为true还是false,当value所指定的请求参数没有传输时,则使用默认值为形参赋值(常用)
@RequestHeader是将请求头信息和控制器方法的形参创建映射关系
@RequestHeader注解一共有三个属性:value,required,defaultValue,用法同@RequestParam
@CookieValue是将cookie数据和控制器方法的形参创建映射关系
@CookieValue注解一共有三个属性:value,required,defaultValue,用法同@RequestParam
可以在控制方法的形参位置设置一个实体类型的形参,此时若浏览器传输的请求参数的参数名和实体类中的属性名一致,那么请求参数就会为此属性赋值
@RequestMapping("/testPOJo")
public String testPOJO(User user){
System.out.println(user); // User{username='admin', password='123', age=21}
return "success";
}
当我们使用get请求获取请求参数时如果出现了乱码问题可以在tomcat的目录找到server.xml 在配置端口的标签里添加URIEncoding="UTF-8"
当我们使用post 请求获取请求参数时如果出现了乱码问题那么可以在web.xml配置过滤器
可以使用SpringMVC提供的编码过滤器CharacterEncodingFiflter,但是必须在web.xml中进行注册
web.xml
CharacterEncodingFilter
org.springframework.web.filter.CharacterEncodingFilter
encoding
UTF-8
forceResponseEncoding
true
CharacterEncodingFilter
/*
这样我们再获取post请求参数就不会有乱码问题了