【Java EE 学习 83 下】【SpringMVC】【使用注解替代已过时的API】【SpringMVC、Hibernate整合】
一、SpringMVC中注解的使用
1.为什么要使用注解
之前曾经提到过的三种控制器在spring3.0中都已经被明确标记为过时了,spring3.0推荐使用注解的方式替代三种控制器,实际上使用注解的方式能够大大提高开发效率。
2.使用注解@RequestMapping
使用注解需要对配置文件进行改动:
(1)spring配置文件的改动
<?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"
xsi:schemaLocation="
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.2.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.2.xsd">
<!-- 注解驱动 -->
<mvc:annotation-driven />
<!-- 扫描组件 -->
<context:component-scan base-package="com.kdyzm.controller"></context:component-scan>
<!-- 配置内部视图资源解析器 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/"></property>
<property name="suffix" value=".jsp"></property>
</bean>
</beans>
如上所示,需要增加注解驱动,同时需要进行包扫描。
(2)@RequstMapping注解
该注解是SpringMVC中的核心注解,它直接加到类和方法上;加到类名上代表父路径,加到方法上代表子路径,访问的方法就是父路径+子路径,如下所示:
@Controller
@RequestMapping(value="/person")
public class PersonController {
@Resource(name="personService")
private PersonService personService;
@RequestMapping(value="/save")
public String savePerson(Person p){
this.personService.saveEntity(p);
return "redirect:/person/listAll";
}
}
第一个注解加到了类名上:/person,第二个注解加到了方法上:/save,那么访问该控制器的方法就是:http://localhost:8080/springmvc2/person/save
二、使用注解接收参数的方法
直接将需要的参数放到方法参数列表中,然后在方法中直接使用即可;可以传递的参数类型有:Seriable、自定义对象、HttpServletRequest、Model等,放到了方法的参数列表中的参数会自动进行识别并封装。
如对于一个表单提交的数据,可以直接在控制器方法中定义一个对象实体的参数,这样数据就会自动封装到对象中了;也可以只放置需要的参数类型,比如public updatePerson(String id),这样前端传递过来的id的值就直接拿过来了;如果参数类型是HttpServletRequest,那么可以使用该对象获取各种请求参数,入public String updatePerson(HttpServletRequest request);如果参数是Model类型的,那么实际上就将所有的请求都放到了一个Map对象中,通过Model对象的asMap方法就能够获取该Map对象,接下来直接使用key值获取对应的请求值就可以了。
四种获取参数的方法如下代码所示:
@RequestMapping(value="updatePersonInf")
public String updateMethod(String id,Person person,HttpServletRequest request,Mode model){
System.out.println(id);
System.out.println(person.getId());
System.out.println(request.getParameter("id"));
System.out.println(model.asMap().get("id"));
return "redirect:/person/listAll";
}
三、重定向的方法
SpringMVC中默认使用转发跳转到目标页,如果需要重定向的话,则使用redirect:前缀修饰,如上代码所示。
四、SpringMVC和Hibernate的整合
1.首先是使用到的所有jar包:
antlr-2.7.6.jar
aopalliance.jar
aspectjrt.jar
aspectjweaver.jar
c3p0-0.9.5.jar
commons-collections-3.1.jar
commons-logging-1.1.3.jar
dom4j-1.6.1.jar
hibernate-annotations.jar
hibernate-commons-annotations.jar
hibernate3.jar
javassist-3.9.0.GA.jar
jstl.jar
jta-1.1.jar
junit.jar
log4j-1.2.15.jar
mchange-commons-java-0.2.9.jar
mysql-connector-java-5.1.10-bin.jar
slf4j-api-1.5.8.jar
slf4j-log4j12.jar
spring-aop-3.2.0.RELEASE.jar
spring-aspects-3.2.0.RELEASE.jar
spring-beans-3.2.0.RELEASE.jar
spring-context-3.2.0.RELEASE.jar
spring-context-support-3.2.0.RELEASE.jar
spring-core-3.2.0.RELEASE.jar
spring-expression-3.2.0.RELEASE.jar
spring-jdbc-3.2.0.RELEASE.jar
spring-orm-3.2.0.RELEASE.jar
spring-tx-3.2.0.RELEASE.jar
spring-web-3.2.0.RELEASE.jar
spring-webmvc-3.2.0.RELEASE.jar
spring-webmvc-portlet-3.2.0.RELEASE.jar
standard.jar
2.整合说明:
整合SpringMVC和Hibernate,由于SpringMVC也是Spring的一部分,所以也可以说成第二种"SSH(SpringMVC、Spring、Hibernate)"
Spring版本:spring3.2.0
Hibernate版本:hibernate3.5.6
mysql版本:5.5.25
Eclipse版本:Version: Mars Release (4.5.0)
3.由于比较简单,所以不做赘述了,只是简单做了对Person对象的CRUD,如下图所示:

