- 浏览: 948558 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (423)
- mysql (37)
- hibernate (3)
- struts (9)
- spring (33)
- dom4j (2)
- junit (0)
- exception (1)
- 随笔杂谈 (12)
- google app engine (1)
- XMPP (1)
- OAuth安全授权 (1)
- 版本控制 (8)
- 心情感悟 (0)
- core java (19)
- log4j (7)
- jquery (12)
- javascript (10)
- 网站性能优化及工具 (11)
- 服务器架设配置等 (38)
- EXT (4)
- 正则表达式 (5)
- 日志统计分析 (2)
- htmlparse (4)
- httpclient (5)
- java随笔 (5)
- dhtmlxtree (1)
- freemarke (5)
- memcached (6)
- javamail (5)
- Linux命令 (10)
- 应用监控cpu web jdbc等 (4)
- jmagick (9)
- 第三方缓存策略 (9)
- ORM (2)
- hadoop (2)
- 大数据量处理 (8)
- 经典 (1)
- 权限设计 (1)
- andriod (1)
- mybatis (12)
- redis (24)
- 数据结构_算法 (5)
- 分布式系统 (1)
- php (1)
- 网络编程 (3)
- 服务器部署 (3)
- ios (2)
- IM (23)
- mina (1)
- 视讯和语音 (1)
- 代码生成 (1)
- 架构 (4)
- 建模工具 (1)
- oracle (4)
- solr (10)
- 构建工具 (7)
- html5 (1)
- nginx (5)
- css (1)
- 大数据-分布式 (2)
- 设计模式 (2)
- mq (2)
- jvm调优 (8)
- 并发编程 (2)
- 搜索引擎 (1)
- UML (2)
最新评论
-
天使建站:
jquery获取网页里多选框checkbox选中项的值的方法及 ...
JS jQuery分别获取选中的复选框值 -
abao1:
发现一个小问题 sortAndSave方法中的for循环 第二 ...
完整java实现外部排序 -
西巴拉古呀那:
Kafka分布式消息系统实战(与JavaScalaHadoop ...
消息系统kafka介绍 -
kafodaote:
Kafka分布式消息系统实战(与JavaScalaHadoop ...
消息系统kafka介绍 -
成大大的:
Kafka分布式消息系统实 ...
消息系统kafka介绍
基于注解驱动的配置越来越流行,使用注解加上Conversion over Configuration可以大为简化配置的过程。struts 2.1.6引入的Conversion插件在注解和规约驱动的配置上做的很好。spring在2.5以后也对MVC进行了大幅度改进,现在你无须让 Controller 继承任何接口,无需在 XML 配置文件中定义请求和 Controller 的映射关系,仅仅使用注解就可以让一个 POJO 具有 Controller 的绝大部分功能。
一:Hello World
1.编写Controller
- package mao.shijie.springmvc.controller;
- import org.springframework.stereotype.Controller;
- import org.springframework.web.bind.annotation.RequestMapping;
- @Controller
- @RequestMapping("/welcome.htm") //这个注解相当于实现Controller接口
- public class WelcomeController {
- @RequestMapping
- public void welcome() {
- }
- }
package mao.shijie.springmvc.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; @Controller @RequestMapping("/welcome.htm") //这个注解相当于实现Controller接口 public class WelcomeController { @RequestMapping public void welcome() { } }
注意该类只是一个加上了annotation的pojo。
2.加入必须的jar,spring mvc没有引入过多的标签库,一般使用jstl标签库就可以完成绝大数工作。
2.配置web.xml
- <!-- spring配置文件加载路径 -->
- <context-param>
- <param-name>contextConfigLocation</param-name>
- <param-value>/WEB-INF/applicationContext*.xml</param-value>
- </context-param>
- <listener>
- <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
- </listener>
- <servlet>
- <servlet-name>spring</servlet-name>
- <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
- <load-on-startup>1</load-on-startup>
- </servlet>
- <servlet-mapping>
- <servlet-name>spring</servlet-name>
- <url-pattern>*.htm</url-pattern>
- </servlet-mapping>
<!-- spring配置文件加载路径 --> <context-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/applicationContext*.xml</param-value> </context-param> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <servlet> <servlet-name>spring</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>spring</servlet-name> <url-pattern>*.htm</url-pattern> </servlet-mapping>
spring mvc还需要一个xxx-servlet.xml的配置文件,xxx为web.xml中servlet-name,该例中为/WEB-INF/spring-servlet.xml
3.配置spring-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-2.5.xsd
- http://www.springframework.org/schema/context
- http://www.springframework.org/schema/context/spring-context-2.5.xsd">
- <!-- 把标记了@Controller注解的类转换为bean -->
- <context:component-scan base-package="mao.shijie.springmvc.controller" />
- <!-- 启动Spring MVC的注解功能,完成请求和注解POJO的映射 -->
- <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" />
- <!-- 对模型视图名称的解析,即在模型视图名称添加前后缀 -->
- <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"
- p:prefix="/WEB-INF/jsp/" p:suffix=".jsp" />
- <!-- 处理Mutipart文件上次的bean -->
- <bean id="multipartResolver"
- class="org.springframework.web.multipart.commons.CommonsMultipartResolver"
- p:defaultEncoding="utf-8" />
- </beans>
<?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-2.5.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd"> <!-- 把标记了@Controller注解的类转换为bean --> <context:component-scan base-package="mao.shijie.springmvc.controller" /> <!-- 启动Spring MVC的注解功能,完成请求和注解POJO的映射 --> <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" /> <!-- 对模型视图名称的解析,即在模型视图名称添加前后缀 --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" p:prefix="/WEB-INF/jsp/" p:suffix=".jsp" /> <!-- 处理Mutipart文件上次的bean --> <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver" p:defaultEncoding="utf-8" /> </beans>
4.编写视图,在前面的配置中,制定了一个InternalResourceViewResolver,该bean更具视图名加上前缀/WEB-INF/jsp/和后缀.jsp找到视图,视图名的确定后面会讲到,该例中视图名更具Url确定,为welcome,所以视图文件为/WEB-INF/jsp/welcome.jsp。
- <%@ page language="java" contentType="text/html; charset=utf-8"
- pageEncoding="utf-8"%>
- <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
- <html>
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
- <title>Insert title here</title>
- </head>
- <body>
- <h1>Hello World!</h1>
- </body>
- </html>
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Insert title here</title> </head> <body> <h1>Hello World!</h1> </body> </html>
启动服务器,访问http://localhost:8080/spring-mvc/welcome.htm
二:一个Controller处理多个Url
- @Controller
- public class UserController {
- @RequestMapping("/user/regist.htm")
- public void regist(){
- }
- @RequestMapping("/user/login.htm")
- public void login(){
- }
- }
@Controller public class UserController { @RequestMapping("/user/regist.htm") public void regist(){ } @RequestMapping("/user/login.htm") public void login(){ } }
通过在public方法上添加@RequestMapping指定Url参数。根据Url得到视图,该例中视图为/WEB-INF/jsp/user/regist,/WEB-INF/jsp/user/login。
在使用一个Controller处理多个Url时,可以通过一个Url地址,不同的请求参数来区别两个方法。例如
- @RequestMapping(params="type=user",value="/user/list.htm")
- public void listAllUser(){
- }
- @RequestMapping(params="type=admin",value="/user/list.htm")
- public void listAllAdmin(){
- }
@RequestMapping(params="type=user",value="/user/list.htm") public void listAllUser(){ } @RequestMapping(params="type=admin",value="/user/list.htm") public void listAllAdmin(){ }
同样还可以通过HTTP Method来区别两个方法
- @RequestMapping(value = "/user/regist.htm", method = RequestMethod.GET)
- public void regist() {
- }
- @RequestMapping(value = "/user/regist.htm", method = RequestMethod.POST)
- public void registPost() {
- }
@RequestMapping(value = "/user/regist.htm", method = RequestMethod.GET) public void regist() { } @RequestMapping(value = "/user/regist.htm", method = RequestMethod.POST) public void registPost() { }
method属性可以让Controller处理特定的HTTP方法,本例中为POST和GET,也可以指定同时处理多个HTTP方法。
三:请求参数的传入
在Controller方法中声明方法参数,那么同名的HTTP请求参数将自动转换为相应类型,并传入方法。
- @RequestMapping("/user/regist.htm")
- public void regist(String username, String password, int age) {
- }
@RequestMapping("/user/regist.htm") public void regist(String username, String password, int age) { }
当访问地址/user/regist.html?age=20&username=user&password=pwd时,那么传入regist方法的username==user,password==pwd,age==20。
请求参数的传入同样支持类似与struts2 ModelDriven的bean参数传递。例如把该例中的username,password,age参数通过user bean传入。
- public class User {
- private String username;
- private String password;
- private int age;
- //getter,setter
- }
public class User { private String username; private String password; private int age; //getter,setter }
- @RequestMapping("/user/regist.htm")
- public void regist(User user) {
- System.out.println(user.getAge());
- System.out.println(user.getUsername());
- }
@RequestMapping("/user/regist.htm") public void regist(User user) { System.out.println(user.getAge()); System.out.println(user.getUsername()); }
访问http://localhost:8080/spring-mvc/user/regist.htm?username=user&password=pwd&age=20时,将打印出20,pwd。spring为自动查找bean的属性,并更具属性名映射相应的请求参数。
发表评论
-
各种数据库(oracle、mysql、sqlserver等)在Spring中数据源的配置和JDBC驱动包
2013-07-16 13:09 2826在开发基于数据库的应 ... -
springmvc rest框架搭建中遇到的问题-xml转换错误
2013-01-18 11:26 2004.bean to xml显示的xml不是我往Model ... -
spring3.5 mvc json view bug MappingJacksonJsonView
2013-01-18 11:27 1541在返回单一model的json的时候。 MappingJa ... -
Spring MVC的多视图解析器配置及与Freemarker的集成
2013-01-18 11:27 3683http://my249645546.iteye.com/ ... -
xStream完美转换XML、JSON
2013-01-17 16:02 1256http://www.cnblogs.com/hoojo/a ... -
SpringMVC 中整合JSON、XML视图一
2013-01-17 16:01 1371http://www.cnblogs.com/hoojo/a ... -
Spring MVC 之 视图解析器ResourceBundleViewResolver
2013-01-17 10:45 1277http://blog.csdn.net/q34982 ... -
spring3mvc自定义多视图解析器
2013-01-17 10:41 1663使用视图名后缀来判断选择相应的视图解析器自定义一个视图解析器 ... -
spring3.0.6 使用context:property-placeholder载不进属性
2012-12-15 14:43 1378我用spring3.0.6+mybatis3.0.6+myba ... -
Spring定时任务的多种使用方法总结
2012-10-18 09:48 1730这里使用的是Spring2.5,需要的jar包:spring. ... -
Spring3.0 + 自定义注解实现操作日志记录功能
2012-03-12 09:34 1491最近项目组长分配给我一个任务,让我完成一个操作日志的管理功能。 ... -
spring mvc例子
2012-03-11 11:35 2074使用拦截器 和Struts2一样,Spring MVC也可以 ... -
在 Spring Bean 內取得 HttpServletRequest
2011-10-11 16:13 1228使用 Java 去開發 Web 應用程式時,大部份時候都會使用 ... -
spring3+freemark自定义标签
2011-10-09 18:27 2752<bean id="viewResolver& ... -
OpenSessionInViewFilter作用及配置
2011-06-15 10:31 1335摘自:http://www.yybean.com/opense ... -
spring httpinvoke 例子
2011-04-21 17:15 1205http://ajava.org/course/open/11 ... -
Spring基于注解的缓存配置--EHCache AND OSCache
2011-04-02 23:38 2342本文将构建一个普通工程来说明spring注解缓存的使用方式,关 ... -
使用 ActiveMQ 示例
2011-03-30 17:38 1366企业中各项目中相互协作的时候可能用得到消息通知机制。比如有 ... -
使用Spring HTTP invoker进行远程调用
2011-03-30 10:34 1695使用Spring HTTP invoker进行远程调用Spri ... -
Java Spring2.5 Remote Invoke HTTP Invoker远程调用
2011-03-30 08:42 1972近日,一个项目涉及到系统间接口调用,考虑到系统间用的都是j ...
相关推荐
使用 Spring 2.5 基于注解驱动的 Spring MVC 详解 本文将介绍 Spring 2.5 新增的 Spring MVC 注解功能,讲述如何使用注解配置替换传统的基于 XML 的 Spring MVC 配置。 Spring MVC 注解驱动 在 Spring 2.5 中,...
1. **注解驱动的Controller**:在Spring 2.5中,你可以使用`@Controller`注解来标记一个类作为Spring MVC的控制器。这个注解告诉Spring该类包含处理HTTP请求的方法。例如: ```java @Controller public class ...
总的来说,Spring MVC通过注解驱动的编程模型、强大的依赖注入和面向切面编程,提供了一种高效且灵活的Web应用开发方式。通过实践简单的例子,如创建控制器、处理HTTP请求、返回视图,可以快速上手并深入了解其工作...
2. **注解驱动开发** 在传统的Spring MVC中,我们需要XML配置文件来定义bean和它们之间的依赖关系。然而,通过使用注解,我们可以减少或消除XML配置,使得代码更简洁、可读性更强。常见的注解包括`@Controller`,`@...
本节将深入探讨Spring MVC的注解驱动机制、基础配置以及控制器的返回值分析。 首先,让我们来看看Spring MVC的基本配置。在Web.xml文件中,我们需要设置几个关键的元素来启动Spring MVC的应用: 1. `...
总的来说,Spring 2.5的注解驱动Spring MVC使得代码更加简洁,降低了维护成本,并提高了开发效率。随着Spring框架的不断发展,注解驱动的编程模型已成为主流,它简化了配置,增强了可读性和可测试性,极大地推动了...
注解驱动是Spring 2.5的一个重要特性,它简化了Spring MVC的应用程序开发过程。传统的Spring MVC应用程序通常需要在XML配置文件中进行大量的手动配置,包括定义各种Bean、配置请求映射等。这种方式虽然有效,但相对...
接下来,我们深入理解 Spring MVC 中的注解驱动配置: 1. **@Autowired** 注解:在 BbtForumController 类中,我们看到了 @Autowired 注解用于注入 BbtForumService 实例。这是 Spring 自动装配依赖的一种方式,它...
Spring 2.5的注解驱动Spring MVC极大地简化了框架的配置和使用,使得开发人员可以更专注于业务逻辑,而不是繁琐的配置工作。这种面向切面编程(AOP)的特性,以及对注解的广泛支持,使得Spring MVC成为了一个更加...
【基于注解的Spring MVC demo】是一个用于演示和学习如何在Spring MVC框架中使用注解进行Web应用开发的实例。...通过逐步学习和实践,你将能够掌握Spring MVC的注解驱动开发,从而提升你的Web应用开发能力。
1. **注解驱动的Spring MVC** 在传统的Spring MVC应用中,我们需要编写XML配置文件来声明控制器、服务层和数据访问层等组件。然而,通过使用注解,我们可以直接在类和方法级别声明这些组件,大大减少了配置文件的...
本demo展示了如何使用注解驱动的方式来构建一个简单的Spring MVC应用程序。注解使得代码更加简洁,减少了XML配置文件的工作量,提高了开发效率。 首先,我们需要了解Spring MVC的核心概念: 1. **...
ler 主要是处理 HTTP 请求,所以 @Controller 更具针对性,它标识了一个类作为 Spring MVC 的控制器。... ...随着 Spring 框架的不断发展,注解驱动的编程模式已经成为现代 Java Web 开发的标准实践。
- **注解驱动开发**:2.5.6版本已经支持注解驱动,如@Controller、@RequestMapping、@RequestParam等,使得代码更简洁。 - **AOP集成**:Spring MVC与Spring的面向切面编程(AOP)无缝集成,可以方便地实现事务...
在Spring MVC框架中,注解的使用极大地简化了配置,提高了开发效率。...在Springmvc02这个项目中,你可以找到更多关于这些注解的实际应用示例,通过学习和实践,将有助于深入理解Spring MVC的注解驱动开发模式。
这些库使得我们可以利用注解驱动的方式,轻松地实现基于Spring MVC的增删改功能。 总之,基于注解的Spring MVC提供了一种高效、简洁的方式来构建Web应用,尤其是在处理CRUD操作时。通过合理使用各种注解,可以极大...
在这个视频教程中,你可能将学习到如何配置Spring的XML上下文文件以启用注解驱动的配置,如何在Spring MVC中创建注解式的控制器并处理HTTP请求,以及如何通过Hibernate的注解来设计数据模型并执行CRUD操作。...
以上只是Spring MVC注解驱动开发的一部分知识点,实际应用中还有许多其他注解和配置,如`@RestController`、`@SessionAttributes`、`@Async`等,以及AOP(面向切面编程)、Spring Data JPA等集成技术。学习和熟练...