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. 【Android 应用开发】BluetoothServerSocket详解

    一. BluetoorhServerSocket简介 1. 继承关系 public final class BluetoothServerSocket extends Object implement ...

  2. HBase事务

    众所周知,ACID是指原子性(Atomicity),一致性(Consistency),隔离性(Isolation)和持久性(Durability). HBase对同一行数据的操作提供ACID保证.HB ...

  3. uc伯克利人工分割图像.seg文件解析

    之前看到  http://www.eecs.berkeley.edu/Research/Projects/CS/vision/grouping/segbench/ 提供的人工图像分割的.seg格式 ...

  4. Sublime Text3激活

    Sublime Text 3激活 最近Sublime Text3总是自动将激活码移除,查了下解决办如下: 首先.修改hosts文件,路径位:C:\Windows\System32\drivers\et ...

  5. python 内置标准库socketserver模块的思考

    socketserver模块简化了编写网络服务器的任务, 在很大程度上封装了一些操作, 你可以看成是事件驱动型的设计, 这很不错.它定义了两个最基本的类--服务器类 BaseServer, 请求处理类 ...

  6. Linux下安装MQ

    1.下载Linux下MQ的安装包,网上下载试用版或购买正版,此处以7.0.0.0版为例安装 2.如上图所示,是linux的MQ安装包展开图 3.创建用户和用户组 >root用户连接linux & ...

  7. centos下 redmind2.6安装

    1.下载安装redmind有关软件 cd /tmp wget http://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.5.tar.gz wget http:/ ...

  8. MacOS软件默认安装路径

    缘起 在用苹果电脑后,很多软件安装后并不只是简单的将所有的文件都放到/Applications目录里,尤其是一些开发用的软件.这就导致要修改一些软件的配置很不方便,总是需要各种查找.为了防止以后忘记这 ...

  9. IT小团队的管理者的突围之道

    笔者前几天被问到一个问题,你在团队管理方面有什么值得分享的吗?咋一听,实用千言万语,但是事后回忆说出来的东西感觉空无一物,缺少干货.故想通过写一篇随笔思考整理一下,刷新一下自己对小团队管理的认知.这里 ...

  10. Python 爬取美团酒店信息

    事由:近期和朋友聊天,聊到黄山酒店事情,需要了解一下黄山的酒店情况,然后就想着用python 爬一些数据出来,做个参考 主要思路:通过查找,基本思路清晰,目标明确,仅仅爬取美团莫一地区的酒店信息,不过 ...