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. How tomcat works 读书笔记十四 服务器组件和服务组件

    之前的项目还是有些问题的,例如 1 只能有一个连接器,只能处理http请求,无法添加另外一个连接器用来处理https. 2 对容器的关闭只能是粗暴的关闭Bootstrap. 服务器组件 org.apa ...

  2. 【Nginx】下载,请求限速,根据URL参数限速

    这个场景是限制单个连接的下载速度,还有限制单个IP的连接数,或者单位时间内的请求数,实验环境 nginx1.9.x. 小例子为主,具体的细节请多看文档. 限制下载速度 location /downlo ...

  3. Django之ModelForm

    简介 Model + Form ==> ModelForm.model和form的结合体,所以有以下功能: 验证 数据库操作 Form回顾 models.py class UserType(mo ...

  4. spring boot + quartz 集群

    spring boot bean配置: @Configuration public class QuartzConfig { @Value("${quartz.scheduler.insta ...

  5. eclipse调试的方法和技巧

    eclipse调试图标所代表的含义: Step into 单步进入-将进入执行的方法内部继续执行. Step over  单步前进-执行下一步. Step return – 单步退出-跳出正在执行的方 ...

  6. 经典的java中return和finally问题!

    经典的java中return和finally问题! 标签: 杂谈 分类: java学习 前一段时间 参加公司的笔试问了这个问题,回来一查才知道当时自己做错了,百思不得其解,上网查到下面的程序,但是运行 ...

  7. 对ajax基础的掌握随笔

    原始的ajax,在第一个页面定义如下: function createAjax() { var xmlhttp; if (window.ActiveXObject) xmlhttp = new Act ...

  8. zabbix 批量生成聚合图形

    通过插入数据库的方式批量生成 zabbix 聚合图形 原型图形 聚合的 sql 批量操作 .在聚合图形创建好一个聚合图形A.找出图形A的ID (创建图形的时候记得填写好行数和列数) select sc ...

  9. Jmeter 性能测试术语

    1.5 术语及缩写词 测试时间:一轮测试从开始到结束所使用的时间 并发线程数:测试时同时访问被测系统的线程数.注意,由于测试过程中,每个线程都是以尽可能快的速度发请求,与实际用户的使用有极大差别,所以 ...

  10. Mybatis 系列10

    在前九篇中,介绍了mybatis的配置以及使用, 那么本篇将走进mybatis的源码,分析mybatis 的执行流程 1. SqlSessionFactory 与 SqlSession. 通过前面的章 ...