SpringMVC框架学习笔记
2017-04-23 23:46
330 查看
1、SpringMVC的五大组件:
(1)DispatcherServlet(前端控制器)
(2)HandlerMapping:处理映射,处理请求路径和处理器的映射关系。
(3)Controller(处理器):是MVC中的Model,用来写业务逻辑。
(4)ModelAndView:包含最终要展现的数据及视图名(一个字符串)
(5)ViewResolver(视图解析器)
<1>所有请求发给DispatcherServlet;
<2>DispatcherServlet依据HandlerMapping的映射,调用相应的Controller来处理;
<3>Controller将处理结果封装成ModelAndView对象(需要由ViewResolver解析成相应的视图对象,比如一个JSP),返回给DispatcherServlet;
<4>DispatcherServlet依据ViewResolver,得知以什么视图对象展现给用户;
<5>DispatcherServlet调用相应的视图对象(如JSP)来响应用户。
五大组件中,Controller是M,JSP是V,DispatcherServlet是C。
展现视图的技术:FreeMarker、Volecity、JSP、Android、IOS。
SpringMVC五大组件之间的调用关系图如下:
2、编程步骤:
(1)Maven导包或手动导包(springmvc相关的jar文件);
(2)添加spring的配置文件(比如spring-mvc.xml);
(3)配置前端控制器(web.xml中,因为DispatcherServlet是一个Servlet);
(4)写Controller(处理器);
(5)写JSP;
(6)在Spring配置文件中,配置HandlerMapping和ViewResolver。
3、基于注解的SpringMVC开发:
(1)Maven导包或手动导包(SpringMVC相关的jar文件);
(2)添加Spring的配置文件(比如spring-mvc.xml);
(3)配置前端控制器(web.xml中,因为DispatcherServlet是一个Servlet);
(4)写Controller(处理器);
注:<1>不用实现Controller接口;
<2>可以添加多个处理方法,也就是说,一个Controller可以处理多个请求;
<3>处理方法的名称不做要求(不必是HandleRequest),返回值可以是String或者ModelAndView(如果返回值没有处理结果,只是返回一个视图名的话,可以返回String);
<4>在类名前添加@Controller注解;
<5>在类名前或者方法前添加@RequestMapping注解(告诉前端控制器,请求地址与处理方法的对应关系)。
(5)写JSP;
(6)在Spring配置文件中,配置ViewResolver。
4、SpringMVC中读取请求参数值。
方式一:使用request对象作为方法的参数。
方式二:使用请求参数名作为方法参数名。如果不一致,可以使用@RequestParam注解。
方法三:使用JavaBean。其中,属性名要与请求参数名一致,且这些属性要有对应的get/set方法。
5、SpringMVC向页面传值。
方式一:使用request对象绑定数据。默认情况下,前端控制器会使用转发机制来跳转页面。
方式二:使用ModelMap对象作为方法的参数。
方式三:使用session对象绑定数据。
方式四:使用ModelAndView对象作为方法的返回值。
6、重定向:
情形一:如果方法的返回值是String,则返回值写为:return "redirect : toIndex.do"。
情形二:如果方法的返回值是ModelAndView,
RedirectView rv = new RedirectView("toIndex.do");
ModelAndView mav = new ModelAndView(rv);
7、系统分层
(1)将系统划分成表示层(数据展现和操作界面),业务层(业务逻辑处理)和持久层(数据库访问)。
(2)上一层通过接口调用下一层提供的服务(比如表示层通过接口调用业务层,业务层通过接口调用持久层)。下一层发生任何改变,不影响上一层,方便代码的维护。
将MVC中的M划分为Service和DAO层,V和C合并为表示层, 即JSP页面和Controller(二级控制器)。
8、解决表单提交的乱码问题
只需要配置一个过滤器(CharacterEncodingFilter,由spring提供)。
注意:<1>表单提交方式必须为"post";<2>过滤器的编码设置与客户端一致。
9、拦截器
前端控制器收到请求之后,会先调用拦截器来处理,然后再调用处理器(Controller)来处理。
注意:过滤器属于Servlet规范当中定义的特殊的组件,而拦截器属于spring容器管理的特殊的组件。
如何写一个拦截器?
step1. 写一个java类,实现HandlerInterceptor接口。
step2. 在接口方法当中,实现拦截处理逻辑,比如进行session验证。
preHandle方法:前端控制器收到请求之后,会先调用拦截器的preHandle方法,如果该方法的返回值为true,表示继续向后调用(调用Controller);否则,请求处理完毕。
postHandle方法:Controller已经执行完毕,正准备将ModelAndView对象返回给前端控制器之前,执行postHandle方法。所以,可以在该方法里面,对ModelAndView对象进行修改。
afterCompletion方法:整个请求处理完毕执行afterCompletion方法。
10、异常处理
让Spring框架帮我们来处理异常。
方式一:配置简单异常处理器
step1. 在Spring配置文件中,配置简单异常处理器;
step2. 添加异常处理页面。
方式二:使用@ExceptionHandler注解
step1. 在Controller类当中,添加一个异常处理方法,该方法要使用@ExceptionHandler来修饰;
step2. 在异常处理方法里面,依据异常类型,分别进行不同的处理;
step3. 添加相应的异常处理页面。
(1)DispatcherServlet(前端控制器)
(2)HandlerMapping:处理映射,处理请求路径和处理器的映射关系。
(3)Controller(处理器):是MVC中的Model,用来写业务逻辑。
(4)ModelAndView:包含最终要展现的数据及视图名(一个字符串)
(5)ViewResolver(视图解析器)
<1>所有请求发给DispatcherServlet;
<2>DispatcherServlet依据HandlerMapping的映射,调用相应的Controller来处理;
<3>Controller将处理结果封装成ModelAndView对象(需要由ViewResolver解析成相应的视图对象,比如一个JSP),返回给DispatcherServlet;
<4>DispatcherServlet依据ViewResolver,得知以什么视图对象展现给用户;
<5>DispatcherServlet调用相应的视图对象(如JSP)来响应用户。
五大组件中,Controller是M,JSP是V,DispatcherServlet是C。
展现视图的技术:FreeMarker、Volecity、JSP、Android、IOS。
SpringMVC五大组件之间的调用关系图如下:
2、编程步骤:
(1)Maven导包或手动导包(springmvc相关的jar文件);
(2)添加spring的配置文件(比如spring-mvc.xml);
(3)配置前端控制器(web.xml中,因为DispatcherServlet是一个Servlet);
(4)写Controller(处理器);
(5)写JSP;
(6)在Spring配置文件中,配置HandlerMapping和ViewResolver。
3、基于注解的SpringMVC开发:
(1)Maven导包或手动导包(SpringMVC相关的jar文件);
(2)添加Spring的配置文件(比如spring-mvc.xml);
(3)配置前端控制器(web.xml中,因为DispatcherServlet是一个Servlet);
(4)写Controller(处理器);
注:<1>不用实现Controller接口;
<2>可以添加多个处理方法,也就是说,一个Controller可以处理多个请求;
<3>处理方法的名称不做要求(不必是HandleRequest),返回值可以是String或者ModelAndView(如果返回值没有处理结果,只是返回一个视图名的话,可以返回String);
<4>在类名前添加@Controller注解;
<5>在类名前或者方法前添加@RequestMapping注解(告诉前端控制器,请求地址与处理方法的对应关系)。
(5)写JSP;
(6)在Spring配置文件中,配置ViewResolver。
4、SpringMVC中读取请求参数值。
方式一:使用request对象作为方法的参数。
方式二:使用请求参数名作为方法参数名。如果不一致,可以使用@RequestParam注解。
方法三:使用JavaBean。其中,属性名要与请求参数名一致,且这些属性要有对应的get/set方法。
5、SpringMVC向页面传值。
方式一:使用request对象绑定数据。默认情况下,前端控制器会使用转发机制来跳转页面。
方式二:使用ModelMap对象作为方法的参数。
方式三:使用session对象绑定数据。
方式四:使用ModelAndView对象作为方法的返回值。
6、重定向:
情形一:如果方法的返回值是String,则返回值写为:return "redirect : toIndex.do"。
情形二:如果方法的返回值是ModelAndView,
RedirectView rv = new RedirectView("toIndex.do");
ModelAndView mav = new ModelAndView(rv);
7、系统分层
(1)将系统划分成表示层(数据展现和操作界面),业务层(业务逻辑处理)和持久层(数据库访问)。
(2)上一层通过接口调用下一层提供的服务(比如表示层通过接口调用业务层,业务层通过接口调用持久层)。下一层发生任何改变,不影响上一层,方便代码的维护。
将MVC中的M划分为Service和DAO层,V和C合并为表示层, 即JSP页面和Controller(二级控制器)。
8、解决表单提交的乱码问题
只需要配置一个过滤器(CharacterEncodingFilter,由spring提供)。
注意:<1>表单提交方式必须为"post";<2>过滤器的编码设置与客户端一致。
9、拦截器
前端控制器收到请求之后,会先调用拦截器来处理,然后再调用处理器(Controller)来处理。
注意:过滤器属于Servlet规范当中定义的特殊的组件,而拦截器属于spring容器管理的特殊的组件。
如何写一个拦截器?
step1. 写一个java类,实现HandlerInterceptor接口。
step2. 在接口方法当中,实现拦截处理逻辑,比如进行session验证。
preHandle方法:前端控制器收到请求之后,会先调用拦截器的preHandle方法,如果该方法的返回值为true,表示继续向后调用(调用Controller);否则,请求处理完毕。
postHandle方法:Controller已经执行完毕,正准备将ModelAndView对象返回给前端控制器之前,执行postHandle方法。所以,可以在该方法里面,对ModelAndView对象进行修改。
afterCompletion方法:整个请求处理完毕执行afterCompletion方法。
10、异常处理
让Spring框架帮我们来处理异常。
方式一:配置简单异常处理器
step1. 在Spring配置文件中,配置简单异常处理器;
step2. 添加异常处理页面。
方式二:使用@ExceptionHandler注解
step1. 在Controller类当中,添加一个异常处理方法,该方法要使用@ExceptionHandler来修饰;
step2. 在异常处理方法里面,依据异常类型,分别进行不同的处理;
step3. 添加相应的异常处理页面。
相关文章推荐
- springmvc学习笔记一框架的理解
- springMVC框架学习笔记
- SpringMVC学习笔记(2) 框架配置+HelloWorld(注解版)
- springmvc学习笔记(1)-框架原理和入门配置
- 学习SSM框架笔记五:利用五大组件采取配置文件和SpringMVC模式写HelloWorld
- SpringMVC学习笔记(3) 框架配置+HelloWorld(非注解版)
- springMVC学习笔记(一) ---- 搭建框架
- SpringMVC框架学习笔记(5)——数据处理
- springMVC学习笔记---day02 springMVC+spring+mybatis整合开发框架搭建
- SpringMVC框架学习笔记
- SpringMVC框架学习笔记(1)——HelloWorld
- springMVC+Mybatis 学习笔记-【1】Mybatis的框架原理
- SpringMVC框架学习笔记(6)——拦截器
- # springmvc学习笔记(1)-框架原理和入门配置
- springmvc学习笔记(1)-框架原理和入门配置
- SpringMVC框架学习笔记(3)——controller配置汇总
- SpringMVC框架学习笔记——各种异常、报错解决
- dubbo学习笔记3 SpringMvc框架web形式 dubbo服务搭建 消费者
- SpringMVC框架学习笔记(4)——结果跳转方式
- Spring学习笔记-springMVC校验框架