一、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整合】的更多相关文章

  1. 【Java EE 学习 79 下】【动态SQL】【mybatis和spring的整合】

    一.动态SQL 什么是动态SQL,就是在不同的条件下,sql语句不相同的意思,曾经在“酒店会员管理系统”中写过大量的多条件查询,那是在SSH的环境中,所以只能在代码中进行判断,以下是其中一个多条件查询 ...

  2. 【Java EE 学习 24 下】【注解在数据库开发中的使用】【反射+注解+动态代理在事务中的应用service层】

    一.使用注解可以解决JavaBean和数据库中表名不一致.字段名不一致.字段数量不一致的问题. 1.Sun公司给jdbc提供的注解 @Table.@Column.@Id.@OneToMany.@One ...

  3. 【Java EE 学习 83 上】【SpringMVC】【基本使用方法】

    一.SpringMVC框架概述 什么是SpringMVC?SpringMVC是一个和Struts2差不多的东西,他们的作用和性质几乎是相同的,甚至开发效率上也差不多,但是在运行效率上SpringMVC ...

  4. 【Java EE 学习 67 下】【OA项目练习】【SSH整合JBPM工作流】【JBPM项目实战】

    一.SSH整合JBPM JBPM基础见http://www.cnblogs.com/kuangdaoyizhimei/p/4981551.html 现在将要实现SSH和JBPM的整合. 1.添加jar ...

  5. 【Java EE 学习 80 下】【调用WebService服务的四种方式】【WebService中的注解】

    不考虑第三方框架,如果只使用JDK提供的API,那么可以使用三种方式调用WebService服务:另外还可以使用Ajax调用WebService服务. 预备工作:开启WebService服务,使用jd ...

  6. 【Java EE 学习 49 下】【Spring学习第一天】【MVC】【注解回顾】

    一.MVC 1.使用Spring有一个非常大的好处,那就是能够实现完全面向接口编程,传统的使用Dao.Service并不能实现完全的面向接口编程. 2.示例:https://github.com/kd ...

  7. 【Java EE 学习 69 下】【数据采集系统第一天】【实体类分析和Base类书写】

    之前SSH框架已经搭建完毕,现在进行实体类的分析和Base类的书写.Base类是抽象类,专门用于继承. 一.实体类关系分析 既然是数据采集系统,首先调查实体(Survey)是一定要有的,一个调查有多个 ...

  8. 【Java EE 学习 35 下】【struts2】【struts2文件上传】【struts2自定义拦截器】【struts2手动验证】

    一.struts2文件上传 1.上传文件的时候要求必须使得表单的enctype属性设置为multipart/form-data,把它的method属性设置为post 2.上传单个文件的时候需要在Act ...

  9. 【Java EE 学习 29 下】【JDBC编程中操作Oracle数据库】【调用存储过程的方法】

    疑问:怎样判断存储过程执行之后返回值是否为空. 一.连接oracle数据库 1.需要的jar包:在安装的oracle中就有,所以不需要到官网下载,我的oracle11g下:D:\app\kdyzm\p ...

随机推荐

  1. css 实现悬浮效果

    <!DOCTYPE html><html><head>  <meta charset="UTF-8">    <title&g ...

  2. linux显示中文

    设置centos显示中文   怎么设置Linux系统中文语言,这是很多小伙伴在开始使用Linux的时候,都会遇到一个问题,就是终端输入命令回显的时候中文显示乱码.出现这个情况一般是由于没有安装中文语言 ...

  3. Linux服务管理

  4. 利用Tomcat内置的servlet实现文件下载功能

    起因 最近博客所在的VPS挂了又要重装系统,又要重装各种软件. 以前我也经常更换VPS,每次更换都是各种坑爹事情..比如要下载java.下载tomcat.下载mysql..........以前每次我都 ...

  5. 保留password模式文本框textbox内的数据不丢失。

    在asp.net 2.0环境下,使用textbox,提交到服务器再传回,如果textbox是password模式的,那么textbox内的密码(星号),就没有了! protected override ...

  6. (转载)android:android.content.res.Resources$NotFoundException: String resource ID #..

    android.content.res.Resources$NotFoundException: String resource ID #0x0 找不到资源文件ID #0x0 原因分析如下: 遇到这种 ...

  7. 移动前端开发之viewport的深入理解

    在移动设备上进行网页的重构或开发,首先得搞明白的就是移动设备上的viewport了,只有明白了viewport的概念以及弄清楚了跟viewport有关的meta标签的使用,才能更好地让我们的网页适配或 ...

  8. java开发问题总结-4-Maven使用问题汇总

    Non-resolvable parent POM [INFO] Scanning for projects... [ERROR] The build could not read 1 project ...

  9. Bestcoder#5 1002

    Bestcoder#5 1002 Poor MitsuiTime Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (J ...

  10. C# 3种方法连接MySql

    转   http://wenku.baidu.com/view/d0cf34708e9951e79b8927c7.html C# 连接MYSQL数据库的方法及示例 连接MYSQL数据库的方法及示例 方 ...