springmvc

SpringMVC源码剖析(三)- DispatcherServlet的初始化流程

给你一囗甜甜゛ 提交于 2019-12-15 18:44:11
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 在我们第一次学Servlet编程,学java web的时候,还没有那么多框架。我们开发一个简单的功能要做的事情很简单,就是继承HttpServlet,根据需要重写一下doGet,doPost方法,跳转到我们定义好的jsp页面。Servlet类编写完之后在web.xml里注册这个Servlet类。 除此之外,没有其他了。我们启动web服务器,在浏览器中输入地址,就可以看到浏览器上输出我们写好的页面。为了更好的理解上面这个过程, 你需要学习关于Servlet生命周期的三个阶段,就是所谓的“init-service-destroy”。 以上的知识,我觉得对于你理解SpringMVC的设计思想,已经足够了。SpringMVC当然可以称得上是一个复杂的框架,但是同时它又遵循Servlet世界里最简单的法则,那就是“init-service-destroy”。我们要分析SpringMVC的初始化流程,其实就是分析DispatcherServlet类的init()方法,让我们带着这种单纯的观点,打开DispatcherServlet的源码一窥究竟吧。 1.<init-param>配置元素读取 用Eclipse IDE打开DispatcherServlet类的源码,ctrl+T看一下。

springmvc学习笔记(12)-springmvc注解开发之包装类型参数绑定

断了今生、忘了曾经 提交于 2019-12-11 16:08:51
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> springmvc学习笔记(12)-springmvc注解开发之包装类型参数绑定 标签: springmvc [TOC] 本文主要介绍注解开发的介绍包装类型的参数绑定 需求 商品查询controller方法中实现商品查询条件传入。 实现方法 第一种方法:在形参中添加 HttpServletRequest request 参数,通过request接收查询条件参数。 第二种方法:在形参中让包装类型的pojo接收查询条件参数。 分析: 页面传参数的特点:复杂,多样性。条件包括:用户账号、商品编号、订单信息。。。 如果将用户账号、商品编号、订单信息等放在简单pojo(属性是简单类型)中,pojo类属性比较多,比较乱。建议使用包装类型的pojo,pojo中属性是pojo。 页面参数和controller方法形参定义 页面参数: 商品名称: <input name="itemsCustom.name" /> 注意:itemsCustom和包装pojo中的属性名一致即可。 controller方法形参: public ModelAndView queryItems(HttpServletRequest request, ItemsQueryVo itemsQueryVo) throws Exception

Controller接口控制器3

痞子三分冷 提交于 2019-12-09 19:48:52
本文为转载学习 原文链接: http://jinnianshilongnian.iteye.com/blog/1622684 向导控制器类提供了多步骤(向导)表单的支持(如完善个人资料时 分步骤填写基本信息、工作信息、学校信息 等) 假设现在做一个完善个人信息的功能,分三个页面展示: 1、页面1完善基本信息; 2、页面2完善学校信息; 3、页面3完善工作信息。 这里我们要注意的是 当用户跳转到页面2时页面1的信息是需要保存起来的 ,还记得AbstractFormController中的sessionForm吗? 如果为true则表单数据存放到session中,AbstractWizardFormController就是使用了这个特性。 向导中的页码从0开始; PARAM_TARGET = "_target": 用于选择向导中的要使用的页面参数名前缀,如“_target0”则选择第0个页面显示,即图中的“wizard/baseInfo”,以此类推,如“_target1”将选择第1页面,要得到的页码为去除前缀“_target”后的数字即是; PARAM_FINISH = "_finish": 如果请求参数中有名为“_finish”的参数,表示向导成功结束,将会调用processFinish方法进行完成时的功能处理; PARAM_CANCEL = "_cancel":

SpringMVC 3.2.* json 406

孤街浪徒 提交于 2019-12-09 18:00:23
今天项目请求json时报了这个诡异的且从来没有遇到到的错误:The resource identified by this request is only capable of generating responses with characteristics not acceptable according to the request "accept" headers. 解决办法: 1、将springmvc 文件的 xsd修改为3.2版本,如: http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd 2、将<mvc:annotation-driven/> 修改为 <mvc:annotation-driven content-negotiation-manager="contentNegotiationManager"/> <bean id="contentNegotiationManager" class="org.springframework.web.accept.ContentNegotiationManagerFactoryBean"> <property name="favorPathExtension" value="false" /> <property name="favorParameter"

Spring MVC + JSON = 406 Not Acceptable

