Spring+SpringMVC+Hibernate整合(Java方式)

Web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" version="3.1">

</web-app>

注:
Java配置方式不需要配置Web.xml。
WebAppInitializer.java

package config;
import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;
/**
 * 按照AbstractAnnotationConfigDispatcherServletInitializer的定义
 * 它会同时创建DispatcherServlet和ContextLoaderListener
 * 可用此种方式代替传统的web.xml
 * @author yd
 *
 */

public class WebAppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {

    @Override
    protected Class<?>[] getRootConfigClasses() {
        return new Class<?>[] { RootConfig.class};       //指定根配置类,例如:ApplicationContext.xml
    }

    @Override
    protected Class<?>[] getServletConfigClasses() {
        return new Class<?>[] { WebConfig.class };        //ָ指定Web配置类,例如:springMVC.xml
    }

    @Override
    protected String[] getServletMappings() {    //将DispatcherServlet映射到"/"
        return new String[] { "/" };
    }
     @Override  
    protected Filter[] getServletFilters() {    //字符过滤器,防止乱码
        CharacterEncodingFilter characterEncodingFilter = new CharacterEncodingFilter();  
        characterEncodingFilter.setEncoding("UTF-8");  
        characterEncodingFilter.setForceEncoding(true);  
        return new Filter[] {characterEncodingFilter};  
    } 	
}

RootConfig.java

package config;
import java.beans.PropertyVetoException;
import java.util.Properties;
import javax.sql.DataSource;
import org.hibernate.SessionFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.orm.hibernate4.HibernateTransactionManager;
import org.springframework.orm.hibernate4.LocalSessionFactoryBean;
import com.mchange.v2.c3p0.ComboPooledDataSource;
@Configuration
public class RootConfig {
	//配置sessionFactory 
	@Bean
	public LocalSessionFactoryBean sessionFactory(DataSource dataSource)
	{
		LocalSessionFactoryBean sessionFactory = new LocalSessionFactoryBean();
		sessionFactory.setDataSource(dataSource);
		sessionFactory.setPackagesToScan(new String[] {"entity"});  //扫描实体类包
		Properties properties = new Properties();
		properties.setProperty("dialect", "org.hibernate.dialect.MySQDialect");//添加hibernate的属性
		properties.setProperty("hibernate.hbm2ddl.auto", "update");
		sessionFactory.setHibernateProperties(properties);
		return sessionFactory;
		
	}
	//配置事务管理
	@Bean
	public HibernateTransactionManager transactionManager(SessionFactory sessionFactory)
	{
		HibernateTransactionManager transactionManager = new HibernateTransactionManager();		
		transactionManager.setSessionFactory(sessionFactory);		
		return transactionManager;
	}
	//配置c3p0数据源
    @Bean
	public ComboPooledDataSource dataSource() throws PropertyVetoException {
	    ComboPooledDataSource ds = new ComboPooledDataSource();
	    ds.setDriverClass("com.mysql.jdbc.Driver");
	    ds.setJdbcUrl("jdbc:mysql://localhost:3306/book");
	    ds.setUser("root");
	    ds.setPassword("123456");
	    return ds;
	}

}

WebConfig.java

package config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.transaction.annotation.EnableTransactionManagement;
import org.springframework.web.servlet.ViewResolver;
import org.springframework.web.servlet.config.annotation.DefaultServletHandlerConfigurer;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
import org.springframework.web.servlet.view.InternalResourceViewResolver;
@Configuration
@EnableTransactionManagement
@EnableWebMvc                                //启动SpringMVC
@ComponentScan("test")                       //启动组件扫描
public class WebConfig extends WebMvcConfigurerAdapter {
     //配置JSP视图解析器
    @Bean
    public ViewResolver viewResolver() {
        InternalResourceViewResolver resolver = new InternalResourceViewResolver();
        resolver.setPrefix("/WEB-INF/views/");
        resolver.setSuffix(".jsp");
        resolver.setExposeContextBeansAsAttributes(true);
        return resolver;
    }
    
     //配置静态资源的处理
    @Override
    public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
        configurer.enable();      //对静态资源的请求转发到容器缺省的servlet,而不使用DispatcherServlet
    }

}

至此基本配置都配好了。我们来测试一下:
testDao.java

package test.dao;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;

import entity.Admin;
@Repository
public class testDao {
	@Autowired
	private SessionFactory sessionFactory;  
    
    public SessionFactory getSessionFactory() {  
        return sessionFactory;  
    } 
    private Session getSession() {
        return sessionFactory.getCurrentSession();
        
    }
    public Admin getAdmin(int id) {
    	Admin admin = (Admin)this.getSession().get(Admin.class, id);
		return admin;
	}
}

testService.java

package test.service;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import entity.Admin;
import test.dao.testDao;

@Service
@Transactional
public class testService {
	@Autowired
private testDao testDao;
public Admin getAdmin(int id) {
	return testDao.getAdmin(id);
}
}

testController.java

package test.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

import entity.Admin;
import test.service.testService;

@Controller

public class testController {
@Autowired
private testService testService;
	
@RequestMapping("/test")
public String test()
{
	int id = 2;
	Admin admin = testService.getAdmin(id);
	System.out.println(admin.getAdminname());
	return "success";
}
}

success.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" 
pageEncoding="UTF-8"%> 
<!DOCTYPE html> 
<html> 
<head> 
<meta charset="UTF-8"> 
<title>Insert title here</title> 
</head> 
<body> 
Java配置查询成功
</body> 
</html>

跳转的成功页面
这里写图片描述
查询出的Adminname
这里写图片描述
最终项目目录结构
这里写图片描述
添加其他的Servlet和Filter可以看我另一篇文章Java 配置SpringMVC。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值