Sping-MVC

来源:互联网 发布:中学生网络教学 编辑:程序博客网 时间:2024/04/24 03:21

Spring-mvc

1、什么是spring-mvc

基于spring的一个框架

2、什么是mvc------一个个设计模式

首先请求发送request请求到C(control 接收用户请求响应用户) 然后控制器到M模型(pojo、action、service、dao)层处理 处理结果完了返回控制器 控制器要经过视图渲染  最后返回终端(response)

3、spring-mvc怎么运行的

  1、浏览器向spring发出请求,请求交给前段控制器DispatcherServlet处理,

   2、处理器通过HandlerMapping找到相对应的Controller组件处理请求

  3、执行Controller组件约定方法处理请求,在约定方法调用模型组件完成业务处理。约定方法可以返回一个ModelAndView

对象,封装了处理结果数据和视图信息

  4、控制器接受ModelAndView之后,调用ViewResolver组件,定位View(JSP) 并传递信息,生成响应界面结果

spring-mvc的配置

1、前端控制器

2、配置HandderMapping、Controller、ViewResolover


3、Controller中返回一个ModelAndView

spring-mvc注解

1、@RequestMapping 可以用在方法和类上,(类上的可以不写)

  需要在配置文件中配置两个Bean、

2、@RequestParam-获取参数

      1、可以获取表单的参数,并且可以实现数据类型的自动的转换,但是在转化的过程中,可能出现数据转换异常
方法名(@RequestParam 数据类型 参数名, @RequestParam 数据类型 参数名)

      2、如果表单属性和参数名一样。不写注解也可以

当一个对象的属性和表单中的参数一致的时候,那么Controller组件
中的方法中,获取表单的参数值的时候,可以直接由对象获取到,
也就是说,在方法中将这个对象传入。

向页面传值

1.HttpServletRequest 和Session
setAttribute();
2.ModelAndView(String name,Map)
Controller 中的方法,返回值是ModelAndView。

mv.addObject(String name, Object obj)
实现数据绑定
3.ModelMap
addAttribute(String name,Object obj);
实现数据绑定,底层也是通过HttpServletRequest对象传递数据到
JSP页面的。
4.注解的数据绑定
@ModeAttribute("")作用在方法的参数上或者是bean的属性上

重定向视图

Spring MVC默认采用转发方式定位视图,如果需要重定向方式可采用下面几种方法

1、使用RedirectView   Controller方法的返回值必须是modelandview类型的

RedirectiView view new RedirectView("请求action路径/jsp路径");

ModelAndView mv=new ModelAndView(view);


2、使用redirect:前缀   controller方法的返回值必须是String类型的

redirect:路径      ---请求路径/jsp路径


spring-mvc中乱码解决方式


注意:表单提交方式为post、过滤器的编码格式要和页面的编码格式保持一致

使用拦截器实现登录检查

1、拦截器必须实现HandlerInterceptor接口,这个接口有以下三个方法
preHandle(..)
  处理器执行前被调用。方法返回true表示会继续调用其他拦截器和处理器;返回false表示中断流程,不会执行后续拦截器和处理容器
postHandle(..)
     处理器执行后、视图处理前调用。此时可以通过modelAndView对象对模型数据进行处理或对视图进行处理
afterCompletion(..)
    整个请求处理完毕后调用,如性能监控中我们可以在此记录结束时间并输出消耗时间,还可以进行一些资源清理。只有preHandle返回true时才会执行afterCompletion方法
在容器配置文件中配置
<mvc:interceptors>
    <mvc:interceptor>
        <mvc:mapping path="/day04/*"/>
        <mvc:exclude-mapping path="/login/*"/>
        <bean class="com.demo.interceptor.SomeInterceptor"/>
    </mvc:interceptor>
</mvc:interceptors>




1 0
原创粉丝点击