SpringMVC讲义ppt:第3章 Spring MVC的常用注解
SpringMVC精品PPT课件

1. InternalResourceViewResolver (1) 典型的JSP视图,有“addBook”—— /WEB-INF/jsp/addBook.jsp (2) 自动位于视图解析链中的最后一个,如果 InternalResourceViewResolver找不到视图,则会报404异常 <bean id="internalResourceViewResolver" … <property name="prefix" value="/WEB-INF/jsp/" /> <property name="suffix" value=".jsp" /> </bean>
Spring MVC相关配置
• Web.xml — 配置Spring MVC的FrontController(DispatcherServlet) — 配置Spring 配置文件的位置 — 其他配置(Servlet、Filter等)
• Spring配置文件 — 配置HandlerMapping(可基于注解) — 配置ViewResolver
Spring MVC处理流程 —— Controller
1. Controller负责接收从DispatchServlet转发的URL请求(中间会 插入interceptor的调用);
Spring MVC常用注解

在Java的Spring开发中经常使用一些注解,例如 @XXX 等等,在网上看到收集整理碎片知识,便于懒人计划^=^...过去,Spring使用的Java Bean对象必须在配置文件[一般为application.xml] 中进行配置,然后才能使用,但Spring2.5版之后,引入了配置注解功能,操作更简单,但是不了解的就抽象了,所以有必要了解一下一些注解的知识;一,首选注意,注解,注入需要的JAR包,即有common-annotations.jar 包的支持;二,要使用注解的注入功能需要在Spring配置文件[一般为application.xml]进行必要的配置才能使用注解,注入功能,例如下面;参见/blog/16700301.<beans xmlns="...">2.<!-- 添加注解驱动 -->3.<context:annotation-config/>4.5.<!-- 默认扫描的包路径 -->6.<context:component-scan base-package=".xxx"/>7.8.<!--指定默认扫描的包路径,同时指定不扫描的包,如默认扫描包下的Service不扫描-->9. <!--10.<context:component-scan base-package="xx.xxx.yyy"/>11.<context:exclude-filter type="annotation"expression="xx.xxx.yyy.Service"/>12.</context:component-scan>13. -->14.15.<!-- Spring MVC 必须的配置 -->16.<mvc:annotation-driven/>17.18.<!-- 配置js,css等静态文件直接映射到对应的文件夹,不被DispatcherServlet处理 -->19.<mvc:resources location="/resources/"mapping="/resources/**"/>20.21.<!-- 定义一些视图控制器,完成访问路径到返回视图的映射关系 -->22.<mvc:view-controller path="/"view-name="forward:/logon"/>23.<mvc:view-controller path="/permission/login"view-name="permission/login"/>24.<mvc:view-controller path="/permission/logout"view-name="permission/login"/>25.<!-- ...其他Bean的配置... -->26.</beans>其中<context:annotation-config/>的作用是隐式地向 Spring 容器注册如下四个Bean,这是注解,注入功能的驱动:AutowiredAnnotationBeanPostProcessor,CommonAnnotationBeanPostProcessor,PersistenceAnnotationBeanPostProcessor,RequiredAnnotationBeanPostProcessor具体解释例如:.如果想使用@Resource 、@PostConstruct、@PreDestroy等注解就必须声明CommonAnnotationBeanPostProcessor。
SpringMVC常用注解说明

SpringMVC常用注解:1、@Controller在SpringMVC 中,控制器Controller 负责处理由DispatcherServlet 分发的请求,它把用户请求的数据经过业务处理层处理之后封装成一个Model ,然后再把该Model 返回给对应的View 进行展示。
在SpringMVC 中提供了一个非常简便的定义Controller 的方法,你无需继承特定的类或实现特定的接口,只需使用@Controller 标记一个类是Controller ,然后使用@RequestMapping 和@RequestParam 等一些注解用以定义URL 请求和Controller 方法之间的映射,这样的Controller 就能被外界访问到。
此外Controller 不会直接依赖于HttpServletRequest 和HttpServletResponse 等HttpServlet 对象,它们可以通过Controller 的方法参数灵活的获取到。
@Controller 用于标记在一个类上,使用它标记的类就是一个SpringMVC Controller 对象。
分发处理器将会扫描使用了该注解的类的方法,并检测该方法是否使用了@RequestMapping 注解。
@Controller 只是定义了一个控制器类,而使用@RequestMapping 注解的方法才是真正处理请求的处理器。
单单使用@Controller 标记在一个类上还不能真正意义上的说它就是SpringMVC 的一个控制器类,因为这个时候Spring 还不认识它。
那么要如何做Spring 才能认识它呢?这个时候就需要我们把这个控制器类交给Spring 来管理。
有两种方式:(1)在SpringMVC 的配置文件中定义MyController 的bean 对象。
(2)在SpringMVC 的配置文件中告诉Spring 该到哪里去找标记为@Controller 的Controller 控制器。
SpringMVC中常用的注解

