2019独角兽企业重金招聘Python工程师标准>>>

首先,配置web.xml文件来启动spring

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"><!--spring配置文件的加载,如果有多个配置文件,可以使用<param-value>classpath:application*.xml</param-value>*匹配任意字符,这样就可以加载所有application开头的xml文件,这里配置文件写在src目录下--><context-param><param-name>contextConfigLocation</param-name><param-value>classpath:applicationContext.xml</param-value></context-param><!--spring是通过servlet的监听器启动的--><listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener><!--spring mvc就是一个servlet,现在把这个servlet命名为myspringmvc,这里需要注意的是,spring mvc需要一个配置文件,其命名规则是    servlet名称-servlet.xml,由于这里的servlet名称是myspringmvc,所以需要在WEB-INF目录下建立一个myspringmvc-servlet.xml的文件--><servlet><servlet-name>myspringmvc</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>myspringmvc</servlet-name><!--spring mvc只处理.html为后缀的请求--><url-pattern>*.html</url-pattern></servlet-mapping><!--默认首页--><welcome-file-list><welcome-file>index.jsp</welcome-file></welcome-file-list>
</web-app>

由于这里的servlet名称是myspringmvc,所以需要在WEB-INF下新建一个myspringmvc-servlet.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:p="http://www.springframework.org/schema/p"     xmlns:context="http://www.springframework.org/schema/context"     xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd   http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd   http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd   http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd">   <!-- 把标记了@Controller注解的类转换为控制器,base-package表示初始化时要扫描的包,*号表示扫描全部的包 -->     <context:component-scan base-package="*" />     <!-- 设置视图的根目录和后缀 -->     <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" p:prefix="/WEB-INF/web/" p:suffix=".jsp" />     </beans>

下面是当前项目的文件目录

UserController.java

package user.controller;import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import user.entity.User;
import user.entity.User2;@Controller
public class UserController {@RequestMapping("/login-index")public String loginIndex() {return "user/login-index";}@RequestMapping("/login")public String login(User user,User2 user2,ModelMap modelMap) {
//      modelMap.addAttribute(user);
//      modelMap.addAttribute(user2);modelMap.addAttribute("key", "value");return "user/login-success";}
}

User.java

package user.entity;public class User {private String username;public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}} 

User2.java

package user.entity;public class User2 {private String username;public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}}

login-index.jsp

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<!DOCTYPE HTML>
<html><head><title>login</title><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /></head><body><form action="/spring/login.html" method="get">username:<input type="text" name="username"><input type="submit" value="login"></form></body>
</html>

login-success.jsp

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<!DOCTYPE HTML>
<html><head><title>success</title><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /></head><body>user: ${user.username }<br/>user2: ${user2.username }<br/>${key }</body>
</html>

使用Tomcat6部署项目之后,访问  http://localhost/项目名称/login-index.html,这时会访问

@RequestMapping("/login-index")所指的方法,并返回user/login-index,

也就是/WEB-INF/web/ user/login-index.jsp页面。

表单中输入myname并提交,因为我表单设置的method="get",所以这时候浏览器的路径为http://localhost/项目名称/login.html?username=myname,访问@RequestMapping("/login")注解所指的方法,

并返回login-success.jsp页面。

spring接受表单的参数与struts2有所不同,表单传递的参数username会自动匹配

login(User user,User2 user2,ModelMap modelMap)中的user,user2的成员变量username并给其赋值,

这导致两个bean都获取到了参数,相比之下struts2用user.username更能精准的赋值。

user,user2默认自动传递到jsp页面,

ModelMap 是给跳转的jsp页面传参,相当于HttpServletRequest .

这里只是简单的介绍了spring mvc的部分功能,其实还有很多高级功能没有介绍,以下是官方文档

http://static.springsource.org/spring/docs/current/spring-framework-reference/html/mvc.html

转载于:https://my.oschina.net/eatsuger/blog/78779

