SPRING MVC
一,什么是spring mvc
spring mvc 是spring的后续产品,是一个mvc框架,通过实现model-view-controller 模式将数据,
业务,视图进行分离
spring mvc是围绕着dispatcherServlet这个核心控制器设计的,
DispatcherServlet负责将请求派发到特定的handler。通过可配置的handler mappings、
view resolution、locale以及theme resolution来处理请求并且转到对应的视图
Spring Web MVC是一种基于Java的实现了Web MVC设计模式的请求驱动类型的轻量级Web框架,
即使用了MVC架构模式的思想,将web层进行职责解耦,基于请求驱动指的就是使用请求-响应模型,
框架的目的就是帮助我们简化开发,Spring Web MVC也是要简化我们日常Web开发的。
二,为什么要spring mvc
a。实现了零配置,不用想以前那样在xml配置很多bean标签
b,通过注解现实依赖注入和url的注入
c,通过注解实现页面数据的封装,
三,如何使用spring mvc
a,先在web.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>
/conf/floor/dao/system_dao.xml
</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
b,就是在spring-servlet.xml上配置
1,启动spring mvc 注解
<context:annotation-config></context:annotation-config>
2,启动的时候,你要到这个包下面去扫描所有类的注解,将类生成实例放到ioc容器
<context:component-scan base-package="com.controller"></context:component-scan>
3,DefaultAnnotationHandlerMapping 通过注解,把一个URL映射到Controller类上
配置org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping
4,AnnotationMethodHandlerAdapter类,通过注解,把一个URL映射到Controller类的方法上
完成请求和注解POJO的映射
bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"/>
5,对转向页面的路径解析。prefix:前缀, suffix:后缀
bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"
p:prefix="/jsp/" p:suffix=".jsp" />
6, 设置json 格式,和编码
org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"设置返回格式和编
<property name="supportedMediaTypes">
<list>
<value>text/html;charset=UTF-8</value>
</list>
</property>
C,在程序中的使用
spring mvc的原理与struts的原理是相似的,都是基于mvc架构,都有一个控制页面请求的servlet
处理完后跳转到相应的页面
1,在一个处理请求的类头中要用注解@Controller 标示是控制类,类似struts的action
2,在控制类中要处理请求的方法上面需要写@requestMapping(请求的action)
括号里边可以是xx!xx,(action名!方法名)也可以是/xx(方法名,但要跟jsp的请求想对应)
3,也可以吧@requestMapping(请求的action)写在类体上,然后再该类的方法上写上请求的参数
例如:@RequestMapping(params = "method=2"[ method=RequestMethod.POST])
4,方法中的参数可以用@ModelAttribute 参数类型,参数
也可以是直接写上参数,但字段要跟jsp的请求字段保持一致
D,httpServletRequest 的获取
1,直接在方法上当做参数写入,就可以获取,httpServletResponse也是一样的
2,RequestAttributes ra = RequestContextHolder.getRequestAttributes();
HttpServletRequest request = ((ServletRequestAttributes)ra).getRequest();
response获取就比较麻烦了。。好像得些方法
E,spring mvc常用的注解有:
@Controller:用于标识是处理器类;
@RequestMapping:请求到处理器功能方法的映射规则;
@RequestParam:请求参数到处理器功能处理方法的方法参数上的绑定;
@ModelAttribute:请求参数到命令对象的绑定;
@SessionAttributes:用于声明session级别存储的属性,放置在处理器类上,通常列出模型属性
(如@ModelAttribute)对应的名称,则这些属性会透明的保存到session中;
@InitBinder:自定义数据绑定注册支持,用于将请求参数转换到命令对象属性的对应类型;
@CookieValue:cookie数据到处理器功能处理方法的方法参数上的绑定;
@RequestHeader:请求头(header)数据到处理器功能处理方法的方法参数上的绑定;
@RequestBody:请求的body体的绑定(通过HttpMessageConverter进行类型转换);
@ResponseBody:处理器功能处理方法的返回值作为响应体(通过HttpMessageConverter进行类型转换);
@ResponseStatus:定义处理器功能处理方法/异常处理器返回的状态码和原因;
@ExceptionHandler:注解式声明异常处理器;
@PathVariable:请求URI中的模板变量部分到处理器功能处理方法的方法参数上的绑定,从而支持RESTful
架构风格的URI;
F:spring mvc 处理请求的的流程
a,首先用户发送请求web容器,web容器根据URL路径映射到DispatcherServlet(url-pattern为/)进行处理;
b,DispatcherServlet——>BeanNameUrlHandlerMapping进行请求到处理的映射,
BeanNameUrlHandlerMapping将url路径直接映射到名字为url的Bean进行处理,
即HelloWorldController,BeanNameUrlHandlerMapping将其包装为HandlerExecutionChain
(只包括HelloWorldController处理器,没有拦截器);
c,DispatcherServlet——> SimpleControllerHandlerAdapter,SimpleControllerHandlerAdapter
将HandlerExecutionChain中的处理器(HelloWorldController)
适配为SimpleControllerHandlerAdapter;
d,SimpleControllerHandlerAdapter——> HelloWorldController处理器功能处理方法的调用,
SimpleControllerHandlerAdapter将会调用处理器的handleRequest方法进行功能处理,
该处理方法返回一个ModelAndView给DispatcherServlet;
e,hello(ModelAndView的逻辑视图名)——>InternalResourceViewResolver,
InternalResourceViewResolver使用JstlView,具体视图页面在/WEB-INF/jsp/hello.jsp;
f,JstlView(/WEB-INF/jsp/hello.jsp)——>渲染,将在处理器传入的模型数据(message=HelloWorld!)
在视图中展示出来;
h,返回控制权给DispatcherServlet,由DispatcherServlet返回响应给用户,到此一个流程结束。
四,spring mvc 用于做什么
五,struts2 和 spring mvc的区别:
1,spring mvc的核心控制器是dispatchServlet,是依赖于servlet api的,而
struts2 的核心控制器是fileDispatch或者是StrutsPrepareAndExecuteFilter(struts2 2.1.3之后),
是不依赖于servlet api
2,spring mvc是基于方法的设计,而sturts是基于类。也就是说:spring3 mvc是方法级别的拦截,
拦截到方法后根据参数上的注解,把request数据注入进去,在spring3 mvc中,
一个方法对应一个request上下文。
而struts2框架是类级别的拦截,每次来了请求就创建一个Action,然后调用setter getter方法
把request中的数据注入;struts2实际上是通过setter getter方法与request打交道的;
struts2中,一个Action对象对应一个request上下文。
3,struts有以自己的interceptor机制,spring mvc用的是独立的AOP方式
六,spring mvc的拦截器
spring mvc 它的主要作用是拦截用户的请求并进行相应的处理
定义Interceptor实现类
1,实现HandlerInterceptor接口
2,实现WebRequestInterceptor 接口
preHandle(): 在请求处理之前执行,该方法主要是用于准备资源数据的,
然后可以把它们当做请求属性放到WebRequest中。
在WebRequest 的父层接口RequestAttributes 中对它定义了三个常量:
SCOPE_REQUEST :它的值是0 ,代表只有在request 中可以访问。
SCOPE_SESSION :它的值是1 ,如果环境允许的话它代表的是一个局部的隔离的session,
否则就代表普通的session,并且在该session范围内可以访问。
SCOPE_GLOBAL_SESSION :它的值是2 ,如果环境允许的话,它代表的是一个全局共享的session,
否则就代表普通的session,并且在该session 范围内可以访问。
postHandle():该方法将在Controller执行之后,返回视图之前执行,ModelMap表示请求
Controller处理之后返回的Model对象,所以可以在这个方法中修改ModelMap的属性,
从而达到改变返回的模型的效果。
afterCompletion():该方法将在整个请求完成之后,也就是说在视图渲染之后进行调用,
主要用于进行一些资源的释放
分享到:
相关推荐
Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块。Spring MVC4是当前zuixin的版本,在众多特性上有了进一步的提升。, 在精通Spring...
Spring MVC 是一个基于Java的轻量级Web应用框架,它为开发者提供了模型-视图-控制器(MVC)架构,使开发人员能够更好地组织和分离应用程序的业务逻辑、数据处理和用户界面。Spring MVC是Spring框架的一个核心组件,...
Spring MVC 是一个强大的Java Web开发框架,它是Spring框架的一部分,专为构建高度可扩展和模块化的Web应用程序而设计。在2015年的版本中,Spring MVC 4已经相当成熟,提供了许多特性来简化开发流程并提高开发效率。...
这是一个基于Spring MVC、Mybatis和Spring框架实现的个人博客系统,涵盖了Web开发中的后端架构设计、数据库管理和前端展示等多个方面。以下将详细介绍这个系统的关键知识点: **1. Spring MVC** Spring MVC是Spring...
Spring MVC 是一个基于 Java 的轻量级 Web 开发框架,它是 Spring 框架的一个重要模块,主要用于构建 Web 应用程序的后端控制层。这个框架提供了模型-视图-控制器(MVC)设计模式的实现,简化了Java Web应用的开发...
Spring MVC 是一个基于 Java 的轻量级Web应用框架,它为构建模型-视图-控制器(MVC)架构的应用程序提供了强大的支持。在本压缩包中包含了一系列与Spring MVC相关的jar文件,这些文件是构建和运行Spring MVC项目所...
Spring MVC 是一个基于 Java 的轻量级 Web 开发框架,它是 Spring 框架的一部分,专门用于构建可扩展和模块化的 Web 应用程序。在提供的压缩包文件中,包含了 Spring MVC 开发所需的一些核心库,这些库是 Spring MVC...
在本项目中,我们主要探讨的是如何利用Spring MVC和Spring Security框架构建一个基本的无数据库登录系统。Spring MVC是Spring框架的一部分,用于处理Web应用程序的请求-响应模型,而Spring Security则是一个强大的...
Spring MVC 和 MyBatis 是两个在Java Web 开发中广泛使用的框架。Spring MVC 作为Spring框架的一部分,负责处理HTTP请求并转发到相应的业务逻辑,而MyBatis则是一个轻量级的持久层框架,用于简化数据库操作。整合这...
Spring MVC是Spring框架的一个核心模块,专为构建Web应用程序而设计。它提供了模型-视图-控制器(MVC)架构,使开发者能够有效地分离业务逻辑、数据处理和用户界面。在"Spring MVC 4.2.3"版本中,我们看到了一系列的...
Spring MVC 是一个基于Java的轻量级Web应用框架,它是Spring框架的重要组成部分,主要用于构建Web应用程序的后端控制器。这个"Spring MVC 基础实例源码01"的资源很可能是为了帮助初学者理解Spring MVC的核心概念和...
Java EE企业级应用开发教程(Spring+Spring MVC+MyBatis)SSM源码Java EE企业级应用开发教程(Spring+Spring MVC+MyBatis)SSM源码Java EE企业级应用开发教程(Spring+Spring MVC+MyBatis)SSM源码Java EE企业级应用...
**Spring MVC 4.2.4.RELEASE 中文文档** Spring MVC是Spring框架的一个核心组件,专注于构建Web应用程序。它提供了模型-视图-控制器(MVC)架构,帮助开发者组织和分离应用的业务逻辑、数据处理以及用户界面。...
Spring MVC是一种基于Java的实现了MVC设计模式的请求驱动类型的轻量级Web框架,使用了IoC容器,支持RESTful风格的应用程序开发。Spring MVC通过分离模型(Model)、视图(View)和控制器(Controller)来简化Web开发...
在IT行业中,Spring MVC 和 MyBatis 是两个非常重要的框架,它们分别负责Web应用程序的控制器层和数据访问层。Spring MVC 提供了模型-视图-控制器架构模式的实现,而MyBatis则是一个轻量级的SQL映射框架,用于简化...
Spring MVC是Spring框架的一个核心模块,专用于构建Web应用程序。这个"Spring MVC使用Demo"提供了实践操作,帮助开发者深入理解Spring MVC的开发环境配置、注解的使用以及工作原理。 首先,Spring MVC的设计模式...