您的位置:首页 > 编程语言 > Java开发

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. 添加相应的异常处理页面。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: