springmvc注解

SpringMVC中AJAX请求出现406

爷,独闯天下 提交于 2019-12-09 18:28:19
这几天因为需要搭建SpringMVC,但是搭建完成以后发现使用 @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

springMVC_1 springmvc概述以及入门案例

丶灬走出姿态 提交于 2019-12-09 18:13:18
springMVC_1 springmvc概述以及入门案例 1.1 清晰的角色划分 前端控制器(DispatcherServlet) 请求到处理器映射(HandlerMapping):哪个方法 处理适配器(HandlerAdapter): 处理器或页面控制器(Controller) 验证器(Validator) 命令对象(Command请求参数绑定到的对象就叫命令对象) 表单对象(From Object提供给表单展示和提交到的对象叫表单对象) 1.2 spring和structs2的对比 spring mvc的入口是servlet,而Struts2是filter spring mvc基于方法,而Struts2基于类,Struts2每次执行都会创建一个动作类 spring mvc使用更加简洁,同时支持jsr303,处理ajax的请求方便 (jsr303是一套javabean参数校验的标准,它定义了很多常用的校验注解,我们可以直接将这些注解加在Javabean的属性上面,就可以在需要校验的时候进行校验了) Struts2的ognl表达式使得页面的开发效率相比spring mvc更快些,但执行效率没有比就是他提升,尤其是Struts2的表单标签,远没有比HTML执行效率高 1.3环境开发 匹配前端适配器 < beans xmlns = " http://www

spring aop之父子容器

