SpringMVC的模型-视图-控制器(MVC)框架是围绕一个DispatcherServlet来设计的,这个Servlet会把请求分发给各个处理器进行处理,由DispatcherServlet来统一调度各种处理器

要使用springMVC主要分为三个步骤:

1.web.xml中配置DispatcherServlet

2.编写Handler类实现Controller接口(使用注解可以不用实现Controller接口),这个就相当于struts2中的action

3.配置映射请求路径

spring-mvc.xml:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-4.3.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd"> <!-- 开启spring注解,开启扫描自动创建对象 -->
<context:annotation-config/>
<context:component-scan base-package="ni.jun.yang.controller"/> <!-- 开启验证注解 -->
<mvc:annotation-driven validator="validator"></mvc:annotation-driven> <!-- 配置验证资源文件 -->
<bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean">
<property name="providerClass" value="org.hibernate.validator.HibernateValidator"></property>
<property name="validationMessageSource" ref="messageSource" />
</bean>
<bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
<property name="basenames">
<list>
<value>/WEB-INF/Validation</value>
</list>
</property>
</bean> </beans>

配置DispatcherServlet:

<servlet>
<servlet-name>springMVC</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param>
<param-name>contextConfigLocation</param-name>
<!-- 加载springMVC的配置文件 -->
<param-value>classpath:spring_mvc.xml</param-value>
</init-param> <load-on-startup>1</load-on-startup>
</servlet> <servlet-mapping>
<servlet-name>springMVC</servlet-name>
<url-pattern>*.action</url-pattern>
</servlet-mapping>

