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>

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

原文地址:https://www.cnblogs.com/xsl1995/p/10163816.html