匆匆过客 提交于 2019-12-09 17:46:26
需求;项目对外提供接口,要求每个对外接口都要进行token认证。 解决办法:写一个token认证的工具类,在每个需要认证的接口方法开始的地方,调用工具类中的token认证方法。 问题:因为要满足指定条件才可以进行下一步,在接口中调用token认证的时候,要返回结果进行判断,不止是一行代码可以解决问题。 优化:使用aop 切面编程,在执行接口的内容之前,进行认证。通过注解的方式,织入到切点中。这样在需要进行认证的接口上只需要添加一个注解就可以token认证功能。 问题:基于Aspect注解实现该功能,在程序启动时,访问接口,直接进入接口,没有进入切面。 AuthController @RestController public class AuthController { @PostMapping("authentication") @TokenChecker public Result getToken(String username,String password){ return null; } } 切面类:execution 表达式没有任何问题。 @Aspect @Component public class TokenAspect {   //匹配指定类下的有指定注解的方法。只要在要切入的方法上加上注解就可以将该方法作为切入点。 @Pointcut("execution

springmvc在使用@ModelAttribute注解获取Request和Response会产生线程并发不安全问题(转)

孤街浪徒 提交于 2019-12-09 13:19:32
springmvc在获取Request和Response有很多方式:具体请看: https://www.cnblogs.com/wade-luffy/p/8867144.html 产生线程问题的代码如下: public class BaseController { protected HttpServletRequest request; protected HttpServletResponse response; protected HttpSession session; @ModelAttribute public void setReqAndRes(HttpServletRequest request, HttpServletResponse response) { this.request = request; this.response = response; this.session = request.getSession(); } } 上面的BaseController中使用ModelAttribute注解来获取request和response对象,这样基类继承该类,想要获取对象直接可以拿到,虽然这样很简便,但是这里会产生线程不安全问题,在并发量大的情况下,获取的对象可能是同一个对象,或者为null,这些都是并发造成的问题 分析: 1 .

springmvc传参方式

冷暖自知 提交于 2019-12-09 10:18:59
这个是最原始的方式 使用注解后,后台这样写形参,前台传的参数,会自动封装到形参里面,但这个是基于同名配置的规则,前台参数的名称, 要和后台形参名一致 如果前台名称不一致,则注解不进去 @RequestParam(value="name"String username):表明前台的传的参数名称叫name,要往username里面注入 当前台名字和形参不一致,可以使用 @RequestParam注解进行映射 required=true,表示前台的参数是不是必须要传,默认是true必须要传 defaultValue: 表示前台没有传,我就给一个设置的默认值,这里设置的是haha,当没有前台没有传,我就显示haha 如果没传就会报下面的错 springmvc也是支持模型传参的 在struts中,前台页面中是需要写类.属性的,在springmvc中是不用的写前缀 普通的方式 delete后面那一串是做为参数传到后台的,这种是restful的风格 写上占位符,此时前台参数是注入不到后台的,得加一个注解来映射 小结: 1,传参方式的几种,通过原生的要手动获取前台传进来的参数,再手动的注入到对应的属性 2,贴了注解后,是可以基于同名匹配的原则,直接注入到后台的形参里 3,如果前台传的参数名和后台的形参名不一致,可以使用注解 @RequestParam(value="name"String

springmvc和struts2的区别

喜夏-厌秋 提交于 2019-12-09 09:40:58
1.Struts2是类级别的拦截,一个类对应一个request上下文;SpringMVC是方法级别的拦截,一个方法对应一个request上下文,而方法同时又跟一个url对应,所以说从架构本身上SpringMVC就容易实现Restful的url,而Struts2的架构实现起来要费劲。因为Struts2中Action的一个方法可以对应一个url,而其类属性却被所有方法共享,这也就无法用注解或其他方法标识其所属方法了。 2.因为上面的原因,SpringMVC的方法之间基本上是独立的,独享request response的数据,请求数据通过参数获取,处理结果通过ModelMap交回给框架,方法之间不共享变量;而Struts2搞得就比较乱,虽然方法之间也是独立的,但是Action中的所有变量却是共享的,这不会影响程序运行,却会给我们编码或读程序的时候带来麻烦,每次来了请求就创建一个Action,一个Action对象对应一个request上下文。即Struts2的Action是多实例单线程的,而SpringMVC是单实例多线程的。 3.由于Struts需要针对每个request进行封装,把request、session等servlet生命周期的变量封装成一个一个Map,供给每个Action使用,并保证线程安全,所以在原则上是比较耗费内存的。 4.在拦截器实现机制上

springmvc(五)集成阿里 druid数据库连接池和事务等配置,集成mybatis

佐手、 提交于 2019-12-09 05:02:44
感谢我们的小领导,他在研究,我们在套用,他走了以后再没有完善过,一直沿用至今。如果看这里的朋友有什么需要集成进来的,不吝赐教,谢谢各位了。 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org

SpringMVC简单项目配置

隐身守侯 提交于 2019-12-09 02:51:07
一、首先,SpringMVC框架使用分层开发, 分层是为了实现“ 高内聚 ,低耦合”。采用“分而治之”的思想,把问题划分开来各个解决,易于控制,延展和分配资源,最重要的是有利于后期项目维护。 MVC是指Model(模型)、View(视图)、Controller(控制器),在SpringMVC的编程中一般具有四层,分别是: 表示层:(jsp、html)主要就是界面的展示 控制层:(Contoller、Action)控制界面跳转 业务层:(Service)调用DAO层,实现解耦合目的,虽然不要它也可以运行项目,但是会使项目后期的延展和维护变得困难 持久层:(DAO)也叫数据访问层,实现对数据库的访问 二、然后,注解的使用,在SpringMVC中经常用到注解,使用注解可以极大的节省开发者的时间,下面是几个最重要的注解介绍: @Repository :标注数据访问层,可以告诉SpringMVC这是一个数据访问层,并将其申明为一个bean,例如UserDao接口的实现类UserDaoImpl,在类上加注解@Repository("userDao"),bean的名称为userDao @Service :标注业务层,例如UserService接口的实现类,在类上加@Service("userService"),bean的名称为userService @Controller:控制层,在控制层类上加

SpringMVC实现用户登录实例

一笑奈何 提交于 2019-12-09 02:50:27
今天分享一下SpringMVC的一个登陆小案例 准备工作 创建一个Dynamic Web Project(本人是Eclipse) 添加相关的jar包,构建路径 创建springMVC-servlet.xml,及完善web.xml 创建代码逻辑 目录结构如下 对于新手而言,有一个项目的完整的目录结构是多么幸福的一件事啊。 个人建议:注意其中的springMVC-servlet.xml的位置。以及源代码包的名称。 代码实战 首先是大管家,web.xml: <?xml version="1.0" encoding="UTF-8"?> < web-app xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" xmlns = "http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation = "http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id = "WebApp_ID" version = "3.1" > < display-name > SpringTest </ display-name > < welcome-file-list > < welcome

SpringMVC

落爺英雄遲暮 提交于 2019-12-09 02:49:42
一、SpringMVC简介 MVC是我们开发WEB应用程序的通用架构方式 MVC的核心思想是业务数据抽取和业务数据呈现相分离。 MVC:M(Model)+V(View)+C(Controller) M(模型层):业务数据的信息表示,通常是业务实体 V(视图层):为用户呈现数据的页面 C(控制层):调用业务逻辑产生合适的数据(Model),同时传递数据(Model)给视图层(View)呈现给用户 MVC:是一种架构模式,将业务逻辑和页面展示分离,使程序分层、分工合作,既相互独立,又协同合作。 二、SpringMVC核心组件 1、 DispatcherServlet :前端控制器,核心 作用:接收请求,响应结果,相当于转发器,中央处理器,降低了组件之间的耦合性。 用户发送请求交给DispatcherServlet,DispatcherServlet是整个流程控制的中心,由它调用其他组件处理用户请求,分发到具体的对应Controller,从而获取到需要的业务数据Model,Model再通过DispatcherServlet传递给View完成页面呈现;DispatcherServlet的存在降低了组件的之间的耦合性。 2、 HandlerMapping :处理器映射器 作用:根据请求的URL,找到对应的Handler,帮助DispatcherServlet找到对应的Controller