编写Handler:(使用注解设置映射请求路径,如果不使用注解,那么一个请求需要创建一个Handler类,使用注解只需要给类里面的方法添加相应的映射请求路径注解就可以实现一个请求的处理了@RequestMapping("/addUser"),访问http://xxx/addUser.action就可以进入该方法,action是web.xml配置的

<url-pattern>*.action</url-pattern> 的后缀

package ni.jun.yang.controller;

import java.util.ArrayList;
import java.util.List; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import javax.validation.Valid; import org.springframework.stereotype.Controller;
import org.springframework.validation.Errors;
import org.springframework.validation.ObjectError;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.SessionAttributes;
import org.springframework.web.servlet.ModelAndView; import ni.jun.yang.bean.User;
@Controller
//@SessionAttributes({"user"})
public class MyHandler { @RequestMapping("/addUser")
public ModelAndView add (@Valid User user,Errors errors) {
ModelAndView modelAndView = new ModelAndView(); if(!errors.getAllErrors().isEmpty()){ for(ObjectError e:errors.getAllErrors()){
System.out.println(e.getDefaultMessage());
} modelAndView.addObject("errors", errors.getAllErrors());
modelAndView.setViewName("/index.jsp"); }else{
modelAndView.setViewName("/welcome.jsp"); } System.out.println(user.getUserName());
System.out.println(user.getUserPsw());
System.out.println(user.getUserAge()); return modelAndView; } @RequestMapping("/login")
public ModelAndView login (@Valid User user,Errors errors) {
ModelAndView modelAndView = new ModelAndView(); modelAndView.addObject("user", user);
if(!errors.getAllErrors().isEmpty()){ for(ObjectError e:errors.getAllErrors()){
System.out.println(e.getDefaultMessage());
} modelAndView.addObject("errors", errors.getAllErrors());
modelAndView.setViewName("/index.jsp"); }else{
modelAndView.setViewName("/welcome.jsp"); } System.out.println(user.getUserName());
System.out.println(user.getUserPsw());
System.out.println(user.getUserAge()); return modelAndView; } @RequestMapping("/login2")
public ModelAndView login2 (@Valid User user,Errors errors,HttpServletRequest Request) {
ModelAndView modelAndView = new ModelAndView(); HttpSession session = Request.getSession();
// session.setAttribute("user", user); System.out.println(user.getUserName());
System.out.println(user.getUserPsw());
System.out.println(user.getUserAge()); modelAndView.setViewName("/welcome.jsp");
return modelAndView; } }

参数获取:

如果需要获取页面传回来的数据,只需要在方法中设置上相应的参数 例如上面方法中的user 直接将页面的参数封装进user中,

如果是集合或者数组的获取,

例如checkbox 传回来就是一个数组,直接添加相应的数组作为方法参数也会将checkbox 的数据封装进该数组

如果是一个集合,

比如买车票时添加多个乘车人,同时将数据提交到后台,那么传到后台就是一个集合,

封装一个VO类,类下成员变量为一个集合,然后将VO作为参数放在发方法中,参考Mybatis 封装VO类进行多个参数的传递

Handler类下面方法的写法:

  handler下面的方法的写法有多种,

  一种就是上面的 返回一个视图模型对象ModelAndView,setViewName("/index.jsp")跳转某个页面

  返回一个字符串(某个页面)public string XXX( Model   model)      参数中必须要有Model

  void   name方法中需要将 request 和response 作为参数,这个不多说,拿到request 和response  那么就和servlet的操作完全一样了

  除了这三种,还有很多种,常用的还是第一种

验证:
上述代码中的errors 相关的 @Valid 这些是引入了hibernate-validator验证框架,前端传回来的数据进行相应的验证
1.开启验证注解:
2.配置验证资源文件,加载properties文件



3.对获取的参数对应的类成员变量使用注解

4.页面响应,发送相应的验证信息和页面的跳转

springMVC简单的一些操作的更多相关文章

  1. SpringMVC简单配置

    SpringMVC简单配置 一.eclipse安装Spring插件 打开help下的Install New Software 点击add,location中输入http://dist.springso ...

  2. 实验四 简单的PV操作

    实验四 简单的PV操作 专业 网络工程   姓名 方俊晖 学号 201406114309 一.        实验目的 1.掌握临界区的概念及临界区的设计原则: 2.掌握信号量的概念.PV操作的含义以 ...

  3. 使用Python对Excel表格进行简单的读写操作(xlrd/xlwt)

    算是一个小技巧吧,只是进行一些简单的读写操作.让人不爽的是xlrd和xlwt是相对独立的,两个模块的对象不能通用,读写无法连贯操作,只能单独读.单独写,尚不知道如何解决. #①xlrd(读) #cod ...

  4. 8天掌握EF的Code First开发系列之2 简单的CRUD操作

    本文出自8天掌握EF的Code First开发系列,经过自己的实践整理出来. 本篇目录 创建控制台项目 根据.Net中的类来创建数据库 简单的CRUD操作 数据库模式更改介绍 本章小结 本人的实验环境 ...

  5. berkerly db 中简单的读写操作(有一些C的 还有一些C++的)

    最近在倒腾BDB,才发现自己确实在C++这一块能力很弱,看了一天的api文档,总算是把BDB的一些api之间的关系理清了,希望初学者要理清数据库基本知识中的环境,句柄,游标的基本概念,这样有助于你更好 ...

  6. Java入门到精通——基础篇之多线程实现简单的PV操作的进程同步

    Java入门到精通——基础篇之多线程实现简单的PV操作的进程同步 一.概述     PV操作是对信号量进行的操作.     进程同步是指在并发进程之间存在一种制约关系,一个进程的执行依赖另一个进程的消 ...

  7. oracle常见为题汇总,以及一个简单数据连接操作工厂

    本人软件环境:win8.1 64位操作系统,vs2013,安装好了与oracle数据库对应的客户端         连接oracle数据库.以及操作数据库 1.使用IIS建立网站,浏览网页时候,提示“ ...

  8. Foundation 框架 NSFileManager,NSData 简单的文件操作

    一.简单展示NSFileManager的使用 #import <Foundation/Foundation.h> int main(int argc, const char * argv[ ...

  9. 本地Eclipse连接HDFS进行简单的文件操作

    昨天总结了一点自己在搭建Hadoop完全分布式环境过程中遇到的几个小问题以及解决方案,今天在搭建成功的环境中进行了简单的文件操作,包括:文件目录的创建.文件的创建.本地文件的上传.文件的重命名.文件的 ...

随机推荐

  1. IOS常见的加密方法,常用的MD5和Base64

    iOS代码加密常用加密方式 iOS代码加密常用加密方式,常见的iOS代码加密常用加密方式算法包括MD5加密.AES加密.BASE64加密,三大算法iOS代码加密是如何进行加密的,且看下文 MD5 iO ...

  2. Http的定义及其基本概念介绍

    HTTP的特性 HTTP构建于TCP/IP协议之上,默认端口号是80 HTTP是无连接无状态的 HTTP报文 请求报文 HTTP定义了与服务器交互的不同方法,最基本的方法有4种,分别是GET,POST ...

  3. 快速熟悉Oracle索引

    一.索引 1.1 什么是索引? 一种用于提升查询效率的数据库对象: 通过快速定位数据的方法,减少磁盘的输入输出操作: 索引信息与表独立存放: Oracle数据库自动使用和维护索引. 1.2 索引分类 ...

  4. 用windbg显示特定进程虚拟地址的方法

    1 必须使用Livekd.exe启动windbg 2 !process PID 3 找到PROCESS对象的地址:PROCADDR 4 找到进程的DirBase 5 r cr3 = DirBase 6 ...

  5. jQuery事件控制点击内容下拉

    1.设计实例 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www. ...

  6. Apache Kafka简介与安装(二)

    Kafka在Windows环境上安装与运行 简介 Apache kafka 是一个分布式的基于push-subscribe的消息系统,它具备快速.可扩展.可持久化的特点.它现在是Apache旗下的一个 ...

  7. C#基础随手笔记之基础操作优化

    对数据的查询,删除等基本操作是任何编程语言都会涉及到的基础,因此,研究了一下C#中比较常用的数据操作类型,并顺手做个笔记. List查询时,若是处理比较大的数据则使用HashSet<T>类 ...

  8. javaScript(5)---运算符

    学习要点: 1.什么是表达式 2.一元运算符 3.算术运算符 4.关系运算符 5.逻辑运算符 6.*位运算符   7.赋值运算符  8.其他运算符      9.运算符优先级 ECMA-262描述了一 ...

  9. 窗口函数解决数据岛问题(mysql暂无窗口函数,可以通过用户变量解决窗口函数问题)

    数据岛问题: 有表: create table dataisland (id int)  insert into  dataisland values(1),(2),(3),(7),(11),(12) ...

  10. 基于JS的WEB会议室预订拖拽式图形界面的实现

    06年的一篇blog,转到这个博客上: 很早之前写的,后来由于这个功能模块取消,最终没有上线,所以与Server交互的那部分还没有写,不过那部分方案我也已经出来了,而且现在客户端这一部分已经通过了比较 ...