springmvc注解

SpringMVC 和Struts2的区别

↘锁芯ラ 提交于 2020-01-14 01:54:55
SpringMVC 和Struts2的区别 1. 机制: spring mvc的入口是servlet,而struts2是filter,这样就导致了二者的机制不同。 2. 性能: spring会稍微比struts快。spring mvc是基于方法的设计,而sturts是基于类,每次发一次请求都会实例一个action,每个action都会被注入属性,而spring基于方法,粒度更细,但要小心把握像在servlet控制数据一样。spring3 mvc是方法级别的拦截,拦截到方法后根据参数上的注解,把request数据注入进去,在spring3 mvc中,一个方法对应一个request上下文。而struts2框架是类级别的拦截,每次来了请求就创建一个Action,然后调用setter getter方法把request中的数据注入;struts2实际上是通 setter getter方法与request打交道的;struts2中,一个Action对象对应一个request上下文。 3. 参数传递: struts是在接受参数的时候,可以用属性来接受参数,这就说明参数是让多个方法共享的。 4. 设计思想上: struts更加符合oop(面向对象编程)的编程思想, spring就比较谨慎,在servlet上扩展。 5. intercepter的实现机制:

SpringMVC的核心类和注解

早过忘川 提交于 2020-01-13 16:54:30
1.1 DispatcherServlet DispatcherServlet的全名是org.springframework.web.servlet.DispatcherServlet,它在程序中充当着前端控制器的角色。 在使用时,只需将其配置在项目的web.xml文件中,其配置代码如下。 <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5"> <servlet> <!-- 配置前端过滤器 --> <servlet-name>springmvc</servlet-name> <servlet-class> org.springframework.web.servlet.DispatcherServlet </servlet-class> <!-- 初始化时加载配置文件 --> <init

SpringMVC整合Shiro

ぃ、小莉子 提交于 2020-01-13 07:23:29
声明:本文转载自https://jadyer.cn/2013/09/30/springmvc-shiro/玄玉的个人博客。用于个人学习参考。 示例代码 首先是 web.xml < ? xml version = "1.0" encoding = "UTF-8" ? > < web - app version = "2.5" xmlns = "http://java.sun.com/xml/ns/javaee" xmlns : xsi = "http://www.w3.org/2001/XMLSchema-instance" xsi : schemaLocation = "http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" > < context - param > < param - name > contextConfigLocation < / param - name > < param - value > classpath : applicationContext . xml < / param - value > < / context - param > < listener > < listener - class > org .

Spring和Spring MVC包扫描

会有一股神秘感。 提交于 2020-01-13 04:58:28
在Spring整体框架的核心概念中,容器是核心思想,就是用来管理Bean的整个生命周期的,而在一个项目中,容器不一定只有一个,Spring中可以包括多个容器,而且容器有上下层关系,目前最常见的一种场景就是在一个项目中引入Spring和SpringMVC这两个框架,那么它其实就是两个容器,Spring是父容器,SpringMVC是其子容器,并且在Spring父容器中注册的Bean对于SpringMVC容器中是可见的,而在SpringMVC容器中注册的Bean对于Spring父容器中是不可见的,也就是子容器可以看见父容器中的注册的Bean,反之就不行。 springmvc 的配置文件和spring的配置文件都可以配置包扫描,如下: <context:component-scan base-package="com.xxx"/> 从Spring提供的参考手册中我们得知该配置的功能是扫描配置的base-package包下的所有使用了@Component注解的类,并且将它们自动注册到容器中,同时也扫描@Controller,@Service,@Respository这三个注解,因为他们是继承自@Component。 在项目中我们经常见到还有如下这个配置,其实有了上面的配置,这个是可以省略掉的,因为上面的配置会默认打开以下配置。以下配置会默认声明了@Required、@Autowired、

springmvc进阶

倾然丶 夕夏残阳落幕 提交于 2020-01-12 08:41:51
进阶部分知识: 1、高级参数绑定 a) 数组类型的参数绑定 b) List类型的绑定 2、@RequestMapping注解的使用 3、Controller方法返回值 4、Springmvc中异常处理 5、图片上传处理 6、Json数据交互 7、Springmvc实现Restful 8、拦截器 1、高级参数绑定 1.1绑定数组 1.1.1 需求 在商品列表页面选中多个商品,然后删除。 1.1.2 需求分析   此功能要求商品列表页面中的每一个商品前有一个checkbook,选中多个商品后,点击删除按钮, 把商品id传递给Controller,根据商品id删除商品信息。 1.1.3 jsp实现: <c:forEach items="${itemList }" var="item"> <tr> <td><input name="ids" value="${item.id}" type="checkbox"></td> <td>${item.name }</td> <td>${item.price }</td> <td><fmt:formatDate value="${item.createtime}" pattern="yyyy-MM-dd HH:mm:ss"/></td> <td>${item.detail }</td> <td><a href="${pageContext

【Spring学习笔记-MVC-6】SpringMVC 之@RequestBody 接收Json数组对象

