0 配置 DispatcherServlet 是 spring mvc的核心,常规配置方法可以查看之前博客。springMVC简单例子

在此使用servlet 3 规范和 spring3.1 功能增强。

两个应用上下文,DispatcherServlet 和 ContextLoaderListener

DispatcherServlet 加载包含web组件的bean,如控制器、视图解析器以及处理器映射。

ContextLoaderListener 加载应用中其他的bean,通常是驱动应用后端的中间层和数据层组件。

public class ContactWebAppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
protected Class<?>[] getRootConfigClasses() {
return new Class[]{ RootConfig.class};
} protected Class<?>[] getServletConfigClasses() {
return new Class[]{ WebConfig.class};
} protected String[] getServletMappings() {
return new String[]{"*.action"};
}
}

DispatcherServlet 启动的时候汇创建 spring 应用上下文,并加载配置文件或配置类中声明的bean。

getServletConfigClasses() 方法返回带有@Configuration 注释的类,用来定义 DispatcherServlet 的配置类。

getRootConfigClasses() 方法返回带有@Configuration 注释的类,用来配置 ContextLoaderListener  创建的应用上下文bean。

下面是 WebConfig 的配置类,

@Configuration
@EnableWebMvc
@ComponentScan(basePackages = {"com.huitong.controller",
"com.huitong.entity"})
public class WebConfig extends WebMvcConfigurerAdapter{ @Bean
public ViewResolver viewResolver() {
InternalResourceViewResolver internalResourceViewResolver = new InternalResourceViewResolver();
internalResourceViewResolver.setPrefix("/WEB-INF/jsp/");
internalResourceViewResolver.setSuffix(".jsp");
return internalResourceViewResolver;
} /**
* 将静态资源的请求转发到 Servlet 容器中默认的 Servlet 上,
* 而不是 DispatcherServlet 本身处理此类请求
* @param configurer
*/
@Override
public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
configurer.enable();
}
}

1)@EnableWebMvc 表示启用Spring MVC ,@ComponentScan 开启组件扫描。

2)viewResolver 方法添加了 InternalResourceViewResolver 视图解析器。

3)configureDefaultServletHandling 方法主要是将静态资源的请求转发到 Servlet 容器中默认的 Servlet 上。

下面是 RootConfig  的配置,因为现在还不需要其他持久层的框架,因此暂时不需要很多配置。

@Configuration
@ComponentScan(basePackages = {"com.huitong.dao"},
excludeFilters = {
@ComponentScan.Filter(type = FilterType.ANNOTATION, value = EnableWebMvc.class)
})
public class RootConfig {
}

至此 Spring MVC 框架搭建好了,可以进行简单测试。

1 web应用程序重要特性有状态管理、工作流、验证。HTTP协议是无状态的。

2 从客户端传数据到服务端的方式

1)查询参数

2)表单参数

3)路径变量

3 spring mvc获取参数的方式

3.1 处理查询参数一般使用以下方法

@RequestParam用于将请求参数区数据映射到功能处理方法的参数上。

@RequestParam有三个属性,分别如下:

(1) value 请求参数的参数名,作为参数映射名称;

(2) required 该参数是否必填,默认为true(必填),当设置成必填时,如果没有传入参数,报错;

(3) defaultValue 设置请求参数的默认值;注意查询参数是String类型的。

3.2 处理路径参数更适合于面向资源的请求,mvc提供在@RequestMapping路径中添加占位符。占位符的名称在{}中,占位符部分可以使任意值。

需要和@PathVariable联合使用。如果@PathVariable没有value属性的话,会假设占位符名称和方法的参数名相同。

3.3 通过控制器方法参数接受用户post过来的数据。

3.4 表单校验,注解方式。

从 Spring 3.0 开始,Springmvc 中提供了对java 校验 API 的支持。更详细的信息可以参看 使用 hibernate validator 进行表单验证

注解 描述
@AssertFalse 所注解的元素必须是boolean,并且是false
@AssertTrue 所注解的元素必须是boolean,并且是true
@DecimalMax 必须是数字,并且要小于或等于给定的值
@DecimalMin 必须是数字,并且要大于或等于给定的值
@Digits 必须是数字,必须有指定的位数
@Future 必须是将来的日期
@NotNull 不能为null
@Pattern 必须匹配给定的正则表达式
@Size 长度需要符合给定的范围
   
   
   
   
   
@Null 验证对象是否为 null
@NotNull 验证对象是否不为 null
@AssertTrue 验证 Boolean 对象是否为 true
@AssertTrue 验证 Boolean 对象是否为 false
@Max(value) 验证 Number 和 String 对象是否小于等于指定值
@Min(value) 验证 Number 和 String 对象是否大于等于指定值
@DecimalMax(value) 验证注解的元素值小于等于 @DecimalMax 指定的 value 值
@DecimalMin(value) 验证注解的元素值大于等于 @DecimalMin 指定的 value 值
@Digits(integer,fraction) 验证字符串是否符合指定格式的数字,integer 指定整数精度,fraction 指定小数精度
@Size(min,max) 验证对象长度是否在给定的范围内
@Past 验证 Date 和 Calendar 对象是否在当前时间之前
@Future 验证 Date 和 Calendar 对象是否在当前时间之后
@Pattern 验证 String 对象是否符合正则表达式的规则
@NotBlank 检查字符串是不是 Null,被 Trim 的长度是否大于0,只对字符串,且会去掉前后空格
@URL 验证是否是合法的 url
@Email 验证是否是合法的邮箱
@CreditCardNumber 验证是否是合法的信用卡号
@Length(min,max) 验证字符串的长度必须在指定范围内
@NotEmpty 检查元素是否为 Null 或 Empty
@Range(min,max,message) 验证属性值必须在合适的范围内