SpringMVC 中常用的注解 spring 从2.5版本开始在编程中引入注解,用户可以使用@RequestMapping ,@RequestParam , @ModelAttribute 等等这样类似的注解。
到目前为止,Spring 的版本虽然发生了很大的变化,但注解的特性却是一直延续下来,并不断扩展,让广大的开发人员的双手变的更轻松起来,这都离不开Annotation 的强大作用,今天我们就一起来看看Spring MVC 4中常用的那些注解吧。
1. @ControllerController 控制器是通过服务接口定义的提供访问应用程序的一种行为,它解释用户的输入,将其转换成一个模型然后将试图呈献给用户。
Spring MVC 使用 @Controller 定义控制器,它还允许自动检测定义在类路径下的组件并自动注册。
如想自动检测生效,需在XML 头文件下引入 spring-context:1 2 3 4 5 678910 11 12 <?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.spr /schema/beans"xmlns:xsi="/2001/XMLSchema-instance"xmlns:p="/schema/p"xmlns:context="/schema/context " xsi:schemaLocation=" /schema/beans /schema/beans/spring-b eans.xsd /schema/context /schema/context/spring -context.xsd"><context:component-scan base-package="org.springframework.s13 amples.petclinic.web"/><!-- ... --></beans>2. @RequestMapping我们可以 @RequestMapping 注解将类似 “/favsoft ”这样的URL 映射到整个类或特定的处理方法上。
springMVC详解以及注解说明

springMVC详解以及注解说明基于注释(Annotation)的配置有越来越流行的趋势,Spring 2.5 顺应这种趋势,提供了完全基于注释配置Bean、装配Bean 的功能,您可以使用基于注释的Spring IoC 替换原来基于XML 的配置。
本文通过实例详细讲述了Spring 2.5 基于注释IoC 功能的使用。
概述注释配置相对于XML 配置具有很多的优势:∙ 它可以充分利用Java 的反射机制获取类结构信息,这些信息可以有效减少配置的工作。
如使用JPA 注释配置ORM 映射时,我们就不需要指定PO 的属性名、类型等信息,如果关系表字段和PO 属性名、类型都一致,您甚至无需编写任务属性映射信息——因为这些信息都可以通过Java 反射机制获取。
∙ 注释和Java 代码位于一个文件中,而XML 配置采用独立的配置文件,大多数配置信息在程序开发完成后都不会调整,如果配置信息和Java 代码放在一起,有助于增强程序的内聚性。
而采用独立的XML 配置文件,程序员在编写一个功能时,往往需要在程序文件和配置文件中不停切换,这种思维上的不连贯会降低开发效率。
因此在很多情况下,注释配置比XML 配置更受欢迎,注释配置有进一步流行的趋势。
Spring 2.5 的一大增强就是引入了很多注释类,现在您已经可以使用注释配置完成大部分XML 配置的功能。
在这篇文章里,我们将向您讲述使用注释进行Bean 定义和依赖注入的内容。
Spring2.5的注释Spring 2.5 提供了AutowiredAnnotationBeanPostProcessor、CommonAnnotationBeanPostProcessor、PersistenceAnnotationBeanPostProcessor 和RequiredAnnotationBeanPostProcessor这四个主要的关于Annotation 的BeanPostProcessor。
详解springmvc常用5种注解

详解springmvc常⽤5种注解⼀、组件型注解:1、@Component 在类定义之前添加@Component注解,他会被spring容器识别,并转为bean。
2、@Repository 对Dao实现类进⾏注解 (特殊的@Component)3、@Service ⽤于对业务逻辑层进⾏注解, (特殊的@Component)4、@Controller ⽤于控制层注解, (特殊的@Component)以上四种注解都是注解在类上的,被注解的类将被spring初始话为⼀个bean,然后统⼀管理。
⼆、请求和参数型注解:1、@RequestMapping:⽤于处理请求地址映射,可以作⽤于类和⽅法上。
●value:定义request请求的映射地址●method:定义地request址请求的⽅式,包括【GET, POST, HEAD, OPTIONS, PUT, PATCH, DELETE, TRACE.】默认接受get请求,如果请求⽅式和定义的⽅式不⼀样则请求⽆法成功。
●params:定义request请求中必须包含的参数值。
●headers:定义request请求中必须包含某些指定的请求头,如:RequestMapping(value = "/something", headers = "content-type=text/*")说明请求中必须要包含"text/html", "text/plain"这中类型的Content-type头,才是⼀个匹配的请求。
●consumes:定义请求提交内容的类型。
●produces:指定返回的内容类型,仅当request请求头中的(Accept)类型中包含该指定类型才返回@RequestMapping(value="/requestTest.do",params = {"name=sdf"},headers = {"Accept-Encoding=gzip, deflate, br"},method = RequestMethod.GET) public String getIndex(){System.out.println("请求成功");return "index";}上⾯代码表⽰请求的⽅式为GET请求,请求参数必须包含name=sdf这⼀参数,然后请求头中必须有 Accept-Encoding=gzip, deflate, br这个类型头。
SpringMvc常用注解

