SpringMvc学习笔记(二)通过实例学习注解式控制器
springmvc第一天课堂笔记

springmvc 第一天springmvc的基础知识课程安排:第一天:springmvc的基础知识什么是springmvc?springmvc框架原理(掌握)前端控制器、处理器映射器、处理器适配器、视图解析器springmvc入门程序目的:对前端控制器、处理器映射器、处理器适配器、视图解析器学习非注解的处理器映射器、处理器适配器注解的处理器映射器、处理器适配器(掌握)springmvc和mybatis整合(掌握)springmvc注解开发:(掌握)常用的注解学习参数绑定(简单类型、pojo、集合类型(明天讲))自定义参数绑定(掌握)springmvc和struts2区别第二天:springmvc的高级应用参数绑定(集合类型)数据回显上传图片json数据交互RESTful支持拦截器1springmvc框架1.1什么是springmvcspringmvc是spring框架的一个模块,springmvc和spring无需通过中间整合层进行整合。
(struts2与Spring整合的时候需要借助单独的jar包)springmvc是一个基于mvc的web框架。
1.2 mvc 在b/s 系统 下的应用mvc 是一个设计模式,mvc 在b/s 系统 下的应用:C 控制器比如struts2中的filter controller 接口用户请求, 响应request 请求M 模型(model) pojo action service dao请求模型进行处理处理结果返回V 视图 view视图渲染将模型数据填充到request 域response 响应b/s 系统下模型无法将数据填充到视图1.3 springmvc 框架第一步:发起请求到前端控制器(DispatcherServlet)第二步:前端控制器请求HandlerMapping 查找 Handler 可以根据xml 配置、注解进行查找第三步:处理器映射器HandlerMapping 向前端控制器返回Handler 第四步:前端控制器调用处理器适配器去执行Handler 第五步:处理器适配器去执行Handler第六步:Handler执行完成给适配器返回ModelAndView第七步:处理器适配器向前端控制器返回ModelAndViewModelAndView是springmvc框架的一个底层对象,包括Model和view第八步:前端控制器请求视图解析器去进行视图解析根据逻辑视图名解析成真正的视图(jsp)第九步:视图解析器向前端控制器返回View第十步:前端控制器进行视图渲染视图渲染将模型数据(在ModelAndView对象中)填充到request域第十一步:前端控制器向用户响应结果组件:1、前端控制器DispatcherServlet(不需要程序员开发)作用接收请求,响应结果,相当于转发器,中央处理器。
最全最经典spring_mvc教程

spring mvc学习教程(一)-入门实例引言1.MVC:Model-View-Control框架性质的C层要完成的主要工作:封装web请求为一个数据对象、调用业务逻辑层来处理数据对象、返回处理数据结果及相应的视图给用户。
2.简要概述springmvcSpring C 层框架的核心是DispatcherServlet,它的作用是将请求分发给不同的后端处理器,也即使用了一种被称为Front Controller 的模式(后面对此模式有简要说明)。
Spring 的C 层框架使用了后端控制器来、映射处理器和视图解析器来共同完成C 层框架的主要工作。
并且spring 的C 层框架还真正地把业务层处理的数据结果和相应的视图拼成一个对象,即我们后面会经常用到的ModelAndView 对象。
一、入门实例1. 搭建环境在spring的官方API文档中,给出所有包的作用概述,现列举常用的包及相关作用:org.springframework.aop-3.0.5.RELEASE.jar:与Aop编程相关的包org.springframework.beans-3.0.5.RELEASE.jar:提供了简捷操作bean的接口org.springframework.context-3.0.5.RELEASE.jar:构建在beans包基础上,用来处理资源文件及国际化。
org.springframework.core-3.0.5.RELEASE.jar:spring核心包org.springframework.web-3.0.5.RELEASE.jar:web核心包,提供了web层接口org.springframework.web.servlet-3.0.5.RELEASE.jar:web 层的一个具体实包,DispatcherServlet也位于此包中。
后文全部在spring3.0 版本中进行,为了方便,建议在搭建环境中导入spring3.0 的所有jar 包(所有jar 包位于dist 目录下)。
springmvc的知识点总结

springmvc的知识点总结一、控制器1. 控制器是Spring MVC框架中的核心组件,它负责接收请求并处理用户的输入。
在Spring MVC中,控制器通常以注解@Controller标记,并通过@RequestMapping注解来指定处理请求的URL。
2. 一个简单的控制器可以像下面这样定义:```java@Controllerpublic class HomeController {@RequestMapping("/")public String home() {return "index";}}```在这个例子中,HomeController类使用@Controller标记为一个控制器,并使用@RequestMapping("/")注解来指定处理根路径("/")的请求。
该方法返回一个String类型的视图名称,Spring MVC将根据这个名称来查找对应的视图。
3. 控制器方法还可以接收请求参数以及路径变量。
例如:```java@RequestMapping("/user/{id}")public String getUser(@PathVariable("id") long userId, Model model) {User user = userService.getUserById(userId);model.addAttribute("user", user);return "user";}```在这个例子中,@PathVariable注解用于绑定路径变量到方法的参数中。
二、视图解析1. Spring MVC使用视图解析器来将控制器返回的视图名称解析成实际的视图。
在Spring MVC的配置文件中,可以配置多个视图解析器,并按顺序来尝试解析视图名称。
springmvc第二天课堂笔记

springmvc第二天高级知识复习:springmvc框架:DispatcherServlet前端控制器:接收request,进行responseHandlerMapping处理器映射器:根据url查找Handler。
(可以通过xml配置方式,注解方式)HandlerAdapter处理器适配器:根据特定规则去执行Handler,编写Handler时需要按照HandlerAdapter的要求去编写。
Handler处理器(后端控制器):需要程序员去编写,常用注解开发方式。
Handler处理器执行后结果是ModelAndView,具体开发时Handler返回方法值类型包括:ModelAndView、String(逻辑视图名)、void(通过在Handler形参中添加request和response,类似原始servlet开发方式,注意:可以通过指定response响应的结果类型实现json数据输出)View resolver视图解析器:根据逻辑视图名生成真正的视图(在springmvc中使用View对象表示)View视图:jsp页面,仅是数据展示,没有业务逻辑。
注解开发:使用注解方式的处理器映射器和适配器:<!--注解映射器 --><bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandl erMapping"/><!--注解适配器 --><bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandl erAdapter"/>在实际开发,使用<mvc:annotation-driven>代替上边处理器映射器和适配器配置。
Spring MVC3注解学习之简单入门范例

Spring MVC3注解学习之简单入门范例文章均为原创,转载请注明出处。
本文地址:/post/430.html之前做Web应用都是在用Struts2,觉得功能强大,效率也能提升很多,所以一直都很喜欢Struts。
虽然也曾经在接手前人遗留的项目时遭遇过Spring MVC,不过不知道是前人用的不好,还是自己水平差,亦或者是Spring MVC(那个时候还是2)本身的问题,让Spring MVC给自己留下了很不好的印象:配置文件繁琐、功能一般甚至简陋、不能够在开发效率上与Struts2媲美等等问题,致使自己一直以来都是带着偏见看待Spring MVC的,也因此一直都没有再去尝试过。
最近是一次偶然的机会,再次正面遭遇Spring MVC,不过这次它改头换面,由2升级到3了,看到别人基于Spring MVC注解方式写出来的简洁流畅的代码后,惊叹于Spring MVC3的注解驱动能力之强大,代码之简洁,觉得自己以前的偏见简直就是愚昧至极,不由地暗自对Spring MVC有了好感,打算实实在在尝试一把。
不过自己之前对Spring MVC确实不熟,加之这次升级的内容有点多,所以我找来了一份很好的入门文档《Spring3_MVC注解教程》作为自己的领路人。
这份PPT做的很好,本文也是在此基础上有感而发的,在此感谢作者陈雄华先生的辛勤劳动和无私奉献!本文所示代码均基于最新版SpringFrameword3.2.3,请知悉。
Spring MVC框架简介∙支持REST风格的URL∙添加更多注解,可完全注解驱动∙引入HTTP输入输出转换器(HttpMessageConverter)∙和数据转换、格式化、验证框架无缝集成∙对静态资源处理提供特殊支持∙更加灵活的控制器方法签名,可完全独立于Servlet API Spring MVC框架结构框架的实现者如何在应用中使用Spring-MVC?1.在应用中添加Spring框架支持;2.在web.xml中配置Spring-MVC的请求转发器(前端控制器)3.编写Spring-MVC的配置文件4.将任意JavaBean通过注解配置成Controller(控制器)并注解其中的方法5.完成步骤简单明了,接下来我们一步一步详细说明:在应用中加入Spring支持:因为Spring-MVC是属于SpringFramework的一部分,因此要在应用中使用Spring-MVC,就必须以引入Spring基础框架为前提,另外还包括beans、context、aop、web组件,将上述组件的jar及其依赖添加到buildpath下,就算完成了为应用添加Spring框架支持的工作,然后在web.xml中配置Spring的监听器,代码如下:另外,因为是在web应用中使用Spring,因此建议配置一个名为org.springframework.web.util.IntrospectorCleanupListener的监听器来处理资源回收的工作:再配置一个编码过滤器在web.xml中配置Spring-MVC的请求转发器(前端控制器)在应用中使用Spring-MVC比较简单,除了需要引入相关依赖库外,还需要在web.xml配置Spring-MVC的请求转发器,代码如下:编写Spring-MVC的配置文件在上述代码中,我们告知Spring-MVC的请求转发器我们的mvc配置在classpath:mvc-config.xml中,因此我们需要在该文件中正确描述我们的mvc配置信息,配置代码如下:将任意JavaBean通过注解配置成Controller(控制器)并注解其中的方法本文主要示范如何使用注解为应用添加Spring-MVC支持,因此本文中的所有MVC映射配置都采用注解方式,范例Controller如下所示:为了是上面的Controller能够正常使用,我们还需要在WebRoot下创建Controller 中使用的逻辑视图对应的视图文件,以上例中create为例,我们在WEB-INF/jsp/目录下新建jsp文件,内容如下:完成上述四个步骤后,将工程部署到任意web容器(本文采用tomcat6.0),然后启动,即可在浏览器中浏览映射出来的地址,如果需要在记录详细的Spring调试信息,则可以通过配置log4j来实现(这里多说一句,Spring的调试信息真的很详细很丰富,通过分析日志,将有助于我们快速理解和掌握Spring-MVC的工作原理)。
SpringMVC常用注解@Controller,@Service,@repository。。。

SpringMVC常⽤注解@Controller,@Service,@repository。
SpringMVC常⽤注解@Controller,@Service,@repository,@Componentcontroller层使⽤@controller注解@Controller ⽤于标记在⼀个类上,使⽤它标记的类就是⼀个SpringMVC Controller 对象。
分发处理器将会扫描使⽤了该注解的类的⽅法。
通俗来说,被Controller标记的类就是⼀个控制器,这个类中的⽅法,就是相应的动作。
@RequestMapping是⼀个⽤来处理请求地址映射的注解,可⽤于类或⽅法上。
⽤于类上,表⽰类中的所有响应请求的⽅法都是以该地址作为⽗路径。
⽐如图⼀中,跳转到登录页⾯的路径就是localhost:8080/xxx-war/user/toLoginservice采⽤@service注解例:@Service("userService")注解是告诉,当Spring要创建UserServiceImpl的的实例时,bean的名字必须叫做"userService",这样当Action需要使⽤UserServiceImpl的的实例时,就可以由Spring创建好的"userService",然后注⼊给Action。
dao层使⽤@repository注解@Repository(value="userDao")注解是告诉Spring,让Spring创建⼀个名字叫“userDao”的UserDaoImpl实例。
当Service需要使⽤Spring创建的名字叫“userDao”的UserDaoImpl实例时,就可以使⽤@Resource(name = "userDao")注解告诉Spring,Spring把创建好的userDao注⼊给Service即可。
聊聊springmvc中controller的方法的参数注解方式

