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. Cocoa练习01:一个简单的Todo list程序

    写一个简单的todo list程序,界面如下图: 在TextField区域输入文字,点击Add按钮会将文字显示在下面的TableView列表中.TableView列表有2列,第一列是文字的输入时间:第 ...

  2. The 2nd tip of DB Query Analyzer

    The 2nd tip of DB Query Analyzer                               Ma Genfeng   (Guangdong Unitoll Servi ...

  3. mysql-proxy中的admin-lua-script

    [root@ecs-7b55 lua]# cat admin.lua --[[ $%BEGINLICENSE%$ Copyright (c) 2008, 2012, Oracle and/or its ...

  4. linux_熟悉常用Linux命令

    man :任何时候你觉得对一个命令行不是很确定,都可以通过输入"man + 命令"来了解这个命令能确切是做什么的. ls :列出目录内容. pwd :在终端中显示当前工作目录的全路 ...

  5. java web--DOM

    Dom总结dom:文档对象模型的简称.dom的解析:与XML一样遵循同样的规范 将标记型文档解析成一棵DOM树,并将树中的内容都封装成节点对象. 如果html文档过大,同样会造成解析过慢,怎么使用sa ...

  6. 数据库scheme设计(9.4 小结)

    通过这一章的内容,希望能够让大家明白一个道理,“数据库系统的性能不是优化出来的,更多的是设计出来的”.数据库Schema 的设计并不如很多人想象的那样只是一个简单的对象对应实现,而是一个系统工程.要想 ...

  7. linux下安装xhprof

    https://jingyan.baidu.com/article/a24b33cd7ee1d519ff002b6d.html

  8. 神奇的ASCⅡ码图

    神奇的ASCⅡ码图 可能在网上也常见了asc2码图,但你知道是怎么做出来的吗?(总不可能是人一个一个字码进去的吧,当然,不排除有这种神人的可能

  9. Install and Configure Apache Kafka on Ubuntu 16.04

    https://devops.profitbricks.com/tutorials/install-and-configure-apache-kafka-on-ubuntu-1604-1/ by hi ...

  10. Android自动化框架介绍

    随着Android应用得越来越广,越来越多的公司推出了自己移动应用测试平台.例如,百度的MTC.东软易测云.Testin云测试平台…….由于自己所在项目组就是做终端测试工具的,故抽空了解了下几种常见的 ...