实现spring mvc流程相关推荐

  1. Spring源码——MVC流程

    前言 最近回顾了一下Spring源码,准备用思维导图的方式简单的将整个源码内容的流程展示出来,思维导图.图片等文件更新在https://github.com/MrSorrow/spring-frame ...

  2. 高手都这么给 Spring MVC 做单元测试!

    作者:alanshelby 来源:zhuanlan.zhihu.com/p/43260823 「一.前言」 在前面的章节我们介绍过 Junit 的使用,也了解过 spring-test,今天我们来了解 ...

  3. Spring MVC测试框架

    原文链接:http://jinnianshilongnian.iteye.com/blog/2004660 Spring MVC测试框架详解--服务端测试 博客分类: springmvc杂谈 spri ...

  4. Spring MVC讲解

    什么是MVC Spring MVC流程 什么是MVC MVC是模型(Model).视图(View).控制器(Controller)的简写,是一种软件设计规范. 是将业务逻辑.数据.显示分离的方法来组织 ...

  5. idea junit 测试看不到控制台报错信息_高手都这么给 Spring MVC 做单元测试!

    本章节主要讲解以下两部分内容: 1.Mock 测试简介 2.测试用例演示 一.Mock 测试简介 1.什么是 mock 测试 在测试过程中,对于某些不容易构造或者不容易获取的对象,用一个「虚拟的对象」 ...

  6. Spring MVC学习总结(14)——SpringMVC测试框架之mockMVC详解

    SpringMVC测试框架 基于RESTful风格的SpringMVC的测试,我们可以测试完整的Spring MVC流程,即从URL请求到控制器处理,再到视图渲染都可以测试. 一 MockMvcBui ...

  7. Spring MVC测试框架详解——服务端测试

    随着RESTful Web Service的流行,测试对外的Service是否满足期望也变的必要的.从Spring 3.2开始Spring了Spring Web测试框架,如果版本低于3.2,请使用sp ...

  8. Spring MVC 笔记

    MVC核心思想:业务数据的抽取同业务数据的呈现相分离Model-View-Controller{一种架构模式,程序分层.分工合作一种思考方式 } Spring MVC流程架构图: Spring MVC ...

  9. Spring MVC中数据绑定流程和原理

    Spring MVC不支持表单日期字符串和日期类型之间的转换 Spring MVC数据绑定的流程(Spring MVC通过反射 机制对目标处理方法进行解析) 1.Spring MVC将ServletR ...

最新文章

  1. 2008年上半年 网络工程师 上下午试卷【附带答案】
  2. R语言ggplot2可视化:使用pracma包的interp1函数对缺失值进行线性插值后进行可视化分析、用虚线标记进行数据填充的区域
  3. php原生开发规范,php开发规范
  4. jakarta-taglibs-standard-1.1.0查找下载
  5. VMM2012中虚拟机的创建
  6. OpenCV图像处理—— 凸包检测
  7. mysql 函数 局部变量_MySQL 存储过程 存储函数 局部变量 游标 概念示例
  8. 视频直播/远程会议中的AI关键技术探索应用
  9. 未来网络安全重塑,保障安全的会不会只有四五家?
  10. 每天一个linux命令(16):witch命令
  11. “冲击波”病毒的症状和解决方案
  12. API Guides Contacts Provider
  13. java参数配置jconsole_jconsole 配置详解
  14. 腾讯电脑管家修复代理服务器,腾讯QQ电脑管家LSP修复在哪
  15. ensp官方停止下载
  16. [编程题]山寨金闪闪 (面试题)
  17. 计算机知识竞赛 翻译,英文简历之常见学科竞赛中英文翻译
  18. 手机短信转发到另一个手机接收_我买了个能贴在手机上的显微镜,结果发现了另一个世界...
  19. ai领域职业规划_我如何抛弃我的咨询职业并进入技术领域
  20. 你有一条微信未发送_微信支持发送大文件;男子薅90年爱奇艺VIP;京东方再次未通过苹果质量审查...

热门文章

  1. python提交事务_事务提交和回滚
  2. 用宝塔本地搭建php,Windows系统如何使用宝塔面板一键快速搭建本地服务器环境(LNMP/LAMP)...
  3. 新型计算机作文1000,人类:感性的计算机作文1000字
  4. ajax保存乱码,Ajax 乱码详细
  5. php获得对象的类型,php 类型(对象)提示
  6. javascript中内置对象简介、Array
  7. 元宇宙系列白皮书——未来已来:全球XR产业洞察
  8. 产品经理的冬天来了嘛?
  9. 《大数据》第1期“论坛”——对大数据国家战略的几点考虑
  10. 【项目管理】敏捷和计划驱动项目的特征对比