服务端分层:
表现层 业务层 持久层
SpringMvc/Struts Spring Mybatis/Hibernate
SpringMvc采用MVC的设计模式:
model 实体 JavaBean
view 视图 Jsp
controller 控制器 Servlet
Struts2的核心是一个过滤器,而SpringMvc的核心是一个Servlet
----------------------------------------------------------------
(乱总结:spring mvc的运行流程,spring是基于组建来运行的,其中的核心组件是
DispatcherServlet,它作为调度中心来协调各个组件的工作。spring mvc包括前端控制器
处理器映射器、处理器适配器、Controller、视图解析器)
执行流程:前端发来请求到前端控制器,将请求递交到处理器映射器,返回执行链,递交到
处理器适配器,处理器适配器去执行Handler即Controller,Controller返回ModelAndView
然后由视图解析器解析返回视图,数据填充返回响应。
SpringMvc的注解和配置:
1.
在springMvc的各个组件中,处理器映射器、处理器适配器
视图解析器称为SpringMvc的三大组件。使用这个配置标签后会自动加载这些组件
2.@RequestMapping(path = "/hello")用于建立请求url和处理请求方法之间的对应关系
属性:
3.请求参数的绑定:
a.有一些机制,如果方法的参数名和请求数据名字相同会自动绑定
https://www.kali.com/sss?username=we&password=231
public String query(String username,String password){}
b.对请求的封装
public String query(Account account){}
如果account中包含引用类型要指定account中的属性.属性
c.解决post请求中文乱码问题,使用spring提过的过滤器CharacterEncodingFilter
拦截
//alert("hello!")
$.ajax({
url:"user/testAjax",
contentType:"application/json;charset=UTF-8",
data:'{"name":"haha","age":"15","money":"400"}',
dataType:"json",
type:"post",
success:function (data) {
//data是服务端相应的数据,然后解析
console.log(data.name + " " + data.age + " " + data.money);
}
})
})
});
总结:发送请求到服务端,可以通过返回类型为string的方法返回相应的页面,如果需要返回值
可以绑定在Model对象中,在请求域中获取;也可通过request转发或者response重定向一个返回
页面。对于request和response的使用还可以通过返回一个特定格式的字符串如:
return "forward:/WEB-INF/pages/success.jsp"
return "redirect:/index.jsp"
这两者是不能使用视图解析器的,需要指明路径。
可以使用ModelAndView作为返回值,在model中设置视图和模型。
可以使用ajax发送异步请求,映射方法参数中使用@RequestBody接收,方法返回值为返回类型
在前面加@ResponseBody,对于ajax发送的json格式数据的解析需要jackson相应的jar包。配置
这两个注解后便会自动封装数据到方法参数中,返回也会自动封装为json对象返回。
@RequestMapping(path = "/testAjax")
public @ResponseBody User testAjax(@RequestBody User user){
System.out.println("ajax执行了");
//导入相关jar包,已经将数据封装到对象中
System.out.println(user);
user.setName("we");
System.out.println(user);
return user;
}