@Controller@Controller 负责注册一个bean 到spring 上下文中,bean 的ID 默认为类名称开头字母小写,你也可以自己指定,如下方法一:@Controllerpublic class TestController {}方法二:@Controller("tmpController")public class TestController {}@RequestMapping1.@RequestMapping用来定义访问的URL,你可以为整个类定义一个@RequestMapping,或者为每个方法指定一个。
把@RequestMapping放在类级别上,这可令它与方法级别上的@RequestMapping注解协同工作,取得缩小选择范围的效果。
例如:@RequestMapping("/test")public class TestController {}则,该类下的所有访问路径都在/test之下。
2.将@RequestMapping用于整个类不是必须的,如果没有配置,所有的方法的访问路径配置将是完全独立的,没有任何关联。
3.完整的参数项为:@RequestMapping(value="",method ={"",""},headers={},params={"",""}),各参数说明如下:value :String[] 设置访问地址method: RequestMethod[]设置访问方式,字符数组,查看RequestMethod 类,包括GET, HEAD, POST, PUT, DELETE, OPTIONS, TRACE,常用RequestMethod.GET,RequestMethod.POSTheaders:String[] headers一般结合method = RequestMethod.POST使用params: String[] 访问参数设置,字符数组例如:userId=id4.value的配置还可以采用模版变量的形式,例如:@RequestMapping (value="/owners/{ownerId}", method=RequestMethod.GET),这点将在介绍@PathVariable中详细说明。
SpringMVC入门介绍课件

