Spring MVC使用样例
Spring MVC使用样例
步骤1:添加Spring的相关依赖
1 <dependency> 2 3 <groupId>com.alibaba.external</groupId> 4 5 <artifactId>java.servlet</artifactId> 6 7 <version>2.5</version> 8 9 </dependency> 10 11 <dependency> 12 13 <groupId>com.alibaba.external</groupId> 14 15 <artifactId>sourceforge.spring.modules.webmvc</artifactId> 16 17 <version>2.5.6</version> 18 19 </dependency> 20 21 <dependency> 22 23 <groupId>com.alibaba.external</groupId> 24 25 <artifactId>sourceforge.spring.modules.core</artifactId> 26 27 <version>3.0.5.RELEASE</version> 28 29 </dependency> 30 31 <dependency> 32 33 <groupId>com.alibaba.external</groupId> 34 35 <artifactId>sourceforge.spring.modules.beans</artifactId> 36 37 <version>3.0.5.RELEASE</version> 38 39 </dependency> 40 41 <dependency> 42 43 <groupId>com.alibaba.external</groupId> 44 45 <artifactId>sourceforge.spring.modules.context</artifactId> 46 47 <version>3.0.5.RELEASE</version> 48 49 </dependency> 50 51 <dependency> 52 53 <groupId>com.alibaba.external</groupId> 54 55 <artifactId>sourceforge.spring.modules.context-support</artifactId> 56 57 <version>3.0.5.RELEASE</version> 58 59 </dependency> 60 61 <dependency> 62 63 <groupId>com.alibaba.external</groupId> 64 65 <artifactId>sourceforge.spring.modules.web</artifactId> 66 67 <version>3.0.5.RELEASE</version> 68 69 </dependency> 70 71 <dependency> 72 73 <groupId>com.alibaba.external</groupId> 74 75 <artifactId>sourceforge.spring.modules.aop</artifactId> 76 77 <version>3.0.5.RELEASE</version> 78 79 </dependency> 80 81 <dependency> 82 83 <groupId>com.alibaba.external</groupId> 84 85 <artifactId>jakarta.commons.logging</artifactId> 86 87 <version>1.1.1</version> 88 89 </dependency> 90 91 <dependency> 92 93 <groupId>org.springframework</groupId> 94 95 <artifactId>spring-asm</artifactId> 96 97 <version>3.0.6.RELEASE</version> 98 99 </dependency> 100 101 <dependency> 102 103 <groupId>com.alibaba.external</groupId> 104 105 <artifactId>sourceforge.spring.modules.expression</artifactId> 106 107 <version>3.0.5.RELEASE</version> 108 109 </dependency>
步骤2:在web.xml中配置spring mvc的入口
<servlet> <servlet-name>springmvc</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>springmvc</servlet-name> <url-pattern>*.test</url-pattern> </servlet-mapping>
也可以指定spring servlet拦截之后,Spring mvc的配置文件
<servlet> <servlet-name>hello</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/classes/*.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>hello</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping>
【注意】
1、在src源下面的文件,都将被映射到/WEB-INF/classes/下面,可以使用通配符。
<init-param> <param-name>contextConfigLocation</param-name> <!-- 指定XML文件位置 <param-value>/WEB-INF/classes/springmvc.xml <param-value>classpath*:springmvc.xml --> <!-- 在classpath路径下去寻找springmvc.xml文件 --> <param-value>classpath:springmvc.xml </param-value> </init-param>
2、<load-on-startup>1</load-on-startup> 让容器启动的时候就加载配置文件
步骤3:如果没有指定spring mvc的映射文件名称,默认使用:在WEB-INF目录下的*-servlet.xml文件,其中*为web.xml中配置的servlet-name。本例为:springmvc,则寻找的配置文件为:springmvc-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:lang="http://www.springframework.org/schema/lang" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/lang http://www.springframework.org/schema/lang/spring-lang-2.5.xsd"> <bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"> <property name="mappings"> <props> <prop key="start.test">LoginSpringAction</prop> </props> </property> </bean> <bean id="LoginSpringAction" class="com.alibaba.spring.LoginSpringAction"></bean> <bean class="org.springframework.web.servlet.view.UrlBasedViewResolver"> <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"></property> <property name="prefix" value="/WEB-INF/jsp/"/> <property name="suffix" value=".jsp"/> </bean> </beans> 解释:如果start.test访问,则使用com.alibaba.spring.LoginSpringAction进行处理。 处于jsp页面隐藏的考虑,放在/WEB-INF目录下,按照跳转要求,则找/WEB-INF/jsp/start1.jsp页面。其中start1是由Controller继承类中new ModelAndView("start1")决定的。前缀和后缀是在*-servlet.xml中指定的,本例为springmvc-servlet.xml。 【注意】如果需要使用注解annotation的方式,在需要引入context和mvc命名空间,具体如下: <?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" xmlns:mvc="http://www.springframework.org/schema/mvc" 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 http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd" default-autowire="byName"> </beans>
步骤4:LoginSpringAction.java文件
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.mvc.Controller; public class LoginSpringAction implements Controller { @Override public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception { String username = request.getParameter("username"); String password = request.getParameter("password"); System.out.println("username:" + username + ", password:" + password); return new ModelAndView("start1"); } }
【注意】使用annotation方式,可以避免耦合方式,也方便单元测试
setp 1:为controller的类添加注解:@Controller
setp 2:为方法添加@RequestMapping
在类级别定义:@RequestMapping("/test"),该类的根级别,可选
在方法上定义:@RequestMapping("/start"),相对与类级别,必选,访问方式:/test/start.do
setp 3:在spring servlet配置文件中添加扫描功能,使annotation产生作用
<!-- 把标记了@Controller注解的类转换为bean -->
<context:component-scan base-package="test.controller" />
setp 4:在spring servlet中使用视图解析类,如UrlBasedViewResolver, 在里面配置前缀和后缀,viewClass属性为可选。
步骤5:启动jetty访问,url:http://localhost:8080/start.test, 则后台输出:Controller is working
补充:制作一个index.jsp页面开始运转
1 <%@ page language="java" contentType="text/html; charset=utf-8" 2 3 pageEncoding="gbk"%> 4 5 6 7 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 8 9 <html> 10 11 <h2>Hello World!</h2> 12 13 <body> 14 15 <form method="get" action="/start.test"> 16 17 <table> 18 19 <tr> 20 21 <th><label for="username">用户名</label> 22 23 </th> 24 25 <td><input type="text" id="username" name="username" /> 26 27 </td> 28 29 </tr> 30 31 <tr> 32 33 <th><label for="password">密码</label> 34 35 </th> 36 37 <td><input type="text" id="password" name="password" /> 38 39 </td> 40 41 </tr> 42 43 <tr> 44 45 <th><label for="submit"></label> 46 47 </th> 48 49 <td> 50 51 <button type="submit" id="submit" name="submit">submit</button> <label 52 53 for="reset"></label> 54 55 <button type="reset" id="reset" name="reset">reset</button></td> 56 57 </tr> 58 59 60 61 </table> 62 63 </form> 64 65 </body> 66 67 </html>
访问:http://localhost:8080/index.jsp
【补充】
(1)对于不需要的controller的login.jsp页面,可以使用spring自带的org.springframework.web.servlet.mvc.ParameterizableViewController,而不需要自己再写controller的实现。具体配置如下:
<bean id="LoginAction"
class="org.springframework.web.servlet.mvc.ParameterizableViewController">
<property name="viewName" value="login"></property>
</bean>
它会根据策略寻找到/WEB-INF/jsp/login.jsp
(2)如果login.test直接找login.jsp,即login是一致的,不需要改变,则可以更加省略,直接写为:
<bean id="LoginAction"
class="org.springframework.web.servlet.mvc.UrlFilenameViewController" />
Spring MVC使用样例的更多相关文章
- Spring Boot入门样例-001-Java和Maven安装配置
Spring Boot入门样例-001-Java和Maven安装配置 本文说明Java和Maven在windows下的安装和配置 前言 本Spring Boot入门样例准备工作参考: Spring B ...
- 转:【Spring MVC Controller单例陷阱】
http://lavasoft.blog.51cto.com/62575/1394669/ Spring MVC Controller默认是单例的: 单例的原因有二:1.为了性能.2.不需要多例. 1 ...
- Spring MVC Controller单例陷阱
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://lavasoft.blog.51cto.com/62575/1394669 Spr ...
- MVC整个样例的源代码
以下就是整MVC样例的源代码: #windows应用程序 #开发者:蔡军生(QQ:9073204) 深圳 2014-9-24 #使用类来描写叙述 from ctypes import * from c ...
- Spring Cloud使用样例
Spring Cloud Demo 项目地址:https://github.com/hackyoMa/spring-cloud-demo 组件 基于Spring Boot 2.0.4.Spring C ...
- RAD 极速应用开发 Spring ROO 入门样例
官网 http://projects.spring.io/spring-roo/ Spring ROO in action ...
- Spring 框架学习(1)--Spring、Spring MVC扫盲
纸上得来终觉浅,绝知此事要躬行 文章大纲 什么是spring 传统Java web应用架构 更强的Java Web应用架构--MVC框架 Spring--粘合式框架 spring的内涵 spring核 ...
- Spring Ajax一个简单样例
配置不说了.要在前面helloworld的样例基础上弄. 相同在hello下新建ajax.jsp <%@ page language="java" contentType=& ...
- spring mvc 的Controller类默认Scope是单例(singleton)的
使用Spring MVC有一段时间了,之前一直使用Struts2,在struts2中action都是原型(prototype)的, 说是因为线程安全问题,对于Spring MVC中bean默认都是(s ...
随机推荐
- hdu4171 Paper Route 树的性质+DFS
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4171 题意: 有n+1个点,这n+1个点由n条边相连,且保证连通.然后给出各个点到出口的距离,要求从 ...
- [刷题]算法竞赛入门经典(第2版) 5-16/UVa212 - Use of Hospital Facilities
题意:模拟患者做手术. 其条件为:医院有Nop个手术室.准备手术室要Mop分钟,另有Nre个恢复用的床.准备每张床要Mre分钟,早上Ts点整医院开张,从手术室手术完毕转移到回复床要Mtr分钟.现在医院 ...
- Oracle 12C 新特性之非分区表转分区表online clause(不停业务+索引有效)
12c以前非分区表需要转换为分区, 如果不停业务的话可以使用在线重定义,只有在表进行切换的时候会有短暂的锁表. 12c 中alter table online clause 实现了表上现有的索引有效, ...
- 详解CockroachDB事务处理系统
本文提到的一些术语,比如Serializability和Linearizability,解释看Linearizability, Serializability and Strict Serializa ...
- Openstack & Ansible
Opennstack Open source software for creating private and public clouds Manages the servers at these ...
- cocoapods卸载重装 解决clone,install,search很慢的问题
电脑上面的cocoapods clone,pod install search的时候非常非常的慢,尝试了很多方法都无法解决,最后只能尝试着重装看看能不能解决问题 卸载 sudo gem uninsta ...
- SimpleDateFormat使用和线程安全问题
SimpleDateFormat 是一个以国别敏感的方式格式化和分析数据的具体类. 它允许格式化 (date -> text).语法分析 (text -> date)和标准化. Simpl ...
- Python3网络爬虫
# 最近在实验楼学习了爬取妹子图,发现在运行的时候不是很流畅,有些图片下 1 # coding: utf-8 # coding: utf-8 import re import threading fr ...
- Javascript事件模型(二):Javascript事件的父元素和子元素
DOM事件标准定义了两种事件流,分别是捕获和冒泡.默认情况下,事件使用冒泡事件流,不使用捕获事件流.你可以指定使用捕获事件流,方法是在注册事件时传入useCapture参数,将这个参数设为true. ...
- activeMQ的安装
1.下载ActiveMQ 去官方网站下载:http://activemq.apache.org/ 2.运行ActiveMQ 解压缩apache-activemq-5.5.1-bin.zip, 修改配置 ...