4.项目练习源代码地址
https://github.com/kdyzm/springmvc2_ssh
【Java EE 学习 83 下】【SpringMVC】【使用注解替代已过时的API】【SpringMVC、Hibernate整合】的更多相关文章
- 【Java EE 学习 79 下】【动态SQL】【mybatis和spring的整合】
一.动态SQL 什么是动态SQL,就是在不同的条件下,sql语句不相同的意思,曾经在“酒店会员管理系统”中写过大量的多条件查询,那是在SSH的环境中,所以只能在代码中进行判断,以下是其中一个多条件查询 ...
- 【Java EE 学习 24 下】【注解在数据库开发中的使用】【反射+注解+动态代理在事务中的应用service层】
一.使用注解可以解决JavaBean和数据库中表名不一致.字段名不一致.字段数量不一致的问题. 1.Sun公司给jdbc提供的注解 @Table.@Column.@Id.@OneToMany.@One ...
- 【Java EE 学习 83 上】【SpringMVC】【基本使用方法】
一.SpringMVC框架概述 什么是SpringMVC?SpringMVC是一个和Struts2差不多的东西,他们的作用和性质几乎是相同的,甚至开发效率上也差不多,但是在运行效率上SpringMVC ...
- 【Java EE 学习 67 下】【OA项目练习】【SSH整合JBPM工作流】【JBPM项目实战】
一.SSH整合JBPM JBPM基础见http://www.cnblogs.com/kuangdaoyizhimei/p/4981551.html 现在将要实现SSH和JBPM的整合. 1.添加jar ...
- 【Java EE 学习 80 下】【调用WebService服务的四种方式】【WebService中的注解】
不考虑第三方框架,如果只使用JDK提供的API,那么可以使用三种方式调用WebService服务:另外还可以使用Ajax调用WebService服务. 预备工作:开启WebService服务,使用jd ...
- 【Java EE 学习 49 下】【Spring学习第一天】【MVC】【注解回顾】
一.MVC 1.使用Spring有一个非常大的好处,那就是能够实现完全面向接口编程,传统的使用Dao.Service并不能实现完全的面向接口编程. 2.示例:https://github.com/kd ...
- 【Java EE 学习 69 下】【数据采集系统第一天】【实体类分析和Base类书写】
之前SSH框架已经搭建完毕,现在进行实体类的分析和Base类的书写.Base类是抽象类,专门用于继承. 一.实体类关系分析 既然是数据采集系统,首先调查实体(Survey)是一定要有的,一个调查有多个 ...
- 【Java EE 学习 35 下】【struts2】【struts2文件上传】【struts2自定义拦截器】【struts2手动验证】
一.struts2文件上传 1.上传文件的时候要求必须使得表单的enctype属性设置为multipart/form-data,把它的method属性设置为post 2.上传单个文件的时候需要在Act ...
- 【Java EE 学习 29 下】【JDBC编程中操作Oracle数据库】【调用存储过程的方法】
疑问:怎样判断存储过程执行之后返回值是否为空. 一.连接oracle数据库 1.需要的jar包:在安装的oracle中就有,所以不需要到官网下载,我的oracle11g下:D:\app\kdyzm\p ...
随机推荐
- sql笨办法同步数据
Helpers.SqlHelper sqlHelper = new Helpers.SqlHelper("server=***;database=Cms;user id=sa;passwor ...
- php实现文件上传与下载(中)
出现不想让用户看见的信息,可以使用错误抑制符号@:当然能echo的东西都是可以赋值给一个变量的: 定义用户上传文件类型,将其放在数组变量allowExt中,用if(!in_array(第一个参数为获取 ...
- 一个用纯CSS实现的下拉菜单
用CSS做下拉列表的特效,代码如下: <html xmlns="http://www.w3.org/1999/xhtml" lang="en"> & ...
- MongoDB笔记
mongodb简介 MongoDB 是一个基于分布式文件存储的数据库.存储的是Bson结构的文档(二进制的JSON),内部执行引擎为JS解释器,把文档存储为BSON结构,在查询时,转换为JS对象,可以 ...
- Nginx+Php Windows部署
http://www.cnblogs.com/huayangmeng/archive/2011/06/15/2081337.html 一定要以下面的形式启动php-cgi php-cgi.exe -b ...
- linux 系统、命令、软件
软件名称:Putty 使用方法:http://jingyan.baidu.com/article/e73e26c0eb063324adb6a737.html 需要资料: 服务IP:228.5624.5 ...
- SqlServer批量刷数据执行事务回滚语句备份
企业进行对数据库执行刷数据工作,一段很长的语句希望同时成功或者失败时用到. 1.建立测试环境 /**************************************************** ...
- SQL Server数据库定时自动备份
SQL Server 数据库定时自动备份[转] 在SQL Server中出于数据安全的考虑,所以需要定期的备份数据库.而备份数据库一般又是在凌晨时间基本没有数据库操作的时候进行,所以我们不可能要求 ...
- SVN部署和使用
一.SVN介绍 svn(subversion)是近年来崛起的版本管理工具,是cvs的接班人.目前,绝大多数开源软件都使用svn作为代码版本管理软件. 二.服务器端和客户端 1.服务器端软件Subver ...
- IOS原生地图与高德地图
原生地图 1.什么是LBS LBS: 基于位置的服务 Location Based Service 实际应用:大众点评,陌陌,微信,美团等需要用到地图或定位的App 2.定位方式 1.GPS定位 ...