微服务架构:SpringMVC可 以作为微服务架构中的Web服 务层,提供RESTful API接口, 支持服务治理和负载均衡。
企业级应用开发: SpringMVC支持企业级应用 开发,提供了事务管理、安全 控制等功能,可以方便地集成 其他Spring框架。
SpringMVC的基本 概念
控制器(Controller)
04
配置:在SpringMVC的配置文件中,通过配置拦截器链来指定拦截器的执行顺序和拦截范围。
异常处理
SpringMVC使用
A
HandlerExceptionResolver
接口来处理异常
可以自定义异常处理器,实现
B
HandlerExceptionResolver
接口
异常处理器可以处理特定的异
C
常类型,也可以处理所有异常
SpringMVC入门介绍课件
演讲人
目录
01. S p r i n g M VC 概 述
02.
SpringMVC的基本 概念
03.
SpringMVC的工作 原理
04.
SpringMVC的实战 案例
SpringMVC概述
什么是SpringMVC
01
SpringMVC是一种基于Java的Web 应用框架
05
06
07
创建一个视图文件, 并使用JSP或 Thymeleaf等模板 引擎编写页面内容
配置SpringMVC 的配置文件,并设 置视图解析器、静 态资源处理等参数
启动项目,并在浏 览器中访问控制器 方法对应的URL, 查看页面效果
04
在方法内部编写业 务逻辑,并返回视 图名称
编写控制器和视图
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
addAttribute(String attributeName , Object attributeValue)
Model和ModelMap使用示例
@ModelAttribute修饰的userModel方法会先于login调用,它把请求参数值赋给对应变量, 可以向方法中的Model添加对象,前提是要在方法签名中加入一个Model类型的参数
信息转换
在web应用程序中,客户端浏览器和服务器端存在着大量的信息交换,数据传输的格式也 多样化:纯文本字符串、xml、json、java对象等。数据从一处传递到另一处,通常需要进行 格式的转换。而对于web服务器端的spring框架而言,通常情况下需要如下的信息转换: (1)将http请求中携带的数据(xml或json格式)转换为java POJO对象; (2)将POJO对象绑定到请求处理方法的参数中; (3)将POJO对象输出到响应信息中 Spring MVC框架中定义了HttpMessageConvert<T>接口,也提供了这个接口的多个实现类, 通过这些类(或第三方实现类),程序员可以方便地实现信息转换。这些实现类有:
var json = '{"a": "Hello", "b": "World"}'; //这是一个 JSON 字符串,本质是一个字符串 JSON 和 JS 对象互转 要实现从对象转换为 JSON 字符串,使用 JSON.stringify() 方法: var json = JSON.stringify({a: 'Hello', b: 'World'}); //结果是 '{"a": "Hello", "b": "World"}' 要实现从 JSON 转换为对象,使用 JSON.parse() 方法: var obj = JSON.parse('{"a": "Hello", "b": "World"}'); //结果是 {a: 'Hello', b: 'World'}
@RequestMapping({“hello1”, “h也可以是一个空字符串,此时方法被映 射到网站项目根目录下
method属性
consumes属性
produces属性
params属性
headers属性
Referer表示用户从该URL代表的页面出发访问当前请求的页面
value属性
value属性:其属性值是URL地址,可以同时写上 多个URL地址:
@RequestMapping(value={“hello1”, “hello2”, “hello3”})
因为value是默认属性,当@RequestMapping只 设有value一个属性时,书写时可以省掉属性名:
请求处理方法可出现的参数类型
每个请求处理方法可以多个不同类型的参数
请求处理方法可返回的类型
每个请求处理方法以返回的类型:
Model和ModelAndView
在请求处理方法可出现和返回的参数类型中,最重要的就是Model和ModelAndView了。 对于MVC框架,控制器Controller执行业务逻辑,用于产生模型数据(Model),而视图(View) 则用于渲染模型数据。 如何将模型数据传递给视图是Spring MVC框架的一项重要工作,Spring MVC提供了多 种途径输出模型数据,如:
@ModelAttributes注解
5、用@ModelAttributes注释一个请求处理方法的参数:
userModel5( )方法会先于login5( )方法被调用,在userModel5( )方法中生成user对象并添加 到model中,用属性user来标识,而在login5( )方法中,@ModelAttribute(“user”)注释的形参 变量user会获取model中的这个user属性。
@ModelAttributes注解
4、@ModelAttributes和@RequestMapping注释同一个方法: 例如: @ModelAttribute(value=“username”) @RequestMapping(value=“/login4”) public String login4( ){return “admin”;} 此时login4方法的返回值并不是一个视图名称,而是model对象中”username”属性的属性值, 而视图名称则取@RequestMapping注解中的URI:/login4,即最终会定位到login4.jsp页面。
@ModelAttributes注解
2、使用形式为@ModelAttributes,所修饰的方法的返回值为void: 例如: @ModelAttribute public void userModel(…,Model model){………………model.addAttribute(……);} 这表示在Model对象中加入的属性名称和值都由model.addAttribute(……);来决定。
第3章 Spring MVC的常用注解
@Controller注解
示例:HellowWorldController类
Springmvc-config.xml
经过视图解析后,视图的完整路径为: /WEB-INF/content/helloWorld.jsp
@RequestMapping注解
@RequestMapping注解支持的属性
信息转换
信息转换
信息转换
什么是JSON格式
JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式。 JSON 是 JS 对象的字符串表示法,它使用文本表示一个 JS 对象的信息,本质是一个字符串。 如
var obj = {a: 'Hello', b: 'World'}; //这是一个对象,注意键名也是可以使用引号包裹的
示例:接收JSON格式的数据
使用fastjson来接收json格式的数据
使用fastjson来返回json格式的数据
转换XML数据
接收http请求中的XML数据
综合案例:动态刷新评论内容
1、使用形式为@ModelAttributes(value=“名称1”),所修饰的方法的返回值类型为某个具体类 例如: @ModelAttribute(“user”) public User userModel(……){………………return userObject;} 这表示会在Model中加入的属性值是userObject,属性名为”user”。
URI Controller View
/{formname}
loginForm( formName )
{formname}.jsp
/login
login(loginname, password, model )
welcome.jsp
@ModelAttributes注解
@ModelAttributes注解的用法有多种形式:
get: /user/register
registerForm( )
registerForm.jsp
post: /user/register 参数:loginname 、password、username
register(loginname, password, username )
loginForm.jsp
/user/login 参数:loginname、password
login(loginname, password )
welcome.jsp
@PathVariable注解
@RequestHeader注解
@CookieValue注解
@SessionAttributes注解
@SessionAttributes注解示例
ModelAndView
@RequestParam注解
该注解的原型类是org.springframework.web.bind.annotation.RequestParam,用于将指定 请求参数赋值给方法中的形参
@RequestMapping注解和@RequestParam注解示例
URI Controller View
3、使用形式为@ModelAttributes,所修饰的方法的返回值为为某个具体类: 例如: @ModelAttribute
public User userModel(……){………………return userObject;}
这表示在Model对象中加入的属性值是userObject,属性名为user(userObject对象所属类型 名的小写字母形式)。
转换JSON数据
示例:接收JSON格式的数据
示例中前端引用了jQuery库和json库,后端(服务器端)除了引用spring库外,还 引用了jackson库。 在前端json库中定义了一个JSON对象,通过该对象可以很方便地对json进行操作。 springmvc-config.xml配置文档需要增加一些配置信息: