SpringMVC环境搭建
来源:互联网 发布:linux chkconfig命令 编辑:程序博客网 时间:2024/05/16 01:26
随着Annotation的流行,一些主流框架都加入了对Annotation的支持。使用Annotation能够简化很多配置工作,能够很大程度上提高程序开发的效率。下面主要讲解Sping MVC 注解功能,介绍如何使用注解配置替换传统的基于 XML 的 Spring MVC 配置。
SpringMVC model类似于Struts。在多线程服务对象这点上,Spring的Controller类似于Struts Action,只有一个实例处理所有客户的请求。然而,我们相信Spring的MVC比起Struts有很多优点,例如: Spring在controllers,JavaBean,models和views提供了一个非常清晰的划分。
Spring 的MVC是非常灵活的。不像Struts,它强制你的Action和Form对象进入固化的层次之中(因而迫使你使用Java的实体承), Spring MVC完全是基于接口的。而且,通过插入你自己的接口几乎Spring MVC 框架的所有部分都是可配置的。
基于注解的Controller 是如何定义做到这一点的
package xxx.user.web; ………………………… @Controller // <——① @RequestMapping("/user.html") //<——② public class UserController { private String showListUserPage = "user/listUser"; ……………………………………… @Resource // <——③ private UserManager userManger; @"RequestMapping(“/work/staff/addStaff.do”) //<——④ public String listUser(ModelMap model) { String roleMapJSON = UserConstants.getRoleMapJSON(); model.addAttribute("roleMapJSON", roleMapJSON); return showListUserPage; } ……………………… }
①@Controller注解标明该类需要Spring容器自动加载,将一个类成为 Spring 容器的 Bean。
②: @RequestMapping 这个注解使得该类具有了Spring MVC Controller 的功能。
@RequestMapping注解标识UserController处理来自/user.html的请求。
@RequestMapping 可以标注在类定义处,将 Controller 和特定请求关联起来;还可以标注在方法签名处(注解4后面详细介绍)。所以在类声明处标注的 @RequestMapping 相当于让 POJO 实现了 Controller 接口,而在方法定义处的 @RequestMapping 相当于让 POJO 扩展 Spring 预定义的 Controller(如 SimpleFormController 等)。
③:注解方式注入 UserManager
④: 此处又用了一个@RequestMapping注解,这里的这个注解是为了细粒度区分各个Controller方法,也就是说 listUser 这个方法来处理 /work/staff/addStaff.do的请求
此外,我们注意到此处返回值是一个String类型,Spring MVC会认为这是你告诉他返回的视图名称,当然此处你也可以返回一个ModelAndView类型,假若你什么也不返回-void,那么Spring会试图查找和你的请求URL同名的视图进行匹配(与配置文件相关)。
启用Spring MVC 功能
web.xml
Xml代码
……………………….
<!-- Spring MVC的Servlet,它将加载WEB-INF/annomvc-servlet.xml的配置文件,以启动Spring MVC模块 -->
<servlet> <servlet-name>spring</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/spring-servlet.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>spring</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping>
启用Spring MVC 注解功能
web.xml 中定义了一个名为 spring的 Spring MVC 模块,按照 Spring MVC 的契约,需要在 WEB-INF/spring-servlet.xml 配置文件中定义 Spring MVC 模块的具体配置。
Spring MVC 会自动加载 spring-servlet.xml 配置文件,要使用注解功能,主要对其进行配置。
<?xml version="1.0" encoding= "UTF-8"?><beansxmlns="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/mvchttp://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context-3.0.xsd"> <mvc:annotation-driven/> <context:component-scanbase-package="com.tgb.SpringMVC1"/> <beanclass="org.springframework.web.servlet.view.InternalResourceViewResolver"> <propertyname="viewClass"value="org.springframework.web.servlet.view.JstlView"/> <propertyname="prefix" value="/"></property> <propertyname="suffix" value=".jsp"></property> </bean> </beans>
图解
HandlerMapping
DispatcherServlet要将一个请求交给哪个特定的Controller,它需要咨询一个Bean——这个Bean的名字为“HandlerMapping”。
HandlerMapping是把一个URL指定到一个Controller上,(就像应用系统的web.xml文件使用<servlet-mapping>将URL映射到servlet)。
Spring带有三种HandlerMapping,(SpringMVC中的所有HandlerMapping都实现了接口org.springframework.web.servlet. HandlerMapping)。
ViewResolver
在Spring MVC中,当Controller将请求处理结果放入到ModelAndView中以后,DispatcherServlet会根据ModelAndView选择合适的视图进行渲染。那么在Spring MVC中是如何选择合适的View呢?View对象是是如何创建的呢?答案就在ViewResolver中,ViewResolver接口定义了resolverViewName方法,根据viewName创建合适类型的View实现。
<beanclass="org.springframework.web.servlet.view.InternalResourceViewResolver">
<propertyname="viewClass"value="org.springframework.web.servlet.view.JstlView"/>
<propertyname="prefix" value="/"></property>
<propertyname="suffix" value=".jsp"></property>
</bean>
Handleradapter
Spring MVC通过HandlerAdapter来实际调用处理函数。
以AnnotationMethodHandlerAdapter为例
DispatcherServlet中根据handlermapping找到对应的handler method后,首先检查当前工程中注册的所有可用的handlerAdapter,根据handlerAdapter中的supports方法找到可以使用的handlerAdapter。通过调用handlerAdapter中的handle方法来处理及准备handler method中的参数及annotation(这就是spring mvc如何将reqeust中的参数变成handle method中的输入参数的地方),最终调用实际的handle method。
- SpringMVC环境搭建
- SpringMVC环境搭建
- SpringMVC环境的搭建
- springmvc 入门环境搭建
- springMVC 4.1 环境搭建
- 搭建SpringMVC开发环境
- SpringMVC环境搭建
- springmvc环境的搭建
- springmvc 环境搭建
- springMVC环境搭建-1
- springMVC环境搭建-2
- springMVC环境搭建-3
- springMVC环境搭建-4
- springMVC环境搭建-5
- springMVC环境搭建-6
- springMVC之环境搭建
- springmvc+maven环境搭建
- SpringMvc环境搭建
- Exchange Server 2013 Get-HealthSet
- hdu 2203
- 使用WCF数据访问服务(第十九课)
- 《C语言现代方法》第一章编程题
- c# detected process waiting for input
- SpringMVC环境搭建
- json简介+实例
- Dark roads hdu2988 Kruskal
- 总结.Net学习
- Database Mirroring FAQ
- Java基础学习笔记之六(1)__常用类String
- Exchange Server 2013支持的共存方案
- SQL Server Journey with SQL Authority
- Two problems with QSystemTrayIcon