springmvcspringspring4mvchibernate4 是什么架构

搭建SSH框架(SpringMVC4+Spring4+Hibernate5)
搭建SSH框架(SpringMVC4+Spring4+Hibernate5)。现在比较流行SSM(SpringMVC,Spring,MyBatis),但是持久层这一块大公司用Hibernate用的比较多,小项目用MyBatis用的比较多,因为较Hibernate而言,MyBatis要显得更为灵活,也正是因此,它的封装性不如hibernate好,所以对于追求稳定的大型项目而言,用hibernate还是比较合适。关于Hibernate和MyBatis的比较,读者可以查阅更多相关的资料。在这使用Hibernate框架。
整体思路:
1.首先搭建SpringMVC框架
2.搭建Hibernate框架
3.使用Spring整合SpringMVC,Hibernate
搭建SpringMVC框架:
1.导入jar文件
如上图所示,这是我从官网下载的spring framework解压缩后,libs中所包含的所有jar包,我们只需要将spring-*-4.2.5.RELEASE.jar复制,然后粘贴至工程项目中的lib目录下。就是将所有以RELEASE.jar结尾的,而不用将以javadoc.jar和sources.jar结尾的jar包放至lib目录下。
2.配置web.xml
org.springframework.web.servlet.DispatcherServlet
contextConfigLocation
/WEB-INF/spring-servlet.xml
通过以上配置,所有从前端发送过来的请求,都将交给DispatherServlet处理。关于SpringMVC中一次完整的请求过程请看下边:
具体执行步骤如下:
1、 首先用户发送请求&&&&&前端控制器,前端控制器根据请求信息(如URL)来决定选择哪一个页面控制器进行处理并把请求委托给它,即以前的控制器的控制逻辑部分;图2-1中的1、2步骤;
2、 页面控制器接收到请求后,进行功能处理,首先需要收集和绑定请求参数到一个对象,这个对象在Spring Web MVC中叫命令对象,并进行验证,然后将命令对象委托给业务对象进行处理;处理完毕后返回一个ModelAndView(模型数据和逻辑视图名);图2-1中的3、4、5步骤;
3、 前端控制器收回控制权,然后根据返回的逻辑视图名,选择相应的视图进行渲染,并把模型数据传入以便视图渲染;图2-1中的步骤6、7;
4、 前端控制器再次收回控制权,将响应返回给用户,图2-1中的步骤8;至此整个结束。
springm核心框架图:
核心架构的具体流程步骤如下:
1、 首先用户发送请求&&&DispatcherServlet,前端控制器收到请求后自己不进行处理,而是委托给其他的解析器进行处理,作为统一访问点,进行全局的流程控制;
2、 DispatcherServlet&&&HandlerMapping, HandlerMapping将会把请求映射为HandlerExecutionChain对象(包含一个Handler处理器(页面控制器)对象、多个HandlerInterceptor拦截器)对象,通过这种策略模式,很容易添加新的映射策略;
3、 DispatcherServlet&&&HandlerAdapter,HandlerAdapter将会把处理器包装为适配器,从而支持多种类型的处理器,即适配器设计模式的应用,从而很容易支持很多类型的处理器;
4、 HandlerAdapter&&&处理器功能处理方法的调用,HandlerAdapter将会根据适配的结果调用真正的处理器的功能处理方法,完成功能处理;并返回一个ModelAndView对象(包含模型数据、逻辑视图名);
5、 ModelAndView的逻辑视图名&&& ViewResolver, ViewResolver将把逻辑视图名解析为具体的View,通过这种策略模式,很容易更换其他视图技术;
6、 View&&&渲染,View会根据传进来的Model模型数据进行渲染,此处的Model实际是一个Map数据结构,因此很容易支持其他视图技术;
7、返回控制权给DispatcherServlet,由DispatcherServlet返回响应给用户,到此一个流程结束。
现在对SpringMVC是不是有了一个大致的了解呢?
配置好了web.xml(整个web应用的配置文件)之后,接下来我们需要配置spring-servlet.xml(这是springmvc的配置文件,文件名默认为servletName-servlet.xml,这里我们的servlet名字是spring,当然你也可以自定义名字,然后再web.xml中指定,这在上面的配置中也有体现。)
下面是spring-servlet的具体配置:
/WEB-INF/views/
好了,现在对web应用的配置,springmvc的配置已经完成了,万事俱备,只欠东风,我们具体的执行动作呢?
@Controller
public class TestController {
@RequestMapping(value=&/test&)
public ModelAndView testMVC(){
System.out.println(&testMVC()&);
ModelAndView modelAndView = new ModelAndView(&/test&);
modelAndView.addObject(&info&, &hewei&);
return modelAndV
@Controller 将该类标识为一个Controller
@RequestMapping 表示匹配请求动作,这里将匹配 test 这个请求动作(使用value配置)
ModelAndView modelAndView = new ModelAndView(&/test&); 表示返回test.jsp,并且是/WEB-INF/views下的jsp文件(前面讲过的)
我们来看看超级简单的test.jsp
&%@ page language=&java& contentType=&text/ charset=UTF-8&
pageEncoding=&UTF-8&%&
Hello ${info} !!!
现在我们来做一个测试:
访问地址:http://localhost:8080/nanny/test,在中得到如下显示
至此,我们的SpringMVC框架已经搭建完成,向前走了一小步。下面我们更进一步,来看看Hibernate框架的搭建
搭建Hibernate框架:
第一步,导入jar包(将下载的Hibernate Framework中required的jar包复制粘贴到lib文件目录中)
第二 步,建立POJO对象
package com.bjtu.
import javax.persistence.C
import javax.persistence.E
import javax.persistence.GeneratedV
import javax.persistence.GenerationT
import javax.persistence.Id;
import javax.persistence.T
@Table(name=&nannyuser&)
public class NannyUser {
@GeneratedValue(strategy = GenerationType.IDENTITY)
public NannyUser(){
public int getId() {
public void setId(int id) {
public String getUsername() {
public void setUsername(String username) {
this.username =
public String getPassword() {
public void setPassword(String password) {
this.password =
public int getGender() {
public void setGender(int gender) {
this.gender =
public String getName() {
public void setName(String name) {
this.name =
这个对象将与中的某一张表对应,对于数据库的增删改查,可以抽象到对象这个层次。对于上面代码中的注解,先不用研究,到时Spring注入的时候会提到。
第三步,建立对象映射文件(NannyUser.hbm.xml)
第四步,建立Hibernate配置文件(包含数据库连接信息等)
com..jdbc.Driver
jdbc:mysql://localhost/nanny
org.hibernate.dialect.MySQLDialect
第五步,新增数据,测试
package com.bjtu.
import java.util.L
import org.hibernate.S
import org.hibernate.SessionF
import org.hibernate.T
import org.hibernate.cfg.C
import org.hibernate.query.Q
import com.bjtu.entity.NannyU
public class HibernateTest {
public static void main(String[] args) {
//初始化一个POJO对象
NannyUser user = new NannyUser();
user.setUsername(&&);
user.setPassword(&password&);
user.setGender(1);
user.setName(&vp&);
//读取hibernate.cfg.xml配置,并初始化配置
Configuration cfg = new Configuration();
cfg.configure();
//根据配置获取sessionFactory,然后开启事务
SessionFactory sessionFactory = cfg.buildSessionFactory();
Session session = sessionFactory.openSession();
Transaction tx = session.beginTransaction();
//使用HQL语句查询
Query query = session.createQuery(&from NannyUser&);
List userList = query.getResultList();
System.out.println(userList.size());
//存入user对象至nannyuser表中
session.save(user);
//提交事务,关闭会话
tx.commit();
session.close();
现在我们来查看一下后台数据库:
至此,我们的hibernate框架也搭建完毕,下面我们来用Spring整合SpringMVC,Hibernate。这个过程可能较以上两个过程而言要麻烦一些,但是不必担心,慢慢来。
Spring 整合SpringMVC和Hibernate:
在开始这个步骤之前,我们需要了解一些东西:
1.SpringMVC是Spring框架的一部分,所以它能很好的和Spring配合使用。
2.下面我们将使用全注解方式来完成整合,所以你必须对Spring的注解有一个详细的了解,
3.对IOC(控制反转),DI(依赖注入)要有一定了解
4.熟悉MVC分层架构(对于Controller,Service,DAO有一定了解)
5.Spring管理hibernate,其实管理的就是Hibernate的sessionFactory
下面我们来一一剖析
第一步,配置web.xml文件(在web.xml文件中加入下段)
contextConfigLocation
/WEB-INF/beans.xml
org.springframework.web.context.ContextLoaderListener
ContextLoaderListener监听器的作用就是启动Web容器时,自动装配ApplicationContext的配置信息。因为它实现了ServletContextListener这个接口,在web.xml配置这个监听器,启动容器时,就会默认执行它实现的方法。
在上面的配置中我们看到,指定了一个spring全局配置文件beans.xml(这个名字你任意取,这是在指定情况下)。默认情况是/WEB-INF/applicationContext.xml
第二步,配置beans.xml
org.hibernate.dialect.MySQLDialect
com.bjtu.entity.NannyUser
这个文件的配置很重要,对于各个配置点的具体信息,详细情况,请查阅更多资料。
第三步,建立MVC结构
第四步,编写每层代码
TestController的代码,加入注解之后
package com.bjtu.
import java.util.L
import org.springframework.beans.factory.annotation.A
import org.springframework.stereotype.C
import org.springframework.web.bind.annotation.RequestM
import org.springframework.web.servlet.ModelAndV
import com.bjtu.entity.NannyU
import com.bjtu.service.NannyUserS
@Controller
public class TestController {
@Autowired
private NannyUserService nannyUserS
public NannyUserService getNannyUserService() {
return nannyUserS
public void setNannyUserService(NannyUserService nannyUserService) {
this.nannyUserService = nannyUserS
@RequestMapping(value=&/test&)
public ModelAndView testMVC(){
System.out.println(&testMVC()&);
List list = nannyUserService.getAllUser();
System.out.println(&list.size():&+list.size());
ModelAndView modelAndView = new ModelAndView(&/test&);
modelAndView.addObject(&info&, &hewei&);
return modelAndV
这里在Controller持有一个NannyUserService层对象引用,将等待Spring注入。(PS,如果对上面注解不理解,请看看传送门内的内容吧)
我们来看看NannyUserService接口吧
package com.bjtu.
import java.util.L
import com.bjtu.entity.NannyU
public interface NannyUserService {
public List getAllUser();
public boolean isExists(String username);
那么,它的具体实现NannyUserServiceImpl呢?
package com.bjtu.serviceI
import java.util.L
import org.springframework.beans.factory.annotation.A
import org.springframework.stereotype.S
import com.bjtu.dao.UserD
import com.bjtu.daoImpl.UserDaoI
import com.bjtu.entity.NannyU
import com.bjtu.service.NannyUserS
public class NannyUserServiceImpl implements NannyUserService{
@Autowired
private UserDao userD
public UserDao getUserDao() {
return userD
public void setUserDao(UserDao userDao) {
this.userDao = userD
public NannyUserServiceImpl(){
System.out.println(&NannyUserServiceImpl()&);
public List getAllUser() {
return userDao.getAllUser();
public boolean isExists(String username) {
return userDao.isExists(username);
我们在Service层持有一个Dao层接口引用,等待Spring注入。下面我们看看DAO层接口:
package com.bjtu.
import java.util.L
import com.bjtu.entity.NannyU
public interface UserDao {
// 得到所有用户
public List getAllUser();
// 检测用户名是否存在
public boolean isExists(String username);
那么它的具体实现呢?UserDaoImpl
package com.bjtu.daoI import java.util.ArrayL import java.util.L import org.hibernate.S import org.hibernate.SessionF import org.hibernate.T import org.hibernate.query.Q import org.springframework.beans.factory.annotation.A import org.springframework.beans.factory.annotation.Q import org.springframework.orm.hibernate5.support.HibernateDaoS import org.springframework.stereotype.R import com.bjtu.dao.UserD import com.bjtu.entity.NannyU @Repository public class UserDaoImpl extends HibernateDaoSupport implements UserDao { /*****注入*****/ @Autowired @Qualifier(&sessionFactory&) private SessionFactory sessionF /*****bean实例化时执行该方法*******/ @Autowired public void setSessionFactory(){ super.setSessionFactory(sessionFactory); } public UserDaoImpl(){ System.out.println(&UserDaoImpl&); } @SuppressWarnings({ &unchecked&, &rawtypes& }) @Override public List getAllUser() { List userList = new ArrayList(); Session session = sessionFactory.openSession(); Transaction tx = session.beginTransaction(); Query query = session.createQuery(&from NannyUser&); userList = query.getResultList(); tx.commit(); session.close(); return userL } @Override public boolean isExists(String username) { Query query = sessionFactory.openSession() .createQuery(&from NannyUser u where u.username = :username&).setParameter(&username&, username); System.out.println(query.list().size()); return query.list().size()&0?true: } }
我们在Dao层持有一个SessionFactory对象的引用,等待Spring注入。而之前我们在beans.xml文件中已经初始化了sessionFactory,所以它会注入到userDao中,而userDao中又
会注入到nannyUserService中,而nannyUserService又会注入到testController中。这样一环扣一环的逻辑好理解了吧?
总结:至此我们SSH环境已经搭建完毕,有什么问题请留言讨论,有什么错误请指出。&>&springmvc+spring4+hibernate5架构搭建实例
springmvc+spring4+hibernate5架构搭建实例
上传大小:7KB
一个完整的springmvc+spring4+hibernate5的架构搭建实例。网上找到的大多是spring3+hibernate3的,比较不适用了。
综合评分:1(3位用户评分)
下载个数:
{%username%}回复{%com_username%}{%time%}\
/*点击出现回复框*/
$(".respond_btn").on("click", function (e) {
$(this).parents(".rightLi").children(".respond_box").show();
e.stopPropagation();
$(".cancel_res").on("click", function (e) {
$(this).parents(".res_b").siblings(".res_area").val("");
$(this).parents(".respond_box").hide();
e.stopPropagation();
/*删除评论*/
$(".del_comment_c").on("click", function (e) {
var id = $(e.target).attr("id");
$.getJSON('/index.php/comment/do_invalid/' + id,
function (data) {
if (data.succ == 1) {
$(e.target).parents(".conLi").remove();
alert(data.msg);
$(".res_btn").click(function (e) {
var q = $("#form1").serializeArray();
console.log(q);
var res_area_r = $.trim($(".res_area_r").val());
if (res_area_r == '') {
$(".res_text").css({color: "red"});
$.post("/index.php/comment/do_comment_reply/", q,
function (data) {
if (data.succ == 1) {
var $target,
evt = e || window.
$target = $(evt.target || evt.srcElement);
var $dd = $target.parents('dd');
var $wrapReply = $dd.find('.respond_box');
console.log($wrapReply);
var mess = $(".res_area_r").val();
var str = str.replace(/{%header%}/g, data.header)
.replace(/{%href%}/g, 'http://' + window.location.host + '/user/' + data.username)
.replace(/{%username%}/g, data.username)
.replace(/{%com_username%}/g, _username)
.replace(/{%time%}/g, data.time)
.replace(/{%id%}/g, data.id)
.replace(/{%mess%}/g, mess);
$dd.after(str);
$(".respond_box").hide();
$(".res_area_r").val("");
$(".res_area").val("");
$wrapReply.hide();
alert(data.msg);
}, "json");
/*删除回复*/
$(".rightLi").on("click",'.del_comment_r', function (e) {
var id = $(e.target).attr("id");
$.getJSON('/index.php/comment/do_comment_del/' + id,
function (data) {
if (data.succ == 1) {
$(e.target).parent().parent().parent().parent().parent().remove();
$(e.target).parents('.res_list').remove()
alert(data.msg);
//填充回复
function KeyP(v) {
$(".res_area_r").val($.trim($(".res_area").val()));
评论共有2条
没有任何帮助,也不实用。
没什么用的教程
审核通过送C币
JSON for Java
创建者:tan3739
JAVA GUI 图形编程系列
创建者:e98123
java开发工具
创建者:hrm108
上传者其他资源上传者专辑
maven3.3.9+struts2.5.5+spring4.3.3+hibernate5.2.4框架搭建实例
WDL文件阅读器(DynaDoc Reader) v4.25.rar
cgi技术---CGI 程序设计.mht
开发技术热门标签
VIP会员动态
CSDN下载频道资源及相关规则调整公告V11.10
下载频道用户反馈专区
下载频道积分规则调整V1710.18
spring mvc+mybatis+mysql+maven+bootstrap 整合实现增删查改简单实例.zip
资源所需积分/C币
当前拥有积分
当前拥有C币
为了良好体验,不建议使用迅雷下载
springmvc+spring4+hibernate5架构搭建实例
会员到期时间:
剩余下载个数:
剩余C币:593
剩余积分:0
为了良好体验,不建议使用迅雷下载
积分不足!
资源所需积分/C币
当前拥有积分
您可以选择
程序员的必选
绿色安全资源
资源所需积分/C币
当前拥有积分
当前拥有C币
(仅够下载10个资源)
为了良好体验,不建议使用迅雷下载
资源所需积分/C币
当前拥有积分
当前拥有C币
为了良好体验,不建议使用迅雷下载
资源所需积分/C币
当前拥有积分
当前拥有C币
您的积分不足,将扣除 10 C币
为了良好体验,不建议使用迅雷下载
你当前的下载分为234。
你还不是VIP会员
开通VIP会员权限,免积分下载
你下载资源过于频繁,请输入验证码
您因违反CSDN下载频道规则而被锁定帐户,如有疑问,请联络:!
若举报审核通过,可奖励20下载分
被举报人:
gongjijiao
举报的资源分:
请选择类型
资源无法下载
资源无法使用
标题与实际内容不符
含有危害国家安全内容
含有反动色情等内容
含广告内容
版权问题,侵犯个人或公司的版权
*详细原因:
springmvc+spring4+hibernate5架构搭建实例第1章 课程介绍
第2章 案例准备
第3章 案例实现
第4章 实现结果演示及课程回顾
Copyright (C)
All Rights Reserved | 京ICP备 号-2SpringMVC+Spring+Hibernate 框架整合实例_Linux编程_Linux公社-Linux系统门户网站
你好,游客
SpringMVC+Spring+Hibernate 框架整合实例
来源:Linux社区&
作者:red-code
先说一下SpringMVC+Spring+Hibernate 框架整合实例流程思路:
流程讲解1:首先访问会先定位到控制器。这就用到了过滤器配置文件&spring-mvc.xml&。这个文件负责定义控制器的包路径、视图的格式等。其次从&控制器-&service层-&dao层&,期间用的都是spring的依赖注入,所以就需要一个bean容器配置文件,将所有的&等待被注入的类&在xml文件里申明一下。这个xml文件就是&spring-beans.xml&。之后,dao层要操作entity里面的持久化类。dao必须通过sessionFactory里面的session才能操作持久化类。于是需要一个xml文件配置sessionFactory类,这个sessionFactory作为一个bean,可被注入到dao层。这个文件还需要将&entity里面所有的持久化类&申明出来。这个文件就是&spring-hibernate.xml&。最后将这些xml配置文件全部在web.xml里面加载。流程讲解2:通过url地址,定位到控制器的具体方法。之后控制器调用service层的实例做点什么(service层的实例是注入进来的)并且返回一个jsp页面。service层的实例再调用dao层的实例做点什么(dao层的实例是注入进来的)。dao层是底层数据层,dao层的实例通过sessionFactory来创建一个session操作具体的持久化类对象(sessionFactory对象是被注入进来的)对数据库进行&增删查改&等操作。
流程讲解3:这个实例具体干的事是:UserDaoImpl从数据库里查询出用户信息列表,并将用户信息列表返回给UserServiceImpl。UserServiceImpl经过处理得到某一个用户的用户名,并将用户名返回给控制器。控制器再将这个用户名打印出来,然后调用一下视图jsp文件。
结构如下:
&?xml version="1.0" encoding="UTF-8"?&
&!-- $Id: pom.xml 8-03-28 08:04:16Z reinhard $ --&
&project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"&
&modelVersion&4.0.0&/modelVersion&
&packaging&war&/packaging&
&name&java-ssh-demo3&/name&
&groupId&java-ssh-demo&/groupId&
&artifactId&java-ssh-demo3&/artifactId&
&version&1.0-SNAPSHOT&/version&
&!--项目依赖 --&
&dependencies&
&!--日志包--&
&dependency&
&groupId&junit&/groupId&
&artifactId&junit&/artifactId&
&version&3.8.1&/version&
&scope&test&/scope&
&/dependency&
&dependency&
&groupId&org.slf4j&/groupId&
&artifactId&slf4j-log4j12&/artifactId&
&version&1.7.21&/version&
&/dependency&
&!--j2ee相关包 servlet、jsp、jstl--&
&dependency&
&groupId&javax.servlet&/groupId&
&artifactId&javax.servlet-api&/artifactId&
&version&3.1.0&/version&
&/dependency&
&dependency&
&groupId&javax.servlet.jsp&/groupId&
&artifactId&jsp-api&/artifactId&
&version&2.2&/version&
&/dependency&
&dependency&
&groupId&javax.servlet&/groupId&
&artifactId&jstl&/artifactId&
&version&1.2&/version&
&/dependency&
&!--spring相关包--&
&dependency&
&groupId&org.springframework&/groupId&
&artifactId&spring-web&/artifactId&
&version&4.3.1.RELEASE&/version&
&/dependency&
&dependency&
&groupId&org.springframework&/groupId&
&artifactId&spring-webmvc&/artifactId&
&version&4.3.1.RELEASE&/version&
&/dependency&
&dependency&
&groupId&org.springframework&/groupId&
&artifactId&spring-jdbc&/artifactId&
&version&4.3.1.RELEASE&/version&
&/dependency&
&dependency&
&groupId&org.springframework&/groupId&
&artifactId&spring-orm&/artifactId&
&version&4.3.1.RELEASE&/version&
&/dependency&
&!--其他需要的包--&
&dependency&
&groupId&mons&/groupId&
&artifactId&commons-lang3&/artifactId&
&version&3.4&/version&
&/dependency&
&dependency&
&groupId&commons-fileupload&/groupId&
&artifactId&commons-fileupload&/artifactId&
&version&1.3.1&/version&
&/dependency&
&!-- hibernate内置日志记录所需包--&
&dependency&
&groupId&org.slf4j&/groupId&
&artifactId&slf4j-api&/artifactId&
&version&1.7.21&/version&
&/dependency&
&!--mariadb驱动--&
&dependency&
&groupId&org.mariadb.jdbc&/groupId&
&artifactId&mariadb-java-client&/artifactId&
&version&1.5.5&/version&
&/dependency&
&!-- 代码生成类库 --&
&dependency&
&groupId&cglib&/groupId&
&artifactId&cglib-nodep&/artifactId&
&version&2.2.2&/version&
&/dependency&
&!--hibernate包--&
&dependency&
&groupId&org.hibernate&/groupId&
&artifactId&hibernate-core&/artifactId&
&version&5.2.6.Final&/version&
&/dependency&
&!--hibernate校验器--&
&dependency&
&groupId&org.hibernate&/groupId&
&artifactId&hibernate-validator&/artifactId&
&version&5.2.4.Final&/version&
&/dependency&
&/dependencies&
&finalName&maven-springmvc&/finalName&
&resources&
&!--表示把java目录下的有关xml文件,properties文件编译/打包的时候放在resource目录下--&
&resource&
&directory&${basedir}/src/main/java&/directory&
&includes&
&include&**/*.properties&/include&
&include&**/*.xml&/include&
&/includes&
&/resource&
&resource&
&directory&${basedir}/src/main/resources&/directory&
&/resource&
&/resources&
&!--servlet容器 jetty插件--&
&groupId&org.eclipse.jetty&/groupId&
&artifactId&jetty-maven-plugin&/artifactId&
&version&9.3.10.v&/version&
&groupId&org.apache.maven.plugins&/groupId&
&artifactId&maven-compiler-plugin&/artifactId&
&configuration&
&source&1.6&/source&
&target&1.6&/target&
&/configuration&
&/plugins&
&/project&&
&?xml version="1.0" encoding="UTF-8"?&
&web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1"&
&display-name&java-springmvc-demo5&/display-name&
&!-- 配置Spring --&
&context-param&
&param-name&contextConfigLocation&/param-name&
&param-value&classpath*:config/spring-*.xml&/param-value&
&/context-param&
&!--listener用于在Web 应用启动时,启动某些后台程序,此处启动的是spring--&
&listener&
&listener-class&org.springframework.web.context.ContextLoaderListener&/listener-class&
&/listener&
&!--定义入口类DispatcherServlet--&
&servlet-name&springMVC&/servlet-name&
&servlet-class&org.springframework.web.servlet.DispatcherServlet&/servlet-class&
&!-- 默认的servlet.xml文件是放在WEB-INF目录下,名称与&servlet-name&的名字要相关。但可以通过以下设置重新自定义servlet.xml配置文件的位置和名称。--&
&init-param&
&param-name&contextConfigLocation&/param-name&
&param-value&classpath*:config/spring-mvc.xml&/param-value&
&/init-param&
&load-on-startup&1&/load-on-startup&
&/servlet&
&servlet-mapping&
&servlet-name&springMVC&/servlet-name&
&url-pattern&/&/url-pattern&
&/servlet-mapping&
&!--欢迎页面--&
&welcome-file-list&
&welcome-file&index.jsp&/welcome-file&
&/welcome-file-list&
&!-- 设置OpenSessionInViewFilter 的过滤器,由 Spring 来控制 Hibernate 的 Session 在请求来的时候开启,走的时候关闭 --&
&!--如果配置声明式事务也可以不需要配置这个。--&
&filter-name&openSession&/filter-name&
&filter-class&org.springframework.orm.hibernate5.support.OpenSessionInViewFilter&/filter-class&
&filter-mapping&
&filter-name&openSession&/filter-name&
&url-pattern&/*&/url-pattern&
&/filter-mapping&
&/web-app&
spring-mvc.xml:
&?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:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd"&
&!-- 启动时自动扫描该包下所有的Bean --&
&context:component-scan base-package="pers.cly.ssh_demo3.controller" /&
&!-- 添加注解驱动 --&
&mvc:annotation-driven /&
&!--所有的访问都统一先由InternalResourceViewResolver类处理--&
&bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"&
&!--定义跳转的文件的前缀(jsp文件所在目录)--&
&property name="prefix" value="/WEB-INF/jsp/" /&
&!-- 定义跳转的文件的后缀 --&
&property name="suffix" value=".jsp" /&
spring-beans.xml:
&?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:util="http://www.springframework.org/schema/util"
xmlns:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/util
http://www.springframework.org/schema/util/spring-util-4.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"&
&!--启动时自动扫描该包下所有的Bean--&
&context:component-scan base-package="pers.cly.ssh_demo3" /&
&!--注册一个UserDaoImpl对象,实例名为&userDao&--&
&bean id="userDao" class="pers.cly.ssh_demo3.dao.impl.UserDaoImpl"/&
&!--注册一个UserServiceImpl对象,实例名为&userService&--&
&bean id="userService" class="pers.cly.ssh_demo3.service.impl.UserServiceImpl"/&
spring-hibernate.xml:
&?xml version="1.0" encoding="UTF-8"?&
&beans xmlns="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-4.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-4.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-4.0.xsd
&!-- 声明事务管理器 --&
&bean id="myHibTxManager"
class="org.springframework.orm.hibernate5.HibernateTransactionManager"&
&property name="sessionFactory" ref="sessionFactory" /&
&!-- 定义事务通知 --&
&tx:advice id="tx_Advice" transaction-manager="myHibTxManager"&
&!-- 定义事务传播规则 --&
&tx:attributes&
&!-- 对get/load/search开头的方法应用只读事务规则 --&
&tx:method name="get*" propagation="SUPPORTS" read-only="true" /&
&tx:method name="load*" propagation="SUPPORTS" read-only="true" /&
&tx:method name="search*" propagation="SUPPORTS" read-only="true" /&
&!-- 对其他方法应用REQUIRED事务规则 --&
&tx:method name="*" propagation="REQUIRED" /&
&/tx:attributes&
&/tx:advice&
&!--&aop:config&--&
&!--&!& 对com.zxpm.biz包下的所有类的所有方法都应用事务规则 &&--&
&!--&aop:pointcut id="bizMethods"--&
&!--expression="execution(* cn.zifangsky.service.*.*(..))" /&--&
&!--&!& 将事务通知和切面组合 &&--&
&!--&aop:advisor advice-ref="tx_Advice" pointcut-ref="bizMethods" /&--&
&!--&/aop:config&--&
&!-- 配置数据源 --&
&bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource"&
&property name="driverClassName" value="org.mariadb.jdbc.Driver"&&/property&
&property name="url" value="jdbc:mariadb://localhost:3306/daixu"&&/property&
&property name="username" value="root"&&/property&
&property name="password" value="123"&&/property&
&bean id="sessionFactory"
class="org.springframework.orm.hibernate5.LocalSessionFactoryBean"&
&property name="dataSource" ref="dataSource" /&
&property name="packagesToScan"&
&!-- 申明entity中所有持久化类 --&
&value&pers.cly.ssh_demo3.entity&/value&
&/property&
&property name="hibernateProperties"&
&prop key="hibernate.show_sql"&true&/prop&
&/property&
HelloController.java:
import org.springframework.stereotype.C
import org.springframework.web.bind.annotation.RequestM
import pers.cly.ssh_demo3.service.UserS
import javax.annotation.R
@Controller//该注解用来识别控制器
@RequestMapping("hello")//该注解用来控制url书写时,控制器的选择
public class HelloController {
@Resource(name="userService")
// 获取spring配置文件中bean的id为userService的具体实现类,并注入
private UserService userServiceI//service层的用户接口类。
@RequestMapping("helloworld")//该注解用来控制url书写时,具体方法的选择(还可以绑定参数等)
public String helloworld() {
System.out.print("用户姓名:"+userServiceImpl.select_user_name());//调用接口方法获取用户姓名,打印用户姓名
return "hello_world";//跳转到jsp页面
UserService.java:
import pers.cly.ssh_demo3.entity.UserE
* Created by CLY on .
public interface UserService {
public String select_user_name();//这个方法负责查询用户姓名
UserServiceImpl.java:
import pers.cly.ssh_demo3.dao.UserD
import pers.cly.ssh_demo3.entity.UserE
import pers.cly.ssh_demo3.service.UserS
import javax.annotation.R
import java.util.L
* Created by CLY on .
public class UserServiceImpl implements UserService {
@Resource(name = "userDao")//使用注解配置,将id为&userDao&的bean注入到&userDaoImpl&里面
private UserDao userDaoI//定义dao层的&接口&
public String select_user_name() {
String user_name="";
List&UserEntity& users = userDaoImpl.select_user();//通过接口方法,获取用信息列表
for (UserEntity u : users) {//迭代列表,将里面的最后一个用户的姓名提取出来
user_name = u.getUserName();
return user_//返回用户名
UserDao.java:
import pers.cly.ssh_demo3.entity.UserE
import java.util.L
* Created by CLY on .
public interface UserDao {
public List&UserEntity& select_user();//将用户信息查出,并返回用用户持久化类列表
UserDaoImpl.java:
import org.hibernate.SessionF
import org.hibernate.query.Q
import pers.cly.ssh_demo3.dao.UserD
import pers.cly.ssh_demo3.entity.UserE
import javax.annotation.R
import java.util.L
* Created by CLY on .
public class UserDaoImpl implements UserDao {
@Resource(name = "sessionFactory")
private SessionFactory sessionF//注入sessionFactory
public List&UserEntity& select_user() {
String hql = "from UserEntity";//hql语句
Query query = sessionFactory.getCurrentSession().createQuery(hql);
return query.list();
UserEntity.java是我用idea根据表自动生成,就不贴代码了。
hello_world.jsp和index.jsp写什么随意,也不贴代码了。
之后用&http://localhost:8080/hello/helloworld&路径可访问出结果。
本文永久更新链接地址:
相关资讯 & & &
& (10月28日)
& (07月01日)
& (10月28日)
& (07月20日)
& (06月26日)
   同意评论声明
   发表
尊重网上道德,遵守中华人民共和国的各项有关法律法规
承担一切因您的行为而直接或间接导致的民事或刑事法律责任
本站管理人员有权保留或删除其管辖留言中的任意内容
本站有权在网站内转载或引用您的评论
参与本评论即表明您已经阅读并接受上述条款

我要回帖

更多关于 spring4mvchibernate4 的文章

 

随机推荐