点点圈 提交于 2020-01-12 08:34:00
本文转载自: https://www.cnblogs.com/ssslinppp/p/4597251.html 作者:ssslinppp 转载请注明该声明。 作者:ssslinppp 1. 摘要 程序流程: 前台使用ajax技术,传递json字符串到后台; 后台使用 Spring MVC 注解@RequestBody 接受前台传递的json字符串,并返回新的json字符串到前台; 前台接受后台传递过来的json数据,并显示。 2. 前台界面和js <%@ page language = "java" pageEncoding = "UTF-8" %> <% String path = request . getContextPath (); String basePath = request . getScheme () + "://" + request . getServerName () + ":" + request . getServerPort () + path + "/" ; response . setHeader ( "Pragma" , "no-cache" ); response . setHeader ( "Cache-Control" , "no-cache" ); response . setDateHeader ( "Expires" , 0 );

详解SpringMVC请求的时候是如何找到正确的Controller

吃可爱长大的小学妹 提交于 2020-01-12 04:43:16
我们使用浏览器通过地址 http://ip:port/contextPath/path进行访问,SpringMVC是如何得知用户到底是访问哪个Controller中的方法,这期间到底发生了什么。 本文将分析SpringMVC是如何处理请求与Controller之间的映射关系的,让读者知道这个过程中到底发生了什么事情。 在分析源码之前,我们先了解一下几个东西。 1.这个过程中重要的接口和类。 HandlerMethod类:   Spring3.1版本之后引入的。 是一个封装了方法参数、方法注解,方法返回值等众多元素的类。      它的子类InvocableHandlerMethod有两个重要的属性WebDataBinderFactory和HandlerMethodArgumentResolverComposite, 很明显是对请求进行处理的。   InvocableHandlerMethod的子类ServletInvocableHandlerMethod有个重要的属性HandlerMethodReturnValueHandlerComposite,很明显是对响应进行处理的。   ServletInvocableHandlerMethod这个类在HandlerAdapter对每个请求处理过程中,都会实例化一个出来(上面提到的属性由HandlerAdapter进行设置)

SpringMVC框架笔记02_参数绑定返回值文件上传异常处理器JSON数据交互_拦截器

我与影子孤独终老i 提交于 2020-01-12 01:09:46
目录 第1章 高级参数的绑定 1.1 参数的分类 1.2 数组类型的参数的绑定 1.3 集合类型的参数的绑定 第2章 @RequestMapping的用法 2.1 URL路径映射 2.2 请求方法限定 2.3 窄化请求映射 第3章 Controller方法的返回类型 3.1 返回ModelAndView 3.2 返回void 3.3 返回类型为String 3.3.1 逻辑视图名 3.3.2 重定向 3.3.3 转发 第4章 文件上传【重要】 4.1 文件上传页面三要素 4.2 SpringMVC上传文件注意点 4.3 开始上传 4.3.1 场景设计 4.3.2 导入文件上传的jar包 4.3.3 修改页面的jsp代码 4.3.4 配置文件 解析器 4.3.5 编写 Controller 修改商品的方法,其中包括文件上传 4.3.6 测试 4.3.7 注意 第5章 异常处理器 5.1 异常处理的思路 5.2 自定义异常处理器的举例 5.2.1 场景描述 5.2.2 自定义异常处理器 5.2.3 编写错误页面 5.2.4 配置异常处理器 5.2.5 模拟异常 5.2.6 测试 第6章 JSON数据交互 6.1 场景设计 6.2 在修改页面引入JS支持 6.3 修改提交方式 6.4 编写save函数和ajax代码 6.5 在Controller中编写updateitemAjax方法 6

SpringMVC使用HandlerExceptionResolver实现全局异常处理器

两盒软妹~` 提交于 2020-01-11 18:56:46
在SpringMVC中,提供了一个全局异常处理器,用于对系统中出现的异常进行统一处理。在一般的系统中,DAO层、Service层及Controller层出现异常都以“throws Exception”的形式向上层抛出,最后都会有SpringMVC的前端控制器(DispatcherServlet)统一交由全局异常处理器进行异常处理。 1、HandlerExceptionResolver接口 在SpringMVC中提供的HandlerExceptionResolver接口可以实现全局异常处理器,该接口的源码如下: package org.springframework.web.servlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.lang.Nullable; public interface HandlerExceptionResolver { @Nullable ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler,

springmvc之处理模型数据SessionAttributes注解

左心房为你撑大大i 提交于 2020-01-10 22:56:26
ModelAndView和Map都是将数据模型放到请求域request中。 (1)若希望在多个请求之间共用某个数据模型属性数据,可以在控制器类上加一个@SessionAttributes。springmvc会将在模型中对应的属性存到HttpSession中。 (2)@SessionAttributes除了可以通过属性名指定需要放到会话中的属性外,还可以通过模型属性的对象类型指定哪些模型属性需要放到会话中。 SpringmvcTest.java @SessionAttributes(value={"user"},types= {String.class}) @RequestMapping("/springmvc") @Controller public class SpringmvcTest { private static final String SUCCESS = "success"; @RequestMapping(value="/testSessionAttributes") public String testSessionAttributes(Map<String,Object> map) { User user = new User(); user.setUsername("tom"); user.setAge(12); map.put("user", user);