一、SpringMVC的工作原理
- 用户向服务器发送请求,请求被SpringMVC的前端控制器DispatchServlet捕获;
- DispatchServlet 对请求的 URL 进行解析,得到请求资源标识符(URL),然后根据该URL调用HandlerMapping 将请求映射到处理器HandleExcutionChain.
- DispatchServlet 根据获得 Handler 选择一个合适的 HandlerAdapter 适配器处理。
- Handler 对数据处理完成后将返回一个ModelAndView()对象给DispatchServlet;
- Handler 返回的ModelAndView() 只是一个逻辑视图,并不是一个正式的视图,DispatchServlet 通过ViewResolver 视图解析器将逻辑视图化为真正的视图View;
- DispatchServlet 通过 model 解析出ModelAndView() 中的参数进行解析最终展现出完整的view并返回给客户端.
二、SpringMVC的常用注解
- @RequestMapping :用于请求URL映射。
- @RequestBody : 实现接收http请求的json数据,将json数据转为java对象。
- @ResponseBody : 实现将Controller 方法的返回对象转化为json响应给客户。
三、如何开启注解处理器和适配器
springmvc.xml中通过开启<mvc:annotation-driven>
来实现注解处理器和适配器的开启。
四、如何解决 get 和 post 乱码问题
- 解决 post 请求乱码:我们可以在web.xml中配置一个CharacterEncodingFilter过滤器。设置为utf-8。
- 解决 get 请求乱码:
1.修改tomcat配置文件添加编码和工程编码一致。
2.对参数的重新编码,例如:
String userName = new String(Request.getParameter("userName").getBytes("ISO8859-1"),"utf-8" );