• SpringMVC学习笔记


    1、严格实现MVC设计思想的框架,严格分层,减少耦合;

    2、组件(红色必需)
    2.1 DispatcherServlet 前端控制器
    2.2 Controller 业务控制器
    2.3 Handler Mapping 请求匹配器:请求转发到具体Controller
    2.4 ViewResolver:控制Controller返回响应后要跳转到不同视图展示的组件
    View:针对不同的视图技术(jsp、pdf、excel...)采取不同的处理的组件
    每一个ViewResolver必须指定一个View
    2.5 Interceptors:拦截器,面向切面技术
    2.6 LocalResolver:本地化处理组件
    2.7 Validate:校验组件

    3、Controller实现方式(原先3之前配置方式 已经淘汰 推荐使用注解)
    3.1 实现Controller接口或者继承AbstractController抽象类(传入request和response对象)
    3.2 ModelAndView
    3.2 用于直接跳转页面的ParameterizableViewController、UrlFilenameViewController(url名和视图名一致)
    3.3 自动封装表单参数的控制器(常用):CommandController重写handle方法,参数通过属性编辑器将form参数注入实体类,有些类型如日期需要提供重写的属性编辑器才能正确转换;FormController重写onsubmit方法;
    spring3之后不推荐使用 使用注解;
    3.4 MultiActionController 红色参数必需
    方法:public (ModelAndView|Map|String|void) actionname(HttpServletRequest request,HttpServletResponse response,HttpSession session,Object anyobj);

    注意:controller中方法的的参数是按需声明,spring会帮我们自动注入,像HttpServletRequest、HttpServletResponse、HttpSession、ModelView等常见的很容易就可以注入,如果声明的是页面的参数,spring也会安例注入,但是存在数据类型转换异常的风险;

    比如:一般页面的参数传到服务器端都是字符串,如果声明的是整形、浮点型、日期类型,必然要进行数据类型强转,所以也必然存在产生转换异常的风险,需要添加属性编辑器来降低这种转换风险。

    4、handlerMapping
    4.1 默认的ControllerClassNameHandlerMapping
    4.2 常用的SimpleUrlhandlerMapping
    4.3 BeanNameUrlHandlerMapping
    4.4 基于注解Controller时使用的DefaultAnnotationHandlerMapping 推荐使用

    5、基于注解的SpringMVC配置
    5.1 使用注解 那么spring-mvc.xml需要增加context和mvc两个命名空间
    5.2 注解先配置扫描,然后添加配置跳转处理InternalResourceViewResolver,然后再添加注解;
    5.3 restful风格请求:先定义URl请求模板,然后通过@Pathvariable指定处理方法接收url中传递过来的参数的变量;
    对于特殊格式的参数也需要属性编辑器转换;数据绑定:可以直接使用实体对象作为入参,存在数据格式转换异常的可能;
    5.4 可以通过@method来处理get post等不同请求方式的请求
    其他注解:@CookieValue @RequestHeader
    5.5 如果返回值为void 同时方法中不使用pringwriter 那么会自动匹配requestmapping中配置的同名视图

    6、转发和重定向
    return "forward:index.jsp"; //转发
    return "forward:user.do?method=reg5"; //转发
    return "redirect:user.do?method=reg5"; //重定向
    return "redirect:http://www.baidu.com"; //重定向


    7、XmlViewResovler:
    View:JstlView、ExcelView以及自定义View(jsperReport|Pdf|Excel)
    视图链

    8、拦截器链(一般所有的MVC都会实现拦截器):
    实现HandlerInterceptor接口,重写三个方法:prehandler:controller之前执行,posthandler:controller之后视图生成之前,
    afterCompletion释放资源

    9、视图国际化:
    9.1 页面引入spring标签:<% taglib uri="http://www.springframework.org/tags" prefix="spring" %>,使用标签:<spring:message code="xxxkey" /> code对应资源文件(*.properties)的Key值;
    9.2 创建并编写资源文件:mess.properties,mess_zh_CN.properties,mess_en_US.properties
    9.3 配置支持:<bean:id="messageSource" class="org.springframework.context.support.ResourceBunldleMessageSource">
    <property name="basename" value="mess"/>
    </bean>
    注意id只能叫这个messageSource。


    10、注入验证:JSR303 validate bean
    @Valid:验证: 对于实体对象jdk提供验证接口 一般其他框架像hibernate提供验证实现

    补充:SpringMVC中的 Controller是单例的 如何变成多例的呢?在Controller上加注解@Scope("prototype")

  • 相关阅读:
    iDirect IQ200 Evolution Option Config
    直播卫星接收设备参数
    QCA9531方案双通道嵌入式无线AP模块应用选型参考
    FanControl 机箱风扇控制软件
    硬盘基本知识(磁头、磁道、扇区、柱面)
    Registry keys for configuring Automatic Updates & WSUS
    CentOS6.5下简单的MySQL数据库操作
    临时搞两天VC,在VC里如何获取当前程序的名字和路径以及如何分割字符串
    COBOL中USAGE的用法
    sqlplus 帮助无法显示问题的解决
  • 原文地址:https://www.cnblogs.com/cac2020/p/5261951.html
Copyright © 2020-2023  润新知