聊聊springmvc中controller的⽅法的参数注解⽅式绪论相信接触过springmvc的同学都知道,在springmvc的控制层中,我们在⽅法的参数中可以使⽤注解标识。
⽐如下⾯例⼦:public Map<String, Object> login(@PathVariable("loginParams") String loginParams)@PathVariable注解就标识了这个参数是作为⼀个请求地址模板变量的(不清楚的同学可以先学习⼀下restful设计风格)。
这些注解都是spring内置注解,那么我们可不可以⾃定义注解来实现⾃⼰的业务逻辑处理呢?答案是可以的,spring团队的⼀⼤设计哲学思想就是让⾃⼰的系统有⽆限可能性的拓展。
spring框架底层⼜是如何解析这些参数的注解的呢?那么在学习⾃定义参数注解之前,我们先了解⼀下spring底层是怎么来解析这些注解参数的。
实际上,这些处理过程是要涉及到配置⽂件的加载和解析以及⼀堆的各种处理,⼩弟功⼒尚浅,就分析不到那么多了,只是简单过⼀下。
内置参数注解的解析下⾯,我们从源码⾓度来分析:⾸先,sping定义了⼀个统⼀的⽅法参数注解解析接⼝HandlerMethodArgumentResolver,所有⽅法参数解析类都需要实现这个接⼝,接⼝很简单,定义了两个⽅法:public interface HandlerMethodArgumentResolver {/*** 判断⽅法参数是否包含指定的参数注解* 含有返回true,不含有返回false*/boolean supportsParameter(MethodParameter parameter);/*** 在给定的具体的请求中,把⽅法的参数解析到参数值⾥⾯,返回解析到的参数值,没有返回null* 只有在supportsParameter返回true的时候,resolveArgument⽅法才会执⾏*/Object resolveArgument(MethodParameter parameter, ModelAndViewContainer mavContainer,NativeWebRequest webRequest, WebDataBinderFactory binderFactory) throws Exception;}现在,带着⼤家看看@PathVariable参数注解的解析具体过程,源代码如下:public class PathVariableMethodArgumentResolver extends AbstractNamedValueMethodArgumentResolverimplements UriComponentsContributor {/** 这⾥省略其它⽅法*/@Overridepublic boolean supportsParameter(MethodParameter parameter) {// 不含有PathVariable注解,返回falseif (!parameter.hasParameterAnnotation(PathVariable.class)) {return false;}// PathVariable注解的参数类型是Map类型if (Map.class.isAssignableFrom(parameter.getParameterType())) {String paramName = parameter.getParameterAnnotation(PathVariable.class).value();return StringUtils.hasText(paramName);}return true;}// PathVariableMethodArgumentResolver没有重写resolveArgument,直接使⽤AbstractNamedValueMethodArgumentResolver默认⾏为/** 如果supportsParameter返回true,在这⾥真正处理参数**/protected void handleResolvedValue(Object arg, String name, MethodParameter parameter,ModelAndViewContainer mavContainer, NativeWebRequest request) {String key = View.PATH_VARIABLES;int scope = RequestAttributes.SCOPE_REQUEST;Map<String, Object> pathVars = (Map<String, Object>) request.getAttribute(key, scope);if (pathVars == null) {pathVars = new HashMap<String, Object>();request.setAttribute(key, pathVars, scope);}// 把参数的key-value放进请求域,也就是把值赋给了⽅法参数,⽐如请求路径是: api/v1/task/{id},⽅法参数@PathVariable("id") String taskId,那么此时name=taskId, org=id的值// 当然,怎么把请求地址中对应的值获取出来,不在这篇博客的讨论范畴。
spring mvc注解实例

本文主要介绍使用注解方式配置的spring mvc,包括数据访问层的实现web.xml配置:<?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="/2001/XMLSchema-instance" xmlns="http:// /xml/ns/javaee" xmlns:web="/xml/ns/javaee/web-ap p_2_5.xsd" xsi:schemaLocation="/xml/ns/javaee http://java.su /xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5"><display-name>s3h3</display-name><context-param><param-name>contextConfigLocation</param-name><param-value>classpath:applicationContext*.xml</param-value></context-param><listener><listener-class>org.springframework.web.context.ContextLoaderListener</l istener-class></listener><servlet><servlet-name>spring</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servle t-class><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>spring</servlet-name> <!-- 这里在配成spring,下边也要写一个名为spring-servlet.xml的文件,主要用来配置它的controller --><url-pattern>*.do</url-pattern></servlet-mapping><welcome-file-list><welcome-file>index.jsp</welcome-file></welcome-file-list></web-app>spring-servlet,主要配置controller的信息<?xml version="1.0" encoding="UTF-8"?><beans xmlns="/schema/beans"xmlns:xsi="/2001/XMLSchema-instance" xmlns:p="http:// /schema/p"xmlns:context="/schema/context"xsi:schemaLocation="/schema/beans http://www. /schema/beans/spring-beans-3.0.xsd/schema/aop http://www.springframework.o rg/schema/aop/spring-aop-3.0.xsd/schema/tx http://www.springframework.or g/schema/tx/spring-tx-3.0.xsd/schema/context http://www.springframewo /schema/context/spring-context-3.0.xsd"><context:annotation-config /><!-- 把标记了@Controller注解的类转换为bean --><context:component-scan base-package="com.mvc.controller"/> <!-- 启动Spring MVC的注解功能,完成请求和注解POJO的映射 --><bean class="org.springframework.web.servlet.mvc.annotation.AnnotationM ethodHandlerAdapter"/><!-- 对模型视图名称的解析,即在模型视图名称添加前后缀 --><bean class="org.springframework.web.servlet.view.InternalResourceView Resolver"p:prefix="/WEB-INF/view/" p:suffix=".jsp"/><bean id="multipartResolver"class="monsMultipartRe solver"p:defaultEncoding="utf-8"/></beans>applicationContext.xml代码<?xml version="1.0" encoding="UTF-8"?><beans xmlns="/schema/beans"xmlns:aop="/schema/aop" xmlns:context="http:// /schema/context"xmlns:p="/schema/p" xmlns:tx="http://www.sprin /schema/tx"xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/schema/beans http://www.springframewo /schema/beans/spring-beans-3.0.xsd/schema/context http://www.springframework.o rg/schema/context/spring-context-3.0.xsd/schema/aop /s chema/aop/spring-aop-3.0.xsd/schema/tx /sc hema/tx/spring-tx-3.0.xsd"><context:annotation-config /><context:component-scan base-package="com.mvc"/><!-- 自动扫描所有注解该路径 --><context:property-placeholder location="classpath:/hibernate.properties "/><bean id="sessionFactory"class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFacto ryBean"><property name="dataSource" ref="dataSource"/><property name="hibernateProperties"><props><prop key="hibernate.dialect">${dataSource.dialect}</prop><prop key="hibernate.hbm2ddl.auto">${dataSource.hbm2ddl.auto}</prop><prop key="hibernate.hbm2ddl.auto">update</prop></props></property><property name="packagesToScan"><list><value>com.mvc.entity</value><!-- 扫描实体类,也就是平时所说的model --></list></property></bean><bean id="transactionManager"class="org.springframework.orm.hibernate3.HibernateTransactionManager"> <property name="sessionFactory" ref="sessionFactory"/><property name="dataSource" ref="dataSource"/></bean><bean id="dataSource"class="org.springframework.jdbc.datasource.DriverManagerDataSource"><property name="driverClassName" value="${dataSource.driverClassName} "/><property name="url" value="${dataSource.url}"/><property name="username" value="${ername}"/><property name="password" value="${dataSource.password}"/></bean><!-- Dao的实现 --><bean id="entityDao" class="com.mvc.dao.EntityDaoImpl"><property name="sessionFactory" ref="sessionFactory"/></bean><tx:annotation-driven transaction-manager="transactionManager"/><tx:annotation-driven mode="aspectj"/><aop:aspectj-autoproxy/></beans>hibernate.properties数据库连接配置dataSource.password=123ername=rootdataSource.databaseName=testdataSource.driverClassName=com.mysql.jdbc.DriverdataSource.dialect=org.hibernate.dialect.MySQL5DialectdataSource.serverName=localhost:3306dataSource.url=jdbc:mysql://localhost:3306/testdataSource.properties=user=${ername};databaseName=${dataSource.d atabaseName};serverName=${dataSource.serverName};password=${dataSource.passwor d}dataSource.hbm2ddl.auto=update配置已经完成,下面开始例子先在数据库建表,例子用的是mysql数据库CREATE TABLE `test`.`student` (`id` int(10) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(45) NOT NULL,`psw` varchar(45) NOT NULL,PRIMARY KEY (`id`))建好表后,生成实体类package com.mvc.entity;import java.io.Serializable;import javax.persistence.Basic;import javax.persistence.Column;import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.GenerationType;import javax.persistence.Id;import javax.persistence.Table;@Entity@Table(name = "student")public class Student implements Serializable {private static final long serialVersionUID = 1L;@Id@Basic(optional = false)@GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "id", nullable = false)private Integer id;@Column(name = "name")private String user;@Column(name = "psw")private String psw;public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getUser() {return user;}public void setUser(String user) {er = user;}public String getPsw() {return psw;}public void setPsw(String psw) {this.psw = psw;}}Dao层实现package com.mvc.dao;import java.util.List;public interface EntityDao {public List<Object> createQuery(final String queryString);public Object save(final Object model);public void update(final Object model);public void delete(final Object model);}package com.mvc.dao;import java.util.List;import org.hibernate.Query;import org.springframework.orm.hibernate3.HibernateCallback;import org.springframework.orm.hibernate3.support.HibernateDaoSupport;public class EntityDaoImpl extends HibernateDaoSupport implements EntityDao {public List<Object> createQuery(final String queryString) { return (List<Object>) getHibernateTemplate().execute(new HibernateCallback<Object>() {public Object doInHibernate(org.hibernate.Session sessio n)throws org.hibernate.HibernateException {Query query = session.createQuery(queryString);List<Object> rows = query.list();return rows;}});}public Object save(final Object model) {return getHibernateTemplate().execute(new HibernateCallback<Object>() {public Object doInHibernate(org.hibernate.Session sessio n)throws org.hibernate.HibernateException {session.save(model);return null;}});}public void update(final Object model) {getHibernateTemplate().execute(new HibernateCallback<Object>() { public Object doInHibernate(org.hibernate.Session session)throws org.hibernate.HibernateException {session.update(model);return null;}});}public void delete(final Object model) {getHibernateTemplate().execute(new HibernateCallback<Object>() { public Object doInHibernate(org.hibernate.Session session)throws org.hibernate.HibernateException {session.delete(model);return null;}});}}Dao在applicationContext.xml注入<bean id="entityDao" class="com.mvc.dao.EntityDaoImpl"><property name="sessionFactory" ref="sessionFactory"/></bean>Dao只有一个类的实现,直接供其它service层调用,如果你想更换为其它的Dao实现,也只需修改这里的配置就行了。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Springmvc学习笔记(二)
通过实例学习注解式控制器
一、注解式控制器简介
Spring2.5之前,我们都是通过实现Controller接口或其实现来定义我们的处理器类。
Spring2.5之后引入注解式处理器支持,通过@Controller 和@RequestMapping注解定义我们的处理器类。
通过笔记(一)的例子,我们已经初步认识了基于注解的控制器实现方式。
下面我们来详细介绍一下注解式控制器运行流程与使用方法。
@Controller:用于标识是处理器类;
@RequestMapping:请求到处理器功能方法的映射规则;
@RequestParam:请求参数到处理器功能处理方法的方法参数上的绑定;
@ModelAttribute:请求参数到命令对象的绑定;
@SessionAttributes:用于声明session级别存储的属性,放置在处理器类上,通常列出模型属性(如@ModelAttribute)对应的名称,则这些属性会透明的保存到session中;
@CookieValue:cookie数据到处理器功能处理方法的方法参数上的绑定;
@RequestHeader:请求头(header)数据到处理器功能处理方法的方法参数上的绑定;
@RequestBody:请求的body体的绑定(通过HttpMessageConverter进行类型转换);
@ResponseBody:处理器功能处理方法的返回值作为响应体(通过HttpMessageConverter进行类型转换);
@ResponseStatus:定义处理器功能处理方法/异常处理器返回的状态码和原因;
@ExceptionHandler:注解式声明异常处理器;
@PathVariable:请求URI中的模板变量部分到处理器功能处理方法的方法参数上的绑定,从而支持RESTful架构风格的URI;
二、用户管理系统实例(Springmvc+hibernate+Spring)
(一)环境搭建
1. 创建User实体类
2. 进行Dao层,Service层的搭建,这里不再赘述。
3. 创建Spring的配置文件,配置基于注解的IOC配置。
4. 创建hibernate配置文件,配置数据库方言,注册User。
5. 创建pringmvc配置文件,开启基于注解的控制器配置
6. 修改web.xml。
这里只是简略的说明一下环境搭建的步骤,具体的配置见源码。
(二)功能的实现
1. UserController:
也就是说,我要访问这个控制器里的方法,url必须为”user/…”
2. 查询User列表
list.jsp页面:
3. 添加User:
list.jsp页面:
add.jsp
4. 修改User
list.jsp中:
update.jsp:
5. 登录LoginController:
login.jsp
6. 注销
list.jsp中:
(三)系统实现
1. 启动tomcat,访问localhost:8080/springmvc_hibernate_spring/login/
跳转到了http://localhost:8080/springmvc_hibernate_spring/user/list
添加用户:
修改用户:。