本例采用Eclipse实现spring+springMVC+hibernate项目的建立,在项目建立的过程中进行一定讲解,方便理解是如何开发使用spring+springMVC+hibernate的思想。
接下来是具体的开发步骤:
一、初步开发环境搭建
1.使用Eclipse创建一个dynamic web project,并在lib下导入开发所需、相应的包,可以在文末尾下载。(主要包括Spring、Hiberrnate、log4j、jdbc等的相关包)
2.修改WebRoot根目录下WEB-INF 文件夹下的配置文件Web.xml
web.xml。配置Web.xml的意义就是集成SpingMVC和Hibernate框架,简单的说,就是告诉系统我要用SpingMVC和Hibernate这两种技术了。
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
配置SpringMVC的核心控制器 DispatcherServlet(前端控制器)
<servlet>
<servlet-name>city</servlet-name> <!-- 注意名称,要在web.xml同级目录下给这个核心控制器编写配置文件 -->
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>city</servlet-name>
<url-pattern>/</url-pattern><!-- 过滤地址类型 -->
配置编码过滤器
该过滤器位于org.springframework.web.filter包中,指向类CharacterEncodingFilter是SpringMVC所提供的。
</servlet-mapping><filter>
<filter-name>CharacterFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CharacterFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
创建Spring的监听器
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener><!-- 在web容器启动时,自动装配ApplicationContext的配置信息 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath*:beans.xml</param-value>
</context-param> <!-- 设置Spring容器加载配置文件路径 Spring 的监听器可以通过这个上下文参数来获取beans.xml的位置 -->
上面的这个配置很重要,这个配置就是Spring+Hibernate思想的体现, 经过对contextConfigLocation的配置就可以在beans.xml中设置Hibernate的对应配置
ContextLoaderListener监听器的作用就是启动Web容器时,自动装配ApplicationContext.xml的配置信息。ApplicationContext.xml的文件位置就可以有两种默认实现:
第一种:直接将之放到/WEB-INF下,之后在web.xml中声明一个listener。
第二种:将之放到classpath下,但是此时要在web.xml中加入,用它来指明你的applicationContext.xml的位置以供web容器来加载。
这里再说一下ApplicationContext的作用:
读取bean配置文档;管理bean的加载;实例化;维护bean之间的依赖关系;负责bean的声明周期;国际化支持;资源访问:Resource rs = ctx. getResource(“classpath:config.properties”), “file:c:/config.properties”
事件传递:通过实现ApplicationContextAware接口
<!-- Spring中提供了 org.springframework.orm.hibernate3.support.OpenSessionInViewFilter;
这个类来实现OpenSessionInViewer的操作 -->
<filter>
<filter-name>openSessionInViewerFilter</filter-name><!-- 配置Session -->
<filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>openSessionInViewerFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
因为我们在web.xml里配置了一个叫servlet的核心控制器 所以我们需要在web.xml同级目录下给这个核心控制器编写配置文件,配置文件名就是你的<servlet-name>标签里的名字+‘-servlet’,比如上文的web.xml文件<servlet-name>是'city',那这个配置文件的名字就叫city-servlet.xml。这样你的核心控制器指向的就是src根目录下的city-servlet.xml文件了。**这个servlet.xml文件里面存放的就是关于Spring的配置**,可以在一定程度上理解为这个文件实现的就是Spring中applicationContext.xml的作用。
3.接下来对核心控制器的配置文件进行配置
city_servlet.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns<