SpringMVC
N3verL4nd
中年老男人~
展开
-
Spring MVC 解读——<mvc:annotation-driven/>
AnnotationDrivenBeanDefinitionParser通常如果我们希望通过注解的方式来进行Spring MVC开发,我们都会在*-servlet.xml中加入<mvc:annotation-driven/>标签来告诉Spring我们的目的。但是我们为什么这么做呢?这个标签是什么意思呢?它做了什么呢?同样为了弄清楚这些问题, 像<context:component-scan/>标签一转载 2017-11-04 16:17:36 · 290 阅读 · 0 评论 -
SpringMVC源码解析-ContentNegotiationStrategy
/** * 处理请求中的媒体类型的策略接口 */public interface ContentNegotiationStrategy { /** * 将给定的请求解析为媒体类型列表 * 返回的 List 首先按照 specificity 参数排序,其次按照 quality 参数排序 * * webRequest: 当前的请求 * 返原创 2017-09-27 16:14:30 · 1337 阅读 · 0 评论 -
SpringMVC-StringHttpMessageConverter简介
旨在通过分析StringHttpMessageConverter 来初步认识消息转换器HttpMessageConverter 的处理流程。分析完StringHttpMessageConverter 便可以窥视SpringMVC的庐山真面目了。/** * HttpMessageConverter 的实现类:完成请求报文到字符串和字符串到响应报文的转换 * 默认情况下,此转换器支持所有媒体类型(*原创 2017-09-06 22:03:37 · 29170 阅读 · 9 评论 -
SpringMVC Content-Type解析
为了测试方便,我们编写了一个简单的HttpMessageConverterpackage cn.bjut.converter;import java.io.IOException;import java.io.UnsupportedEncodingException;import java.nio.charset.Charset;import org.springframework.http.H原创 2017-09-26 20:46:20 · 7421 阅读 · 0 评论 -
Spring WebApplicationContext
public interface ApplicationContext extends EnvironmentCapable, ListableBeanFactory, HierarchicalBeanFactory, MessageSource, ApplicationEventPublisher, ResourcePatternResolver { String getI原创 2017-08-31 22:51:28 · 695 阅读 · 0 评论 -
SpringMVC实现文件上传与下载
Spring MVC为文件上传提供了直接的支持,这种支持是通过即插即用的MultipartResolver实现的。package org.springframework.web.multipart;import javax.servlet.http.HttpServletRequest;public interface MultipartResolver { boolean is原创 2017-05-06 21:05:51 · 526 阅读 · 0 评论 -
Spring与SpringMVC整合
如何创建SpringMVC项目:http://blog.csdn.net/x_iya/article/details/68945373渐渐地喜欢上了这种开发方式。build.gradlegroup 'com.xiya'version '1.0-SNAPSHOT'apply plugin: 'idea'apply plugin: 'java'apply plugin: 'w原创 2017-05-17 22:26:55 · 1000 阅读 · 0 评论 -
SpringMVC自定义返回XML/JSON数据
1、添加jackson依赖compile group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: '2.9.0'2、开启<mvc:annotation-driven /> 注解3、编写JavaBeanpackage cn.bjut.entity;import javax.xml.bind.annotation.X原创 2017-09-07 22:20:45 · 3626 阅读 · 0 评论 -
SpringMVC返回json数据
gradle配置:compile group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: '2.8.7'SpringMVC配置文件中需要添加如下配置:mvc:annotation-driven/> 是一种简写形式,完全可以手动配置替代这种简写形式,简写形式可以让初学者快速应用默认配置方案。原创 2017-04-01 15:37:16 · 612 阅读 · 0 评论 -
@RequestBody @ResponseBody 详解
@RequestBody@Target(ElementType.PARAMETER)@Retention(RetentionPolicy.RUNTIME)@Documentedpublic @interface RequestBody { boolean required() default true;}@RequestBody 注解只有一个方法,标识Request Body是不是原创 2017-08-23 14:01:09 · 2042 阅读 · 0 评论 -
SpringMVC:使用 POJO 对象绑定请求参数值
Spring MVC 会按请求参数名和 POJO 属性名进行自动匹配,自动为该对象填充属性值。支持级联属性。如:address.province、address.city等说的通俗点就是,平时我们想将请求页面的表单数据接收并封装成特定对象的时候,少不了做的是在某个servlet的对应方法中从request中将各个表单参数取出,类型转换好,构造一个特定类型的对象,再把表单参数都存进去。只要你原创 2017-04-02 14:29:35 · 1697 阅读 · 0 评论 -
SpringMVC RequestParam与PathVariable小结
RequestParam@Target(ElementType.PARAMETER)@Retention(RetentionPolicy.RUNTIME)@Documentedpublic @interface RequestParam { @AliasFor("name") String value() default ""; @AliasFor("value")原创 2017-08-21 22:18:01 · 556 阅读 · 0 评论 -
Spring中DispatcherServlet、WebApplicationContext、ServletContext的关系
ServletContext先来讲解下ServletConfig 接口/** * Servlet配置对象: Servlet容器在初始化期间将信息传递给 Servlet */ public interface ServletConfig { /** * 返回此 Servlet 实例的名称 */ public String getServletName();原创 2017-09-02 20:03:35 · 2838 阅读 · 0 评论 -
SpringMVC HandlerMethodReturnValueHandler解读
HandlerMethodReturnValueHandler:对方法返回值进行处理的策略接口/** * 策略模式接口:处理 Controller 方法返回值 */public interface HandlerMethodReturnValueHandler { /** * 该处理程序是否支持给定的方法返回类型 */ boolean supportsRet原创 2017-09-09 09:45:54 · 3633 阅读 · 0 评论 -
Spring mvc的生命周期
开始使用 spring mvc之前,我们必须需要了解下SPRING MVC的流程,如下图:在看下图之前的一些说明: (下面介绍的HandlerMapping,HandlerAdapter,HandlerExceptionResovler,ViewResolver都有个order属性,因为这些接口每一个都可以注册多个实现,order代表他们的执行顺序,order越小的越先执行,一般先执行的匹配到了后面转载 2017-11-03 21:18:34 · 1226 阅读 · 0 评论 -
SpringMVC-ResourceBundleMessageSource使用
ResourceBundleMessageSource: 提供国际化的类。说的简单点,这个类的作用就是读取资源属性文件(.properties),然后根据.properties文件的名称信息(本地化信息),匹配当前系统的国别语言信息(也可以程序指定),然后获取相应的properties文件的内容。新建国际化资源文件 message=welcome:{0}message=欢迎:{0}Bean的配置原创 2017-11-02 22:12:33 · 8464 阅读 · 0 评论 -
SpringMVC源码解析-LocaleResolver
LocaleResolverLocaleResolver是一个解决国际化的策略接口。它包含两个方法:resolveLocale和setLocalepublic interface LocaleResolver { Locale resolveLocale(HttpServletRequest request); void setLocale(HttpServletRequest re原创 2017-10-19 15:21:22 · 762 阅读 · 0 评论 -
SpringMVC国际化设置
使用gradle构建项目:http://blog.csdn.net/x_iya/article/details/644421121、创建国际化资源文件。在resources目录下邮件NEW-->Resource Bundle需要先做如下设置:然后再如下创建两个做测试。如上点击加号创建属性。2、在springMVC配置文件中配置messageSourc原创 2017-05-07 17:10:03 · 2809 阅读 · 1 评论 -
SpringMVC异常处理
SpringMVC通过 HandlerExceptionResolver 处理程序异常,包括处理器映射、数据绑定以及处理器执行时发生的异常。public interface HandlerExceptionResolver { ModelAndView resolveException( HttpServletRequest request, HttpServlet原创 2017-05-25 11:11:02 · 5562 阅读 · 0 评论 -
SpringMVC @ResponseBody处理流程
SpringMVC的Controller方法的返回值大体有两种: 1. ModelAndView(没有使用@ResponseBody注解) 2. 直接输出到响应流的数据(使用@ResponseBody注解,没有视图解析的步骤)/** * 指示方法返回值直接绑定到 HTTP Response Body 的注解 */@Target({ElementType.TYPE, ElementType.原创 2017-11-04 10:43:29 · 4065 阅读 · 0 评论 -
SpringMVC源码解析-HandlerInterceptor
HandlerInterceptor的使用见:http://blog.csdn.net/x_iya/article/details/72721794public interface HandlerInterceptor { /** * 处理器执行的拦截器 * 在 HandlerMapping 确定了一个适当的处理程序之后,HandlerAdapter 调用该处理程序之前被原创 2017-10-19 13:01:47 · 472 阅读 · 0 评论 -
SpringMVC自定义拦截器
Spring MVC也可以使用拦截器对请求进行拦截处理,用户可以自定义拦截器来实现特定的功能,自定义拦截器必实现 HandlerInterceptor接口:public interface HandlerInterceptor { boolean preHandle(HttpServletRequest request, HttpServletResponse response, O原创 2017-05-25 08:39:53 · 501 阅读 · 0 评论 -
SpringMVC 重定向/转发操作
一般情况下,控制器方法返回字符串类型的值会被当成逻辑视图名来处理若果返回的字符串中带有forward:或redirect:前缀时,SpringMVC会对他们进行特殊处理:将forward和redirect当成指示符,其后的字符串作为URL来处理。重定向请求重定向以redirect:开头@Controllerpublic class Test { @Reques原创 2017-04-05 14:56:02 · 1641 阅读 · 0 评论 -
SpringMVC HandlerMethodArgumentResolver解读
HandlerMethodReturnValueHandler:将请求报文绑定到处理方法形参的策略接口/** * 策略模式接口:用于在给定的请求的上下文中将方法参数解析为参数值 */public interface HandlerMethodArgumentResolver { /** * 该处理程序是否支持给定的方法参数类型(只有返回true才回去调用 resolveArg原创 2017-09-09 13:36:48 · 763 阅读 · 0 评论 -
SpringMVC源码剖析(五)-消息转换器HttpMessageConverter
概述在SpringMVC中,可以使用@RequestBody和@ResponseBody两个注解,分别完成请求报文到对象和对象到响应报文的转换,底层这种灵活的消息转换机制,就是Spring3.x中新引入的HttpMessageConverter即消息转换器机制。Http请求的抽象还是回到请求-响应,也就是解析请求体,然后返回响应报文这个最基本的Http请求过程中来。我们知道,在serv转载 2017-05-20 13:21:09 · 387 阅读 · 0 评论 -
SpringMVC-HandlerAdapter简介
public interface HandlerAdapter { /** * 给定一个处理程序实例 handler ,返回此 HandlerAdapter 是否可以支持它 * 典型的 HandlerAdapter 将根据处理程序类型决定 * HandlerAdapters 通常只支持一种处理类型 * 典型的实现: * return (hand原创 2017-09-23 09:53:25 · 514 阅读 · 0 评论 -
使用 mvc:default-servlet-handler 中的一个bug
一个简单的SpringMVC Hello World程序如下:package com.xiya.controller;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;/** * Created by N3verL4...原创 2017-05-19 13:59:21 · 8480 阅读 · 0 评论 -
jetty-runner 如何配置 jstl
HTTP ERROR 500Problem accessing /SpringMVC/list.jsp. Reason: Server ErrorCaused by:org.apache.jasper.JasperException: The absolute uri: http://java.sun.com/jsp/jstl/core cannot be resolved i原创 2017-05-21 11:13:51 · 1228 阅读 · 0 评论 -
SpringMVC return forward redirect疑问
我们都知道,在一般情况下,控制器方法返回的字符串都会被当做逻辑视图名来处理。但是当字符串带有“forward”或者“redirect”前缀时,则对他们进行特殊处理。把“forward”与“redirect”当成指示符,其后的字符串作为URL来处理。redirect:会让浏览器发起一个新的请求。forward:与当前请求同属一个。遇到的一个问题:@RequestM原创 2017-05-07 10:15:04 · 7532 阅读 · 0 评论 -
SpringMVC源码剖析(二)- DispatcherServlet的前世今生
上一篇文章《SpringMVC源码剖析(一)- 从抽象和接口说起》中,我介绍了一次典型的SpringMVC请求处理过程中,相继粉墨登场的各种核心类和接口。我刻意忽略了源码中的处理细节,只列出最简单的类甚至是接口类,目的就是让大家先从最高层次的抽象意义上来审视SpringMVC这个框架;我也刻意将SpringMVC和Struts2做对比,目的是让大家看到,SpringMVC究竟吸取了Sturts2设转载 2017-05-03 14:26:34 · 487 阅读 · 0 评论 -
关于ContextLoaderListener那点事
在给新同事培训spring MVC时,有人问:可以不配置ContextLoaderListener吗所谓ContextLoaderListener,就是在web部署描述符即web.xml里面经常配置的一个监听器,如下[html] view plain copy listener> listener-class>org.sprin转载 2017-04-20 10:54:12 · 687 阅读 · 0 评论 -
Spring <context:annotation-config/> 解说
在基于主机方式配置Spring的配置文件中,你可能会见到这样一条配置,他的作用是式地向 Spring 容器注册AutowiredAnnotationBeanPostProcessor、CommonAnnotationBeanPostProcessor、PersistenceAnnotationBeanPostProcessor 以及 RequiredAnnotationBeanPo转载 2017-04-06 15:14:41 · 393 阅读 · 0 评论 -
Spring MVC @SessionAttribute 使用
@Target({ElementType.TYPE})@Retention(RetentionPolicy.RUNTIME)@Inherited@Documentedpublic @interface SessionAttributes { @AliasFor("names") String[] value() default {}; @AliasFor("value")原创 2017-04-06 10:23:04 · 1456 阅读 · 0 评论 -
Spring MVC @ModelAttribute 使用
1.@ModelAttribute注释void返回值的方法@Controllerpublic class Test { @RequestMapping(value = "/hello") public String helloWorld() { System.out.println("hello World"); return "hello";原创 2017-04-03 21:04:14 · 659 阅读 · 0 评论 -
学习SpringMVC(十一)之视图和视图解析器
SpringMVC用于处理视图最重要的两个接口是ViewResolver和View。ViewResolver的主要作用是把一个逻辑上的视图名称解析为一个真正的视图,View接口的主要作用是用于处理视图,然后返回给客户端。spring为我们提供了非常多的视图解析器,下面将列举一些视图解析器。AbstractCachingViewResolver:这是一个抽象类,这种视图解析器会把转载 2017-04-02 14:43:38 · 418 阅读 · 0 评论 -
Spring mvc工作原理
需要解决的问题Spring mvc按照MVC设计模式设计的框架,Model实体类传递给Controller,设置变量,返回给模板,渲染给客户端。目标是简化开发流程,不需要大量重复的代码,不需要像servlet每个请求都要配置一个servlet,并需要手工管理request,response。以及DI,aop的介入,可以定制大量操作,比如HandlerMethodReturnValu转载 2017-04-07 10:46:29 · 791 阅读 · 0 评论 -
SpringMVC源码剖析(一)- 从抽象和接口说起
SpringMVC作为Struts2之后异军突起的一个表现层框架,正越来越流行,相信javaee的开发者们就算没使用过SpringMVC,也应该对其略有耳闻。我试图通过对SpringMVC的设计思想和源码实现的剖析,从抽象意义上的设计层面和实现意义上的代码层面两个方面,逐一揭开SpringMVC神秘的面纱,本文的代码,都是基于Spring的 3.1.3RELEASE版本。任何一个框架,都有自己转载 2017-04-06 17:30:10 · 355 阅读 · 0 评论 -
Spring MVC源码分析
初始化过程1. 概述对于Web开发者,MVC模型是大家再熟悉不过的了,SpringMVC中,满足条件的请求进入到负责请求分发的DispatcherServlet,DispatcherServlet根据请求url到控制器的映射(HandlerMapping中保存),HandlerMapping最终返回HandlerExecutionChain,其中包含了具体的处理对象h转载 2017-04-27 21:28:13 · 886 阅读 · 0 评论 -
SpringMVC HelloWorld
开发环境:Intellij 2017.1 + Gradle 3.4.1build.gradlegroup 'com.xiya'version '1.0-SNAPSHOT'apply plugin: 'idea'apply plugin: 'java'apply plugin: 'war'sourceCompatibility = 1.8repositories {//原创 2017-03-29 09:42:18 · 858 阅读 · 0 评论 -
如何使用Intellij和Gradle开发JAVA Web项目
以前总结的一句话:学C/C++学不明白了,去学汇编;使用编译器用不明白的时候,去用命令行操作。忘掉IDE,或者仅仅把IDE当做编辑器来使用。环境:Gradle 3.4.1 + Intellij 2017.11、根据gradle的项目结构约定,在命令行中创建目录和gradle脚本文件。mkdir src\main\javamkdir src\main\resource原创 2017-04-01 16:38:13 · 4458 阅读 · 0 评论