僤鯓⒐⒋嵵緔 提交于 2019-12-07 21:27:57
在开发接口时发现了一个很好玩的问题,两个接口均是restful形式,参数在URL路径中传递,返回结果形式均为json,但是在接口测试时,一个接口正常,另一个接口报错:The resource identified by this request is only capable of generating responses with characteristics not acceptable according to the request "accept" headers.本文来分析一下其中的原因。   先介绍一下出错的接口情况,接口代码如下: /** * 验证email是否可用 * @param email * @return */ @ResponseBody @RequestMapping(value = "/emailCheck/{email}", method = RequestMethod.GET) @ApiOperation(value = "验证email是否可用", httpMethod = "GET", response = ApiResult.class, notes = "验证email是否可用") public ApiResult checkEmailValid(@ApiParam(required = true, name = "email",

springmvc工具类封装RowMapper

帅比萌擦擦* 提交于 2019-12-07 16:17:29
springmvc通常是先写实体,在数据库查询,最后增删改差,最感觉代码很冗余,自己在封装了一下。 常见的结构是: entity:如 package com.liuxinquan.entiry; /** * @author:lxq * @类说明:Book * */ public class Book { private String id; private String user_id; private String item_id; private String prefer; private String time; public String getId() { return id; } public String getUser_id() { return user_id; } public void setUser_id(String user_id) { this.user_id = user_id; } public String getItem_id() { return item_id; } public void setItem_id(String item_id) { this.item_id = item_id; } public String getPrefer() { return prefer; } public void setPrefer

@ResponseBody响应JSON 406

六眼飞鱼酱① 提交于 2019-12-07 12:28:36
搭建 SpringMVC(4.1) ,但是搭建完成以后发现使用 @ResponseBody的ajax无法访问,总是出现406的问题。 首先怀疑的是配置问题,经过查明,影响SpringMVC的 @ResponseBody注解的是: <mvc:annotation-driven />,我发现我的配置中存在这个注解。同时又使用Spring文档中的自动配置相关解析类的方式再进行测试,发现还是没有解决问题。 同时在网上找到相关问题,发现是 缺失jackson的jar 。 <dependency> <groupId>org.codehaus.jackson</groupId> <artifactId>jackson-core-lgpl</artifactId> <version>1.9.0</version> </dependency> <dependency> <groupId>org.codehaus.jackson</groupId> <artifactId>jackson-mapper-lgpl</artifactId> <version>1.9.0</version> </dependency> 于是加上该依赖,可是发现问题还是没有解决。 有参考一下spring 文档 Spring 4 requires the recent Hibernate Validator 4.3+, and

Controller接口控制器4

匆匆过客 提交于 2019-12-07 11:39:25
本文为转载学习 原文链接: http://jinnianshilongnian.iteye.com/blog/1630585 MultiActionController 之前学过的控制器如AbstractCommandController、SimpleFormController等一般对应一个功能处理方法(如新增),如果我要实现比如最简单的用户增删改查(CRUD Create-Read-Update-Delete),那该怎么办呢? 解决方案 1、每一个功能对应一个控制器,如果是CRUD则需要四个控制器,但这样我们的控制器会暴增,肯定不可取; 2、使用Spring Web MVC提供的 MultiActionController,用于支持在一个控制器里添加多个功能处理方法,即将多个请求的处理方法放置到一个控制器里 ,这种方式不错。 问题 1、MultiActionController如何将不同的请求映射不同的请求的功能处理方法呢? Spring Web MVC提供了 MethodNameResolver (方法名解析器)用于 解析当前请求到需要执行的功能处理方法的方法名 。默认使用InternalPathMethodNameResolver实现类,另外还提供了ParameterMethodNameResolver和PropertiesMethodNameResolver

Spring MVC学习路(四)了解DispatcherServlet作用

筅森魡賤 提交于 2019-12-07 07:49:19
本篇主要根据 http://jinnianshilongnian.iteye.com/blog/1602617 进行的了解的DispatcherServlet 感谢涛哥 只是简单的了解一下DispathServlet的作用,不会写的很深入 作用: DispatcherServlet是前端控制器设计模式的实现,提供Spring Web MVC的集中访问点,而且负责职责的分派,而且与Spring IoC容器无缝集成,从而可以获得Spring的所有好处。 DispatcherServlet主要用作职责调度工作,本身主要用于控制流程,主要职责如下: 1、文件上传解析,如果请求类型是multipart将通过MultipartResolver进行文件上传解析; 2、通过HandlerMapping,将请求映射到处理器(返回一个HandlerExecutionChain,它包括一个处理器、多个HandlerInterceptor拦截器); 3、通过HandlerAdapter支持多种类型的处理器(HandlerExecutionChain中的处理器); 4、通过ViewResolver解析逻辑视图名到具体视图实现; 5、本地化解析; 6、渲染具体的视图等; 7、如果执行过程中遇到异常将交给HandlerExceptionResolver来解析。

springmvc学习笔记(8)-springmvc整合mybatis之service

一笑奈何 提交于 2019-12-07 02:34:39
springmvc学习笔记(8)-springmvc整合mybatis之service 标签: springmvc mybatis [TOC] 本文记录如何整合service,包括定义spring接口,在spring容器配置service以及事务控制。让spring管理service接口。 定义service接口 public interface ItemsService { //商品查询列表 List<ItemsCustom> findItemsList(ItemsQueryVo itemsQueryVo) throws Exception; } public class ItemsServiceImpl implements ItemsService { @Autowired private ItemsMapperCustom itemsMapperCustom; public List<ItemsCustom> findItemsList(ItemsQueryVo itemsQueryVo) throws Exception { return itemsMapperCustom.findItemsList(itemsQueryVo); } } 在spring容器配置service 在 resources/spring 下创建applicationContext-service