SpringMVC
入门程序步骤:
- 启动服务器,加载一些配置文件
- DispatcherServlet对象创建
- springmvc.xml被加载了
- HelloController被创建成对象
- 视图解析器被创建成对象
- 发送请求,后台处理请求
- 运行程序,点击首页的超链接
- 超链接根据web.xml中的DispatcherServlet这个控制中心找到相应的注解@RequestMapping下的方法,执行该方法
- 控制中心重新寻找对象,根据视图解析器和前一个方法的返回值,寻找到下一步跳到哪儿,将结果显示给客户端(success.jsp展示给客户端)
- @RequestMapping
- value:用于指定请求的URl和path属性的作用是一致的,value=”/haha”
- method:用于指定请求的方式,method={RequestMethod.POST}
- params:用于指定限制请求参数的条件,它支持简单的表达式,要求请求参数的key和value必须和配置的一模一样
- params = {“accountName”},表示请求参数必须有accountName
- params={“money!100”},表示请求参数中money不能是100
- headers:用于指定限制请求消息头的条件,headers={“Accept”}
请求参数的绑定
- 请求参数的绑定说明
- 绑定机制
- 表单提交的数据都是k=v 的格式, username=haha&&passsword=123
- SpringMVC的参数绑定过程是把表单提交的请求参数,作为控制器中方法的参数进行绑定的
- 要求:提交表单的name和参数的名称要一致
- 绑定机制
- @RequestParam: 定义参数名称,在请求参数的名称和函数方法名称不一样时使用
- @RequestBody:添加在函数参数上,将请求体的内容封装到参数中,形式为key=value&key=value的形式
- @PathVaribale:拥有绑定url中的占位符,例如:url中有/delete/{id},{id}就是占位符,将这个注解加到方法的参数上就可以获取url中占位符的值
- @RequestHeader:用于获取请求头信息,value属性:提供消息头名称,required:是否必须有此消息头
- @CookieValue:用于把指定Cookie名称的值传入控制器方法参数,value:指定cookie的名称,required:是否必须有此cookie,将这个注解加到方法的参数上就可以获取名称为value的cookie值
- @ModuleAttribute:此注解可以用于修饰方法和参数,出现在方法上,表示当前方法会在控制器的方法执行之前执行,出现在参数上,获取指定的数据给参数赋值
- @SessionAttribute:用于多次执行控制器方法间的参数共享,value:用于指定存入的属性名称,type:用于指定存入的输入的数据类型
响应数据和结果视图
响应之结果返回值:
- String
- Void
- ModelAndView
转发(forward)和重定向(redirect)
1
2
3
4
5
6
7
8
9
10
11"/testForwardOrRedirect") (
public String testForwardOrRedirect() {
System.out.println("testForwardOrRedirect执行了...");
//请求的转发
//return "forward:/WEB-INF/pages/success.jsp";//视图解析器根据返回的名称寻找相应的jsp页面进行跳转
//重定向
return "redirect:/index.jsp";
}发送ajax请求
1
2
3
4
5
6
7
8
9
10
11"/testAjax") (
public User testAjax(@RequestBody User user) {
System.out.println("testAjax执行了...");
//客户端发送ajax的请求,传的是字符串,后端把json字符串封装到user对象中
System.out.println(user);
//做响应,模拟查询数据库
user.setUsername("haha");
user.setAge(40);
//做响应
return user;
}解析json数据
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25<script>
//页面加载,绑定单击事件
$(function () {
$("#btn").click(function () {
//alert("hello,btn!")
//发送ajax请求
$.ajax({
//编写json格式,设置属性和值
url: "user/testAjax",
contentType: "application/json;charset=UTF-8",
data: '{"username":"hehe","password":"123","age":"30"}',
dateType: "json",
type: "post",
success:function (data) {
//data服务器端相应的json的数据,进行解析
alert(data);
alert(data.username)
alert(data.password);
alert(data.age);
}
})
});
});
</script>
异常处理
- 异常处理的思路:
- Controller调用service,service调用dao,异常都是向上抛出的,最终由DispatcherServlet找异常处理器进行异常的处理