Spring mvc框架tutorial
2016-06-19 23:30
351 查看
Spring mvc框架tutorial
–翻译:MoringStar
spring web mvc框架提供了一个model-view-controller框架,在开发web应用的时候可以更加的灵活和松耦合。MVC被分隔成了不同的应用程序切面,在这些元素中提供松散的组合。
model包含了应用程序的数据,一般情况下由POJO简单java类组成.
view是数据的路由响应,一般由一html构成
controller响应用户请求,生成相关的model,同时路由到相关的页面
DispatcherServlet
spring mvc框架围绕着dispatcherServlet设计,dispatcherServlet处理了所有的http请求和响应,spring mvc的dispatcherServlet程序工作流如下面的图表:Created with Raphaël 2.1.0DispatcherServletHTTP requestHTTP requestDispatcherServletDispatcherServletHandlerMappingHandlerMappingContollerContollerviewResolerviewResolerviewviewrequestcontroller namerequestview nameview nameview initmodel datahtml
下面一连串事件为dispatcherServlet处理Http请求的情况:
在接收到一个http request,dispatcherServlet通过HandlerMapping找到对应的controller
Controller得到http request调用以Get,Post方法为基础的web服务方法,web服务方法会设置model的数据在基础的申明上,并且返回一个试图给dispatcherservlet
disoatcherServlet通过视图解析找到对应的view
当view被释放,dispatcherservlet通过把model的数据给view,最后路由到浏览器.
handlerMapping.,controller,viewResolver是applicationContext的web插件扩展webApplicationContext的一部分.
必须的配置
通过在web.xml文件配置url mapping配置DispatcherServlet去处理request请求,下面是一个简单的DispatcherServlet例子:<web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> <display-name>Spring MVC Application</display-name> <servlet> <servlet-name>HelloWeb</servlet-name> <servlet-class> org.springframework.web.servlet.DispatcherServlet </servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>HelloWeb</servlet-name> <url-pattern>*.jsp</url-pattern> </servlet-mapping> </web-app>
web.xml文件保存在web工程/WEB-INF目录下,通过上看的配置初始化了HelloWeb dispatcherServlet,这个框架会是这去夹在application context文件(通常被命名为[servlet-name]-servlet.xml在web-inf目录下),z我们配置一个叫做HelloWeb-servlet.xml.
下一步,通过
<Servlet-mapping>标签配置拦截的url信息,下面配置会拦截所有jsp请求.
如果你不想使用默认的文件名字和目录,可以单独配置路径在web.xml里面,配置如下:
<web-app...> <!-------- DispatcherServlet definition goes here-----> .... <context-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/HelloWeb-servlet.xml</param-value> </context-param> <listener> <listener-class> org.springframework.web.context.ContextLoaderListener </listener-class> </listener> </web-app>
现在,我们来配置基础的helloWeb-servlet.xml文件,在web-inf目录下:
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 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"> <context:component-scan base-package="com.tutorialspoint" /> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/jsp/" /> <property name="suffix" value=".jsp" /> </bean> </beans>
下面是配置文件的关键地方
- [servlet-name]-servlet.xml文件被用来创建bean的声明,会覆盖global scope下的任何bean的声明
-
<context:com...-scan...>标签配置springmvc的注解扫描,允许使用香@controller和@requestMapping的注解
- internalResourceViewResolver将声明视图解析请这里解析所有在/web-inf/jsp下文件后缀为jsp的文件.
controller
DispatcherServlet转发request给控制器,去执行特殊的函数方法。@Controller注解表示这个特殊的类是控制器。@RequestMapping注解标识了 url 映射。@Controller @RequestMapping("/hello") public class HelloController{ @RequestMapping(method = RequestMethod.GET) public String printHello(ModelMap model) { model.addAttribute("message", "Hello Spring MVC Framework!"); return "hello"; } }
@Controller注解声明了一个Spring mvc 控制器,@RequesrMapping表示了控制器方法拦截的 /hello路径。@RequestMapping(method=RequestMethod.GET)标识这个pringHtllo()方法是这么controller默认的执行HttpGet请求的方法。也可以声明一个同样的post请求方法在相同的url上.
@Controller public class HelloController{ @RequestMapping(value = "/hello", method = RequestMethod.GET) public String printHello(ModelMap model) { model.addAttribute("message", "Hello Spring MVC Framework!"); return "hello"; } }
springMvc支持许多不同的视图如(jsp,html,pdf,excel worksheets,xml,Velocity tenplates,xslt,json,aton,rss feeds,jasperreports…)
http://www.tutorialspoint.com/spring/spring_web_mvc_framework.htm
相关文章推荐
- 分享微信开发Html5轻游戏中的几个坑
- 一个jar包里的网站
- 一个jar包里的网站之文件上传
- 一个jar包里的网站之返回对媒体类型
- Spring和ThreadLocal
- Spring Boot 开发微服务
- Spring AOP动态代理-切面
- Spring整合Quartz(JobDetailBean方式)
- Spring整合Quartz(JobDetailBean方式)
- C# MVC模式下商品抽奖功能实现
- Zend的MVC机制使用分析(二)
- ASP.NET MVC 4 捆绑和缩小实例介绍
- ASP.NET Mvc开发之查询数据
- ASP.NET MVC中将控制器分离到类库的实现
- asp.net实现在非MVC中使用Razor模板引擎的方法
- ASP.NET MVC中的AJAX应用
- 为ASP.NET MVC及WebApi添加路由优先级
- ASP.NET MVC中图表控件的使用方法
- Asp.net mvc实时生成缩率图到硬盘