用于对象属性校验。

此时,注册方法校验使用如下方法

@RequestMapping(value="/register")
public String processRegister(@Valid Person person, Errors error){
if(error.hasErrors()){
return "registerform";
}
... }

@Valid注解会告知spring,需要确保这个对象满足校验规则。

注意:如果有校验错误的话,可以通过Errors对象进行访问。Errors对象参数要紧跟在@Valid注解后面。

spring in action 5.1 小结 spring mvc起步的更多相关文章

  1. spring in action 7.2 小结

    1 对于二进制文件上传功能的实现.在spring中使用multipart来处理,处理方式有两种. CommonsMultipartResolver:使用Jakarta Commons FileUplo ...

  2. spring in action 7.1 小结

    0 AbstractAnnotationConfigDispatcherServletInitializer剖析,在Servlet 3.0环境中,容器会在类路径中查找实现ServletContaine ...

  3. spring in action第一章小结1

    1 spring基本理念是简化java开发. 使用以下4个策略简化java开发 1) 基于POJO的轻量级和最小侵入性编程 2)通过使用DI和AOP实现松耦合 3)基于切面和惯例进行声明式编程 4)通 ...

  4. spring in action 8.1 使用Spring web flow

    一.说明 Spring Web Flow是spring MVC的扩展,它支持基于流程的应用程序,他将流程的定义和实现流程行为的类和视图分离开来. 1.1 spring中配置web flow,目前需要在 ...

  5. spring in action 学习笔记十四:用纯注解的方式实现spring mvc

    在讲用纯注解的方式实现springmvc之前先介绍一个类:AbstractAnnotationDispatcherServletInitializer.这个类的作用是:任何一个类继承AbstractA ...

  6. Spring框架学习(7)spring mvc入门

    内容源自:spring mvc入门 一.spring mvc和spring的关系 spring mvc是spring框架提供的七层体系架构中的一个层,是spring框架的一部分,是spring用于处理 ...

  7. spring in action学习笔记十五:配置DispatcherServlet和ContextLoaderListener的几种方式。

    在spring in action中论述了:DispatcherServlet和ContextLoaderListener的关系,简言之就是DispatcherServlet是用于加载web层的组件的 ...

  8. SSM(spring mvc+spring+mybatis)学习路径——2-1、spring MVC入门

    目录 2-1 Spring MVC起步 一.回顾Servlet 二.SpringMVC简介 三.搭建SpringMVC第一个案例 四.简单流程及配置 五.使用注解开发Controller 六.参数绑定 ...

  9. SSM(spring mvc+spring+mybatis)学习路径——1-1、spring入门篇

    目录 1-1 Spring入门篇 专题一.IOC 接口及面向接口编程 什么是IOC Spring的Bean配置 Bean的初始化 Spring的常用注入方式 专题二.Bean Bean配置项 Bean ...

随机推荐

  1. 我的sourceinsight的配置

    下面是我的sourceinsight的配置,点击下面的链接,下载*.em文件,将他们添加到Base工程,设置相应的快捷键即可,或者导入下载的配置文件. http://pan.baidu.com/s/1 ...

  2. iOS8 NotificationCenter Extension 简介

    在最新的WWDC14上面,苹果发布了iOS8的一些新特性,而其中最让程序员兴奋的特性莫过于Extension,或者称之为Widget. 下面就来尝鲜试验一把. 一.Extension简介 首先,苹果只 ...

  3. android——根据MVC框架设计的结构

  4. Jolokia

    Jolokia 是一个用来访问远程 JMX MBeans 的崭新方法,与 JSR-160 连接器不同的是,它使用基于 HTTP 的 JSON 格式作为通讯协议,提供 JMX 批量操作等.需要第三方ja ...

  5. C 语言高效编程的几招——A few action of efficient C language programming

    编写高效简洁的C 语言代码,是许多软件工程师追求的目标.本文就工作中的一些体会和经验做相关的阐述,不对的地方请各位指教. 第1 招:以空间换时间 计算机程序中最大的矛盾是空间和时间的矛盾,那么,从这个 ...

  6. C# 操作Excel大全

    //引用Microsoft.Office.Interop.Excel.dll文件 //添加using using Microsoft.Office.Interop.Excel; using Excel ...

  7. 【转】Ubuntu 18.04安装小记

    我的电脑是神舟z7 kp7s1,显卡1060,尝试了Ubuntu的16.04,安装完进入界面总是卡死了,后面换18.04依然无解,和版本无关,而是因为英伟达的显卡问题. 参考了如下这篇文章:Ubunt ...

  8. .net平台推送ios消息

    1,ios应用程序中允许向客户推送消息 2,需要有苹果的证书以及密码(怎么获取,网上搜一下,需要交费的) 3,iphone手机一部,安装了该ios应用程序 4,.net 项目中引用PushSharp. ...

  9. 详解REMOTE_ADDR,HTTP_CLIENT_IP,HTTP_X_FORWARDED_FOR

    转载自:http://www.cnblogs.com/lmule/archive/2010/10/15/1852020.html 看ecshop的lib_base.php的时候里面获取客户端真实ip的 ...

  10. 用curl抓取网站数据,仿造IP、防屏蔽终极强悍解决方式

    最近在做一些抓取其它网站数据的工作,当然别人不会乖乖免费给你抓数据的,有各种防抓取的方法.不过道高一尺,魔高一丈,通过研究都是有漏洞可以钻的.下面的例子都是用PHP写的,不会用PHP来curl的孩纸先 ...