springmvc框架

SpringMVC拦截器详解

淺唱寂寞╮ 提交于 2020-01-19 08:06:00
拦截器是每个Web框架必备的功能,也是个老生常谈的主题了。 本文将分析SpringMVC的拦截器功能是如何设计的,让读者了解该功能设计的原理。 重要接口及类介绍 1. HandlerExecutionChain类   由HandlerMethod和Interceptor集合组成的类,会被HandlerMapping接口的getHandler方法获取。 2. HandlerInterceptor接口      SpringMVC拦截器基础接口。  3. AbstractHandlerMapping   HandlerMapping的基础抽象类。 4. AsyncHandlerInterceptor   继承HandlerInterceptor的接口,额外提供了afterConcurrentHandlingStarted方法,该方法是用来处理异步请求。当Controller中有异步请求方法的时候会触发该方法。 楼主做过测试,异步请求先支持preHandle、然后执行afterConcurrentHandlingStarted。异步线程完成之后执行preHandle、postHandle、afterCompletion。 有兴趣的读者可自行研究。 5. HandlerInterceptorAdapter   实现AsyncHandlerInterceptor接口的抽象类

Springmvc架构

大兔子大兔子 提交于 2020-01-19 02:20:47
框架结构如下图: 架构流程: 1、用户发送请求至前端控制器DispatcherServlet 2、DispatcherServlet收到请求调用HandlerMapping处理器映射器。 3、处理器映射器根据请求url找到具体的处理器,生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet。 4、DispatcherServlet通过HandlerAdapter处理器适配器调用处理器 5、执行处理器(Controller,也叫后端控制器)。 6、Controller执行完成返回ModelAndView 7、HandlerAdapter将controller执行结果ModelAndView返回给DispatcherServlet 8、DispatcherServlet将ModelAndView传给ViewReslover视图解析器 9、ViewReslover解析后返回具体View 10、 DispatcherServlet对View进行渲染视图(即将模型数据填充至视图中)。 11、DispatcherServlet响应用户 组件说明 以下组件通常使用框架提供实现: •DispatcherServlet:前端控制器 用户请求到达前端控制器,它就相当于mvc模式中的c,dispatcherServlet是整个流程控制的中心

SpringMVC框架(一)

北城余情 提交于 2020-01-19 00:14:26
1、SpringMVC介绍 简单处理流程 2、入门程序 项目中的dao层 和pojo 通过数据库表使编译器自己生成 导入包 web.xml配置(前端控制器配置) springmvc.xml配置 controller层 jsp页面 3、Spring构架 我们写(配置)的是下面三个: 4、Springmvc配置三大组件 配置了视图解释器之后,下面的路径就不需要写长路径了。 5、SpringMVC + mybatis整合 整合目标 :控制层采用springmvc、持久层使用mybatis 先整合spring 和mybatis 之后将springmvc.xml粘贴上就好了,不需要整合。 6、查询商品列表 applicationContext.xml service层 controller层 7、参数绑定 实现列表中信息修改 7.1、默认参数绑定 service层 controller层 7…2、简单类型绑定 7.3、绑定pojo类型 将页面修改后的商品信息保存到数据库中。需要pojo中的变量名称和jsp 页面的name 属性一一对应。 service层 controller层 7.4、解决post提交乱码问题 7.5、绑定包装pojo 使用包装的pojo接收商品信息的查询条件 pojo类 controller层 jsp修改 7.6、自定义参数绑定 在商品修改页面可以修改商品的生产日期

SpringMVC

谁说我不能喝 提交于 2020-01-18 04:40:31
简介 Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块。使用 Spring 可插入的 MVC 架构,从而在使用Spring进行WEB开发时,可以选择使用Spring的Spring MVC框架或集成其他MVC开发框架,如Struts1(现在一般不用),Struts 2(一般老项目使用)等。 简单使用 注意:以下步骤及编写的内容不全,只为说明框架相关的步骤,内容作为参考,请勿直接CV,实际内容以自己项目中为准(例如XML的版本、Spring的版本等) 1.导入相关依赖 <!-- Spring的版本 --> <properties> <spring.version>4.3.20.RELEASE</spring.version> </properties> <!-- SpringMVC的依赖 --> <dependencies> <dependency> <!-- 属于SpringFrameWork项目 --> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <!-- 与properties中的Spring的版本一致 --> <version>$

SpringMVC的执行流程

谁都会走 提交于 2020-01-17 08:16:46
文章目录 SpringMVC的执行流程 **springMVC是什么:** SpringMVC的执行流程 1.用户请求进来,会先经过Dispatcherservlet (中央处理器) 2.Dispatcherservlet 去请求HandlerMapping找到具体的Handler(就是对应的RequestMapping)并返回给DispatcherServlet 3.Dispatcherservlet本身是不能直接调用Handler的,只能通过HandlerAdatper(处理器适配器)去调用,Handler处理完之后会返回一个ModelAndView给DispatcherServlet 4.Dispatcherservlet去找ViewResolver(视图解析器),视图解析器处理完之后返回一个view 5.Dispatcherservlet在将这个视图进行渲染(即将模型数据填充至视图中) 6.最后返回给页面 很多人可能对执行流程有疑惑,解释一下各个组件的作用 1. 前端控制器DispatcherServlet 作用:接收请求,响应结果,相当于转发器,中央处理器。有了dispatcherServlet减少了其它组件之间的耦合度。 用户请求到达前端控制器,它就相当于mvc模式中的c,dispatcherServlet是整个流程控制的中心,由它调用其它组件处理用户的请求

struts2和springmvc的区别

