zoukankan      html  css  js  c++  java
  • SpringMVC学习指南【笔记2】简介、校验器、配置

    基于模型-视图-控制器模式(MVC) 视图负责应用的展示;

    模型封装了应用的数据和业务逻辑;控制器负责接收用户输入、改变模型、调整视图的显示。

    控制器:springmvc和struct1使用servlet作为控制器,struct2使用filter作为控制器。

    视图:大部分使用JSP页面作为视图。

    模型:POJO(plain old java object),实践中会采用一个javabean来持有模型状态,并将业务逻辑方法哦一个action类中。一个javabean必须拥有一个无参的构造器,通过get/set方法来访问参数,同时支持持久化。

    每个http请求都发送给控制器,请求中的uri标志出对应的action,action代表了应用可以执行的一个操作。一个提供了action的java对象称为action对象。一个action类可以支持多个action。

    控制器会解析uri并调用相应的action,然后将模型对象放到视图可以访问的区域(以便服务端数据可以展示在浏览器上),最后控制器利用RequestDispatcher跳转到视图JSP页面,在JSP页面中,用表达式以及定制标签显示数据。

    实体类实现java.io.Serializable接口,实现serialVersionUID属性,其实例可以安全地将数据保存到HttpSession中。

    private static final long serialVersionUID = 748392348L;

    校验器

    在web应用执行action时,很重要的一个步骤就是进行输入校验。Java社区专门发布了JSR 303 Bean Validation以及JSR 349 Bean Validation1.1版本,将Java世界的输入校验进行标准化。

    现在的MVC框架通常同时支持编程式和申明式两种校验方法。

    在编程式中,需要通过编码进行用户输入校验,而在申明式中,则需要提供包含校验规则的XML文档或者属性文件。

    如果没有用Spring MVC ,那么需要编写一个Dispatcher servlet和控制类。其中Dispatcher servlet必须能够做到如下事情:

    1、根据URI调用相应的action;

    2、实例化正确的控制器类;

    3、根据请求参数值来构造表单bean;

    4、调用控制器对象的相应方法;

    5、转向到一个视图(JSP页面)。

    Spring MVC是一个包含了Dispatcher servlet的MVC框架。它调用控制器方法并转发到视图。所以使用Spring MVC不需要编写Dispatcher servlet,加速开发。

    1、Spring MVC中提供了一个Dispatcher Servlet,无需额外开发;

    2、Spring MVC中使用基于XML的配置文件,可以编辑,而无需重新编译应用程序;

    3、Spring MVC实例化控制器,并根据用户输入来构造bean;

    4、Spring MVC可以自动绑定用户输入,并正确地转换数据类型。例如,Spring MVC能自动解析字符串并设置float或者decimal类型的属性;

    5、可以校验用户输入,若校验不通过,则重定向回输入表单。(Spring MVC内置了常用的校验器)输入校验是可选的,支持编程方式以及声明;

    6、Spring MVC是Spring框架的一部分,可以利用Spring提供的其他能力;

    7、Spring MVC支持国际化和本地化,支持根据用户区域显示多国语言;

    8、Spring MVC支持多种视图技术,JSP技术、Velocity技术、FreeMarker技术。

    Spring MVC中自带了一个开箱即用的Dispatcher Servlet,该servlet的全名是org.springframework.web.servlet.DispatcherServlet。

    要使用这个servlet,需要把它配置在部署描述符(web.xml文件),应用servlet和servlet-mapping元素,如下:

    <servlet>
        <servlet-name>springmvc</servlet-name>
        <servlet-class>
            org.springframework.web.servlet.DispatcherServlet
        </servlet-class>
        <!-- load-on-startup存在,说明在应用程序启动时装载servlet并调用init方法;不存在的话,在该servlet的第一个请求时加载 -->
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>springmvc</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

    初始化时,会寻找WEB-INF文件下的servletName-servlet.xml文件,这里找的是springmvc-servlet.xml文件。当然也可以更改加载指定路径下的指定文件,用init-param这个标签。

    如:

    <servlet>
        <servlet-name>springmvc</servlet-name>
        <servlet-class>
            org.springframework.web.servlet.DispatcherServlet
        </servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>/WEB-INF/config/springmvc-config.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>

    基于注解的控制器可以同时支持多个请求处理动作,并且无需实现任何接口。

    Spring MVC中的视图解析器负责解析视图。可以通过在springmvc的配置文件中定义一个ViewResolver来配置视图解析器。

    <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/jsp/" />
        <property name="suffix" value=".jsp" />
    </bean>

    配置好前缀和后缀,这样视图解析器就会自动增加前缀和后缀。

  • 相关阅读:
    Py修行路 python基础 (二十五)线程与进程
    Py修行路 python基础 (二十一)logging日志模块 json序列化 正则表达式(re)
    Py修行路 python基础 (二十四)socket编程
    Py修行路 python基础 (二十三)模块与包
    Py修行路 python基础 (二十二)异常处理
    Py修行路 python基础 (二十)模块 time模块,random模块,hashlib模块,OS及sys模块
    Py修行路 python基础 (十九)面向对象进阶(下)
    Oracle数据库的下载和安装
    单体测试详解
    单体测试书的检查要点
  • 原文地址:https://www.cnblogs.com/xsl1995/p/10163816.html
Copyright © 2011-2022 走看看