Spring MVC是Spring系列框架中使用频率最高的部分.不管是Spring Boot还是传统的Spring项目,只要是Web项目都会使用到Spring MVC部分.因此程序员一定要熟练掌握MVC部分.本篇博客简要分析Spring MVC处理一个请求的流程. 一个请求从客户端发出到达服务器,然后被处理的整个过程其实是非常复杂的.本博客主要介绍请求到达服务器被核心组件DispatcherServlet处理的整理流程(不包括Filter的处理流程). 1. 处理流程分析 Servlet处理一个…
简介 这两个星期都在看spring mvc源码,看来看去还是还是很多细节没了解清楚,在这里把看明白的记录下,欢迎在评论中一起讨论. 一.铺垫 spring mvc是基于servlet的,在正式分析之前,我们来看一下servlet的知识.servlet的生命周期通过三个方法init.service.destory来构建的. init(): 在Servlet的生命周期中,仅执行一次init()方法.它是在服务器装入Servlet时执行的,负责初始化Servlet对象.可以配置服务器,以在启动服务器或…
一.SpringMVC常用注解 @Controller 声明Action组件 @Service    声明Service组件    @Service("myMovieLister")  @Repository 声明Dao组件 @Component   泛指组件, 当不好归类时.  @RequestMapping("/menu")  请求映射 @Resource  用于注入,( j2ee提供的 ) 默认按名称装配,@Resource(name="beanNa…
原文:http://blog.csdn.net/he90227/article/details/52262163 什么是异步模式 如何在Spring MVC中使用异步提高性能? 一个普通 Servlet 的主要工作流程大致如下: 用户查询开始到返回结果到页面,此处是一个同步的过程,如果做成异步的能提高系统响应的性能 以下3个步骤都在同一个线程中完成 --- 同步阻塞 --- 请求等待 首先,Servlet 接收到请求之后,可能需要对请求携带的数据进行一些预处理: 接着,调用业务接口的某些方法,以…
方案简写,自己或有些基础的可以看懂,因为没时间写的那么详细 方案1 spring mvc解决get请求中文乱码问题, 在tamcat中server.xml文件 URIEncoding="UTF-8"useBodyEncodingForURI="true" 为了确保get数据采用UTF8编码 @ModelAttribute 方案2. tomcat的服务器的默认编码是ISO8859-1,所以在容器中获取的请求数据可以重新编码显示 例如你在控制层 controller 获…
Spring MVC中forward请求转发2种方式(带参数) http://www.51gjie.com/javaweb/956.html  …
Spring mvc 启动 和 请求分发 启动加载: abstract class HttpServletBean extends HttpServlet void init() initServletBean(); abstract class FrameworkServlet extends HttpServletBean void initServletBean() WebApplicationContext initWebApplicationContext() onRefresh(wa…
开源项目推荐 Pepper Metrics是我与同事开发的一个开源工具(https://github.com/zrbcool/pepper-metrics),其通过收集jedis/mybatis/httpservlet/dubbo/motan的运行性能统计,并暴露成prometheus等主流时序数据库兼容数据,通过grafana展示趋势.其插件化的架构也非常方便使用者扩展并集成其他开源组件. 请大家给个star,同时欢迎大家成为开发者提交PR一起完善项目. 从一个最简单的Spring Boot…
Spring MVC工作流程图   图一   图二    Spring工作流程描述       1. 用户向服务器发送请求,请求被Spring 前端控制Servelt DispatcherServlet捕获:       2. DispatcherServlet对请求URL进行解析,得到请求资源标识符(URI).然后根据该URI,调用HandlerMapping获得该Handler配置的所有相关的对象(包括Handler对象以及Handler对象对应的拦截器),最后以HandlerExecuti…
目录 一.获取URL中路径参数 1.1 @PathVariable 注解 1.2 @PathParam 注解 二.获取请求参数: 2.1 GET请求 2.1.1 获取请求中的单个参数:@RequestParam 注解和方法入参 2.2.2 获取请求中的所有参数和单个参数 2.2 POST请求 2.2.1 注解: @RequestBody 三.各种方式对请求的要求: 3.1 Controller 的方法的形参 3.2 通过 HttpServletRequest 接收 3.3 通过一个 bean 3…
Spring MVC是一款Web MVC框架,是目前主流的Web MVC框架之一. Spring MVC工作原理简单来看如下图所示: 接下来进行Spring MVC的配置 首先我们配置Spring MVC先要引进相关的jar包 我们需要有一个处理器,即Controller层,并将它配置到ioc中,当用户访问一个路径是,前端控制器拦截后会产生一个handler映射到ioc容器中,如果有匹配的RequestMapping就会访问这个方法,否则产生404异常. @Controller public c…
对于那些会以多线程运行的单例类(比如spring mvc中的controller,dao,service): 局部变量不会受多线程影响 成员变量会受到多线程影响 如果方法里有成员变量,只有读操作,不受影响:存在写操作,考虑多线程影响值. 例如Web应用中的Servlet,每个方法中对局部变量的操作都是在线程自己独立的内存区域内完成的,所以是线程安全的. 而web中每个请求都是单独的线程,即使同时访问同一个Controller对象,因为并没有修改Controller对象,相当于针对Controll…
由于公司开源框架选用的spring+spring mvc + mybatis.使用这些框架,网上都有现成的案例:需要那些配置文件.每种类型的配置文件的节点该如何书写等等.如果只是需要项目能够跑起来,只要按照网上的例子依葫芦画瓢就可,项目也能够运行起来.但是对于有长远目标的人来说,一件事应当知其然更要知其所以然.所以结合网上的其他人阅读spring源码的经验(网上很多人的阅读经验是按照spring分出的那些模块[七大模块:core,context,dao,orm,web,aop,web mvc]来…
目录 1. 概述 2. 详解 2.1 处理查询参数 2.2 处理路径参数接受输入 2.3 处理表单 3. 补充内容 3.1 Ajax/JSON 输入 3.2 multipart参数 3.3 接收 header 数据 1. 概述 Spring MVC 允许以多种方式将客户端的数据传送到控制器的处理方法中: 查询参数(Query Parameter) 表单参数(Form Parameter) 路径变量(Path Variable) 2. 详解 2.1 处理查询参数 查询参数都是String类型的,但…
在spring mvc3.2及以上版本增加了对请求的异步处理,是在servlet3的基础上进行封装的. 1.修改web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001…
MVC处理过程 spring MVC架构模式都进行了分层设计如下 数据访问接口:DAO层 处理业务逻辑层:service层 数据实体:POJO 负责前端请求的接受并处理:servlet 负责前端页面展示:JSP 这种框架就是MVC设计模式,它是软件工程中的一种软件架构模式.它强制性地使软件系统的输入,处理和输出分开,把软件系统分为基本三个部分: 模型(model):模型对象拥有最多的处理任务,是应用程序的主题部分,它负责数据逻辑(业务规则)的处理和实现数据操作(即在数据库中存取数据).对应组件:…
文件结构: SpringMVC05 // 应用程序名 ----index.html // 欢迎文件,主目录下的文件可以被URL直接访问到 ----WEB-INF // 这个目录下的文件将被保护起来不能直接被URL访问 --------web.xml // 应用的配置文件 --------classes // 放置Java类文件 --------config // 这是指定的SpringMVC配置文件的路径 --------jsp // 放置不想被URL直接访问的静态文件 --------lib…
spring接收请求参数: 1,使用HttpServletRequest获取 @RequestMapping("/login.do") public String login(HttpServletRequest request){ String name = request.getParameter("name") String pass = request.getParameter("pass") }  2,Spring会自动将表单参数注入到…
CSRF CSRF(Cross-site request forgery跨站请求伪造,也被称为“One Click Attack”或者Session Riding,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用.尽管听起来像跨站脚本(XSS),但它与XSS非常不同,并且攻击方式几乎相左.XSS利用站点内的信任用户,而CSRF则通过伪装来自受信任用户的请求来利用受信任的网站.与XSS攻击相比,CSRF攻击往往不大流行(因此对其进行防范的资源也相当稀少)和难以防范,所以被认为比XSS更具危险…
一. 前言 Spring容器主要分为两类BeanFactory和ApplicationContext,后者是基于前者的功能扩展,也就是一个基础容器和一个高级容器的区别.本篇就以BeanFactory基础容器接口的默认实现类XmlBeanFactory启动流程分析来入门Spring源码的学习. 二. 概念要点 1. 概念定义 BeanDefinition:Bean元数据描述,Bean在Spring IOC容器中的抽象,是Spring的一个核心概念 DefaultListableBeanFactor…
Spring MVC的执行流程 一.名词解释 1.前端控制器(DispatcherServlet) 接收请求,响应结果,相当于转发器,中央处理器 2.处理器映射器(HandlerMapping) 根据请求的url查找Handler(处理器/Controller) 可以通过XML和注解方式实现映射. 3.处理器适配器(HandlerAdapter) 按照HandlerAdapter所要求的规则执行Handler 4.处理器Handler(也称之为Controller) 接收用户请求信息,调用业务方…
一. 前言 Spring容器主要分为两类BeanFactory和ApplicationContext,后者是基于前者的功能扩展,也就是一个基础容器和一个高级容器的区别.本篇就以BeanFactory基础容器接口的默认实现类XmlBeanFactory启动流程分析来入门Spring源码的学习. 二. 概念要点 1. 概念定义 BeanDefinition:Bean元数据描述,Bean在Spring IOC容器中的抽象,是Spring的一个核心概念 DefaultListableBeanFactor…
前面文章中,我们已经完成了OSGI应用中Spring.Mybatis.Spring MVC的整合,本篇文章我们就在这个基础上来完成一个简单的登录应用,其中用户名和密码需要从数据库中查询. 前面文章中,我们已经搭建好的工作空间如下图所示: 本篇文章中,我们只需要在com.csdn.osgi.user.web工程中添加页面及Controller即可. 首先新增一个登录界面,文件路径为在WebContent/WEB-INF/jsp/login.jsp,内容如下: <%@ page language=&qu…
发送post请求到controller处理失败,报错日志如下: java.lang.IllegalStateException: getInputStream() has already been called for this request at org.apache.catalina.connector.Request.getReader(Request.java:1212) at org.apache.catalina.connector.RequestFacade.getReader(…
前言 面试的时候经常被问到RPC相关的问题,例如:你说说RPC实现原理.让你实现一个RPC框架应该考虑哪些地方.RPC框架基础上发起一个请求是怎样一个流程等等.所以这次我就总结一波RPC的相关知识点,提前说明一下,本篇文章只是为了回答一些面试问题,所以只是解释原理,并不会深入挖掘细节. 注册中心 RPC(Remote Procedure Call)翻译成中文就是$\color{red}{远程过程调用}$.RPC框架起到的作用就是为了实现,调用远程方法时,能够做到和调用本地方法一样,让开发人员更专…
Asp.net Mvc是当前使用比较多的web框架,也是比较先进的框架.我打算根据自己的实际项目经验以及相关的源码和一些使用Asp.net Mvc的优秀项目(主要是orchard)来说一说自己对于Asp.net Mvc原理的理解和一些实践经验.目前.net的大部分源码都已经开放,这大大方便了我们对Asp.net Mvc的分析,下面就从Http请求进入Mvc框架处理之前的基本流程说起. 由于各IIS版本和工作模式(经典模式.集成模式)的不同,Http请求进入Asp.net的处理通道并不一样,这里不…
在了解Spring 文件上传执行流程之前,我们必须知道两点: 1.Spring 文件上传是基于common-fileUpload 组件的,所以,文件上传必须引入此包 2.Spring 文件上传需要在XML中配置文件上传解析器,不然程序无法执行判别 带领着这几个问题去分析Spring 文件上传: 1.文件上传解析器什么时候被初始化,在哪里被DispatcherServlet 引用 2.如何判别我们的请求上传文件的请求 3.传统的fileUpload与Spring被包装后的文件上传比较 问题抛出:…
写在前面 上回我们讲了spring security整合spring springmvc的流程,并且知道了spring security是通过过滤器链来进行认证授权操作的.今天我们来分析一下springsecurity过滤器链的加载流程.读者在阅读本文时可以边阅读边跟着操作,这样子会理解的更清楚一些. Spring Security过滤器链 spring security的过滤器非常多,这里简单介绍几个常用的过滤器. spring security常过滤器链介绍 org.springframew…
一.项目配置: Spring 4.4.1-RELEASE Jetty 9.3.5 JDK 1.8 Servlet 3.1.0 web.xml文件中没有配置编解码Filter 二.实际遇到的问题:客户端(比如java)发送post请求访问接口,数据放在body里面,每个参数utf-8编码.从body里面取出的中文参数是乱码. 下面是发送请求的代码和服务端接收请求的代码. 客户端代码.这是一个真实的第三方访问API的案例,这段代码请求到PHP系统正常,请求到java系统就会出现乱码.但是中文参数放到…
学习过springboot的都知道,在Springboot的main入口函数中调用SpringApplication.run(DemoApplication.class,args)函数便可以启用SpringBoot应用程序,跟踪一下SpringApplication源码可以发现,最终还是调用了SpringApplication的动态run函数. 下面以SpringBoot2.0.3.RELEASE为例简单分析一下运行过程. SpringApplicatiton部分源码: public stati…