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>

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

  • 相关阅读:
    Asp.net弹出浏览器客户端确认对话框代码 Carlwave
    VS 2005 与SQL Server 2005整合优势在哪里?(from csdn.net) Carlwave
    如何让搜索引擎收录我的站点 Carlwave
    超强扩展性的DNNDotNetNuke模块功能分类列表(from 中国DNN) Carlwave
    DotNetNuke命名空间概述 Carlwave
    Most Popular Questions and Answers on ASP.NET Whidbey(from asp.net forums,write by ASP.NET Team) Carlwave
    火箭官方宣告麦蒂缺阵五周 季后赛前景蒙上阴影 Carlwave
    asp.net有效使用缓存(转) Carlwave
    《Business Rules Engine Overview》《业务规则引擎概述》write by Mark Kamoski Carlwave
    中国详细省市县自治区名称列表(含access数据库和sql2000备份数据库) Carlwave
  • 原文地址:https://www.cnblogs.com/xsl1995/p/10163816.html
Copyright © 2011-2022 走看看