北城余情 提交于 2020-01-17 05:29:00
struts2和springmvc的区别 一、拦截机制的不同   Struts2是类级别的拦截,每次请求就会创建一个Action,和Spring整合时Struts2的ActionBean注入作用域是原型模式prototype,然后通过setter,getter吧request数据注入到属性。Struts2中,一个Action对应一个request,response上下文,在接收参数时,可以通过属性接收,这说明属性参数是让多个方法共享的。Struts2中Action的一个方法可以对应一个url,而其类属性却被所有方法共享,这也就无法用注解或其他方式标识其所属方法了,只能设计为多例。   SpringMVC是方法级别的拦截,一个方法对应一个Request上下文,所以方法直接基本上是独立的,独享request,response数据。而每个方法同时又何一个url对应,参数的传递是直接注入到方法中的,是方法所独有的。处理结果通过ModeMap返回给框架。在Spring整合时,SpringMVC的Controller Bean默认单例模式Singleton,所以默认对所有的请求,只会创建一个Controller,有应为没有共享的属性,所以是线程安全的,如果要改变默认的作用域,需要添加@Scope注解修改。   Struts2有自己的拦截Interceptor机制

SpringMVC源码阅读:拦截器

纵然是瞬间 提交于 2020-01-17 05:20:09
1.前言 SpringMVC是目前J2EE平台的主流Web框架,不熟悉的园友可以看 SpringMVC源码阅读入门 ,它交代了SpringMVC的基础知识和源码阅读的技巧 本文将通过源码(基于Spring4.3.7)分析,弄清楚SpringMVC如何完成视图解析的 2.源码分析 在 SpringMVC源码阅读:拦截器 分析 过doDispatch的运行过程,这里再分析一遍 回到DispatcherServlet类的doDispatch方法,看看doDispatch如何获取ModelAndView HandlerMapping根据request获得HandlerExecutionChain 根据HandlerExecutionChain获取HandlerAdapter HandlerAdapter根据request,response和HandlerExecutionChain调用handle方法返回ModelAndView 然后交由 processDispatchResult 处理 1023行检测从doDispatch方法运行到此是否有异常 1037行根据ModelAndView渲染视图 1259根据视图名称解析成View对象 1282行调用AbstractView的render方法进行渲染 点进去,这里以解析ftl做测试 301行创建包含动态值和静态属性的Map

springMVC + Spring + MyBatis 整合

一曲冷凌霜 提交于 2020-01-16 17:54:31
整理下SSM(基于注解)的整合 1. web.xml 配置文件 1 <?xml version="1.0" encoding="UTF-8"?> 2 <web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 5 http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> 6 7 <!-- log4j 配置 --> 8 <context-param> 9 <param-name>log4jConfigLocation</param-name> 10 <param-value>classpath:log4j.properties</param-value> 11 </context-param> 12 <context-param> 13 <param-name>log4jRefreshInterval</param-name> 14 <param-value>60</param-value> 15 </context-param> 16 <listener>

SpringMVC 入门

本秂侑毒 提交于 2020-01-16 05:35:29
MVC 简介 1、MVC 是一种架构模式 程序分层,分工合作,既相互独立,又协同工作,分为三层:模型层、视图层和控制层 2、MVC 是一种思考方式 View:视图层,为用户提供UI,重点关注数据的呈现,为用户提供界面 Model:模型层,业务数据的信息表示,关注支撑业务的信息构成,通常是多个业务实体的组合 Controller:控制层,调用业务逻辑产生合适的数据(Model),传递数据给视图用于呈现 MVC 设计模式在 B/S 下的应用: ①:浏览器发送请求到控制器(这里要知道控制器的作用) ②:控制器不能处理请求必须交给模型层来处理接着去访问数据库 ③:模型层将处理好的结果返回给控制层 ④:控制层将逻辑视图响应给浏览器(浏览器显示的是渲染过的视图) MVC 本质:MVC 的核心思想是业务数据抽取同业务数据呈现相分离;分离有利于程序简化,方便编程 前端控制器模式 前端控制器模式(Front Controller Pattern)是用来提供一个集中的请求处理机制,所有的请求都将由一个单一的处理程序处理。该处理程序可以做认证/授权/记录日志,或者跟踪请求,然后把请求传给相应的处理程序。 前端控制器(Front Controller)- 处理应用程序所有类型请求的单个处理程序,应用程序可以是基于 web 的应用程序,也可以是基于桌面的应用程序。 调度器(Dispatcher) -

struts2和springmvc的区别

我只是一个虾纸丫 提交于 2020-01-16 05:02:20
一、拦截机制的不同   Struts2 是 类级别 的拦截,每次请求就会创建一个Action,和Spring整合时Struts2的ActionBean注入作用域是原型模式prototype,然后通过setter,getter吧request数据注入到属性。 Struts2中,一个Action对应一个request,response上下文,在接收参数时,可以通过属性接收,这说明属性参数是让多个方法共享的。 Struts2中Action的一个方法可以对应一个url,而其类属性却被所有方法共享,这也就无法用注解或其他方式标识其所属方法了,只能设计为多例。    SpringMVC是 方法级别 的拦截,一个方法对应一个Request上下文,所以方法直接基本上是独立的,独享request,response数据。而每个方法同时又何一个url对应,参数的传递是直接注入到方法中的,是方法所独有的。处理结果通过ModeMap返回给框架。 在Spring整合时,SpringMVC的Controller Bean默认单例模式Singleton,所以默认对所有的请求,只会创建一个Controller,有应为没有共享的属性,所以是线程安全的,如果要改变默认的作用域,需要添加@Scope注解修改。    Struts2有自己的拦截Interceptor机制,SpringMVC这是用的是独立的Aop方式