- 浏览: 140489 次
- 性别:
- 来自: 天津
文章分类
最新评论
-
liuxiang00435057:
不知道,你有这个的实现不,能发给我参考下吗,liuxiang0 ...
RBAC模型的通用权限管理系统的设计(数据模型)的扩展 -
步青龙:
这个批量上传确定可以用吗?我这怎么不行呢,官方的Demo也不行 ...
KindEditor 4.1 发布,开源HTML编辑器
文章转自http://www.cnblogs.com/zhaoyang/archive/2012/01/07/2315425.html
建立一个web project,并导入spring 3.x的jar包
配置web.xml
根据上面的spring mvc流程图,我们知道DispatcherServlet是spring mvc 的一个前端控制器,所以我们当然要去配置它,以便于将请求转给DispatcherServlet处理
<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<!-- 如果配置文件位于classpath下,可以这么写: classpath:dispatcher.xml -->
<param-value>/WEB-INF/dispatcher.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
注:由于DispatcherServlet在初始化的过程中需要一个配置文件来生产文件中的各种bean,并生成 WebApplicationContext对象,保存到ServletContext中(如果DispatcherServlet有多个,那么每一个 DispatcherServlet都对应一个WebApplicationContext),我们可以在Servlet的init-param中配置配 置文件的路径,当然如果我们没有配置Init-Param,它会默认到WEB-INF的文件夹中找[servletname]-servlet.xml文 件,例如上面如果我们没有配置,则会去寻找dispatcher-servlet.xml这个配置文件。(在init-param中我们可以指定多个配置 文件,用逗号分隔也可以使用通配符*)
配置上文中我们指定的所需的dispatcher.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"
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/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" >
<context:component-scan base-package="com.controls" />
<mvc:annotation-driven />
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" >
<property name="prefix" value="/WEB-INF/views/" ></property>
<property name="suffix" value=".jsp" ></property>
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView" ></property>
</bean>
</beans>
配置文件说明:
<context:component-scan base-package="com.controls" />
由于我们使用了基于注解的Controller,所以这里指定了需要被扫描的包路径,如果有多个可以使用逗号分隔
<mvc:annotation-driven />
上面的spring mvc流程图中我们知道DispatcherServlet接管请求后,会由HandlerMapping来执行映射,所以我们需要注册 HanlderMapping,比如上面的标签会自动注册比如DefaultAnnotationHandlerMapping(执行请求到 Controller的映射)和AnnotationMethodHandlerAdapter(调用controller中的方法)这样的bean,当 然这个标签还提供了其他的一些支持(更多介绍请参照spring官方文档第455页)。
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" >
<property name="prefix" value="/WEB-INF/views/" ></property>
<property name="suffix" value=".jsp" ></property>
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView" ></property>
</bean>
上面spring mvc流程图的最后controller处理完毕后会交给一个ViewResolver进行处理,大体上是解析视图逻辑名并经过一定的处理获取一个视图, 这里的意思是设置视图用jsp来处理(比如我们设置viewClass为JstlView)来进行处理,就是以forward的形式转发给jsp,这个地 址是:/WEB-INF/views/[controller返回值].jsp ,当然视图解析器可以定义多个,(视图解析器不会处理ModelAndView中已经设置了View的请求,因为已经有View来处理了,那当然就不需要 它来解析到真正的视图View啦)
编写Controller控制器
这里我们使用例子的形式来说明
实现一个控制器类
@Controller
@RequestMapping("/user")
public class UserControl {
}
只要给类加上Controller的注解,并放在被扫描的包中,那么这个类就是一个控制器了,RequestMapping表明匹配的路径,可以写 在类或者类的方法上,如果类上面有RequestMapping注解,那么其下面的方法就是相对于类上面注解地址的一个相对路径
定义一个接管请求的方法
方法名:无任何要求
--------------------------------------------------------------
参数:(顺序以及个数无任何要求)
HttpServletRequest
HttpServletResponse
PrintWriter 相当于HttpResponse.getWriter()获得的对象
Map 其实是获得了ModelAndView中的Model
BindingResult 绑定数据的处理结果
HttpSession 如果使用此参数,需要注意如果是第一次访问还没有session的话会报错
@PathVariable 用于接收路径变量
@RequestParam 相当于调用request.getParameter(“name”)方法
@CookieValue 获取cookie的值
@RequestHeader 获取header中的值
实体对象 会根据请求的参数名,注入到这个对象对于得属性中,必须提供set方法
等等等等等
--------------------------------------------------------------
返回值:
void
返回值是void,如果接收了PrintWriter 或者 HttpServletResponse 参数,那么返回的ModelAndView就是null,也就是直接将输出流输出到客户端,如果方法没有接收输出参数,后面会默认生成一个视图名
String 视图逻辑名
ModelAndView 是一个视图逻辑名+Map的封装类
其他任意类型 存入ModelAndView中的Model
--------------------------------------------------------------
不管我们的返回类型是什么,返回值会通过处理,最终返回一个ModelAndView或者null
例1:给方法定义一个请求映射并使用路径变量
@RequestMapping("/id/{userid}/name/{username}")
public String queryUser(@PathVariable("userid") long userID
, @PathVariable("username") String userName
, Map<String, User> model) {
User user = new User();
user.setUserID(userID);
user.setUserName(userName);
model.put("userInfo", user);
return "Home";
}
@RequestMapping定义路由映射,其中{userid} {username} 是PathVariable(路径变量)
这样我们只需访问 http://localhost:8080/SpringMVC/user/id/10001/name/liudehua 就能进入上面的方法
RequestMapping还可以使用通配符,如: /test/*/name/{name}
例2:接受请求参数
@RequestMapping("/save")
public String save(@RequestParam("userName") String userName
,@RequestParam("Age") int age) {
System.out .println(userName);
System.out .println(age);
return "Home";
}
例3:请求参数直接注入到Model
@RequestMapping("/save")
public String save(User user) {
System.out .println(user.getUserID());
System.out .println(user.getUserName());
return "Home";
}
例4:转发与重定向
转发: (相当于 request.getRequestDispatcher(“”).forward(request, response))
return “forward:/user/test”;
重定向: (相当于response.redirect(“”))
return “redirect:/user/test”
return “redirect:http://www.google.com.hk”;
例5:根据HttpMethod来过滤请求
@RequestMapping(value="", method=RequestMethod.POST )
public String Test(//…) {
//…
}
例6:根据参数来进行过滤
@RequestMapping(params="hello=world", method={RequestMethod.GET, RequestMethod.POST})
public String helloworld() {
}
必须有个hello的参数并且名称为world,而且只能是get或post请求才会进入此方法
发表评论
-
Spring参考手册 mvc:resources
2012-05-23 16:47 1405This tag allows static resource ... -
再析在spring框架中解决多数据源的问题
2012-05-15 00:48 854转自:http://www.iteye.c ... -
Spring mvc aop to get request and response
2012-05-15 00:04 2533@Aspect public class ... -
Spring线程安全
2012-05-14 16:00 1050Spring管理的对象基本都应该是无状态的 ,spring ... -
spring3.X mvc 应用Session属性的策略
2012-05-14 14:00 1105喜好读书,就便是把生活生计中寂寞的辰光换成重大享受的时刻。本文 ... -
使用 Spring 2.5 基于注解驱动的 Spring MVC
2012-05-14 10:19 694转自:https://www.ibm.com/de ... -
HibernateDaoSupport的getSession()与HibernateTemplate的差别
2012-05-11 13:43 886在 Spring+Hibernate的集成环境里,如果DA ... -
Srping MVC 入门 @ResponseBody & @RequestBody
2012-05-11 09:33 908转自:http://www.cnblogs.com/zhaoy ... -
AOP的代理区分 (Java动态代理和CGLIB代理)
2012-05-03 16:00 920第一种代理即Java的动态代理方式上一篇已经分析,在这里不 ... -
Spring AOP 概念理解及@AspectJ支持
2012-05-03 15:23 1611Spring AOP 概念理解及@AspectJ ... -
SpringMVC框架学习
2012-01-17 09:58 593此文章转自 http://www.blogjava.net/ ...
相关推荐
《Spring3.x企业应用开发实战》是在《精通Spring2.x——企业应用开发详解》的基础上,经过历时一年的重大调整改版而成的,本书延续了上一版本追求深度,注重原理,不停留在技术表面的写作风格,力求使读者在熟练...
《Spring3.x企业应用开发实战》是在《精通Spring2.x——企业应用开发详解》的基础上,经过历时一年的重大调整改版而成的,本书延续了上一版本追求深度,注重原理,不停留在技术表面的写作风格,力求使读者在熟练...
======================================================================== <br>第1篇 概述 第1章 Spring概述 第2章 快速入门 第2篇 Spring核心技术 第3章 IoC容器概述 第4章 在IoC容器中...
======================================================================== <br>第1篇 概述 第1章 Spring概述 第2章 快速入门 第2篇 Spring核心技术 第3章 IoC容器概述 第4章 在IoC容器中...
spring-3.x-web-app-template Spring 3.x MVC 应用程序入门模板 运行应用程序 gradle jettyRun 打开浏览器
======================================================================== <br>第1篇 概述 第1章 Spring概述 第2章 快速入门 第2篇 Spring核心技术 第3章 IoC容器概述 第4章 在IoC容器中...
3.Spring 3.x企业应用开发实战 4.spring+MVC中文教程pdf 5.Spring2.5.中文帮助文档 6.SpringGuide 7.SpringMVC配置文件 8.Spring从入门到精通 9.spring详细注解 10.精通Spring(清晰书页版) 11.使用注解方式配置的...
第二部分 点睛Spring MVC 4.x 第4 章 Spring MVC 基础 .... .......................... 72 第三部分 实战Spring Boot 第5 章 Spring Boot 基础 .... ......................... 122 第6 章 Spring Boot 核心 .... ....
第二部分 点睛Spring MVC 4.x 第4 章 Spring MVC 基础 .... .......................... 72 第三部分 实战Spring Boot 第5 章 Spring Boot 基础 .... ......................... 122 第6 章 Spring Boot 核心 .... ....
出版社名称: 电子工业出版社 作者: 汪云飞 书名: JavaEE开发的颠覆者 Spring Boot实战 ISBN编号: 9787121282089 第一部分 点睛Spring 4.x 第1 章 Spring 基础 ..........................................2 1.1 ...
23.6.1. 加载YAML ii. 23.6.2. 在Spring环境中使用YAML暴露属性 iii. 23.6.3. Multi-profile YAML文档 iv. 23.6.4. YAML缺点 vii. 23.7. 类型安全的配置属性 i. 23.7.1. 第三方配置 ii. 23.7.2. 松散的绑定...
6.3 将Spring与Struts 1.x集成 220 6.3.1 问题 220 6.3.2 解决方案 220 6.3.3 工作原理 220 6.4 将Spring与JSF集成 226 6.4.1 问题 226 6.4.2 解决方案 226 6.4.3 工作原理 227 6.5 将Spring与DWR...
29.5.1 ActiveDirectoryLdapAuthenticationProvider 228 活动目录错误代码 229 30. JSP标签库 230 30.1声明Taglib 230 30.2授权标签 230 30.2.1禁用测试的标签授权 231 30.3认证标签 232 30.4 accesscontrollist标签...
spring2.x学习代码,有很多例子,入门的hello例子,到AOP到MVC都有。
SpringMVC Java Web Maven项目 目录 Introduction 本意是打算从最基础,最简单的springMVC项目走起,先是最简单的,然后在最简单的基础上,继续一步步的添加,逐渐...IntelliJ IDEA 2017.1 x64 漫漫人生路 About Me
6.3 将Spring与Struts 1.x集成 220 6.3.1 问题 220 6.3.2 解决方案 220 6.3.3 工作原理 220 6.4 将Spring与JSF集成 226 6.4.1 问题 226 6.4.2 解决方案 226 6.4.3 工作原理 227 6.5 将Spring与DWR...
在当今Java EE 开发中,Spring 框架是当之无愧的王者。而Spring Boot 是Spring 主推的基于“习惯优于配置”的原则,让你能够快速搭建应用的框架,从而...A.1 基于JHipster 的代码生成 485 A.2 常用应用属性配置列表 488
在当今Java EE 开发中,Spring 框架是当之无愧的王者。而Spring Boot 是Spring 主推的基于“习惯优于配置”的原则,让你能够快速搭建应用的框架,从而...A.1 基于JHipster 的代码生成 485 A.2 常用应用属性配置列表 488
在当今Java EE 开发中,Spring 框架是当之无愧的王者。而Spring Boot 是Spring 主推的基于“习惯优于配置”的原则,让你能够快速搭建应用的框架,从而...A.1 基于JHipster 的代码生成 485 A.2 常用应用属性配置列表 488