springmvc+hibernate+spring在maven中整合

  • Post author:
  • Post category:其他


此贴仅作为学习框架记录,作为一个刚接触maven的新手(刚学完hibernate+springmvc之前学的sturs2+mybatis),之前有用框架做过几个练手项目,那时还不知道maven,一个项目下来jar包贼多,myeclipse几次都报内存不够(哈哈),还有学习框架的时候各种jar包网上找,心好累,到现在学了maven,才发现真的好用,刚好就用来整合spingmvc+hibernate+spring,先贴下项目截图


userDao接口:




package com.dailingnan.dao;

import com.dailingnan.entity.User;

public interface UserDao<T> {
	public User save(T o);
}


userDaoImpl:dao层实现类

package com.dailingnan.dao;

import javax.annotation.Resource;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.springframework.stereotype.Repository;

import com.dailingnan.entity.User;
@Repository("userDao")
public class UserDaoImpl implements UserDao<User> {
	@Resource
	private SessionFactory sessionFactory;
	public SessionFactory getSessionFactory() {
		return sessionFactory;
	}
	public void setSessionFactory(SessionFactory sessionFactory) {
		this.sessionFactory = sessionFactory;
	}
	public User save(User o) {
		// TODO Auto-generated method stub
		Session session = sessionFactory.openSession();
		session.save(o);
		return o;
	}

}





userService接口:


package com.dailingnan.service;

import com.dailingnan.entity.User;

public interface UserService {
	public User save(User user);
}


userServiceImpl:service实现类




package com.dailingnan.service;

import javax.annotation.Resource;

import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import com.dailingnan.dao.UserDao;
import com.dailingnan.entity.User;
@Service("userService")
@Transactional
public class UserServiceImpl implements UserService {
	@Resource
	private UserDao<User> userDao;
	public User save(User user) {
		// TODO Auto-generated method stub
		System.out.println(user);
		return userDao.save(user);
	}

}

最后就是controller了(UserController)


package com.dailingnan.controller;

import javax.annotation.Resource;

import org.springframework.stereotype.Controller;
import org.springframework.stereotype.Service;
import org.springframework.web.bind.annotation.RequestMapping;

import com.dailingnan.entity.User;
import com.dailingnan.service.UserService;


@Controller
public class UserControllor {
	@Resource
	private UserService userService;
	@RequestMapping("index")
	public String findUser(){
		System.out.println("index");
		return "/index.jsp";
	}
	@RequestMapping("reg")
	public String saveUser() {
		System.out.println(userService);
		User user = new User();
		user.setUsername("戴岭南");
		
		userService.save(user);
		return "/index.jsp";
	}
}

接下来就是配置文件了

首先

databases.properties


#\u5C5E\u6027\u6587\u4EF6

#Oracle \u7684\u914D\u7F6E
#hibernate.dialect=org.hibernate.dialect.OracleDialect
#driverClassName=oracle.jdbc.driver.OracleDriver
#validationQuery=SELECT 1 FROM DUAL
#jdbc_url=jdbc:oracle:thin:@localhost:1521:orcl
#jdbc_username=
#jdbc_password=

#SQLServer \u7684\u914D\u7F6E
#hibernate.dialect=org.hibernate.dialect.SQLServerDialect
#driverClassName=net.sourceforge.jtds.jdbc.Driver
#validationQuery=SELECT 1
#jdbc_url=jdbc:jtds:sqlserver://127.0.0.1:1433/sy
#jdbc_username=
#jdbc_password=

#Derby \u7684\u914D\u7F6E
#hibernate.dialect=org.hibernate.dialect.DerbyDialect
#driverClassName=org.apache.derby.jdbc.EmbeddedDriver
#validationQuery=SELECT 1
#jdbc_url=jdbc:derby:sy;create=true
#jdbc_username=
#jdbc_password=

#MySQL \u7684\u914D\u7F6E
hibernate.dialect=org.hibernate.dialect.MySQLDialect
driverClassName=com.mysql.jdbc.Driver
validationQuery=SELECT 1
url=jdbc:mysql://localhost:3306/shop1?useUnicode=true&characterEncoding=UTF-8
username=root
password=123456
hibernate.hbm2ddl.auto=update
hibernate.show_sql=true
hibernate.format_sql=true




spring-bibernate.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: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-3.0.xsd
    http://www.springframework.org/schema/tx
    http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
    http://www.springframework.org/schema/aop
    http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
    ">
     <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
            <property name="driverClassName" value="${driverClassName}"></property>
            <property name="url" value="${url}"></property>
            <property name="username" value="${username}"></property>
            <property name="password" value="${password}"></property>
        </bean>
    <!-- session工厂 -->
    <bean id="sessionFactory"
        class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
        <property name="dataSource" ref="dataSource" />
        <property name="hibernateProperties">
            <props>
                <prop key="hibernate.hbm2ddl.auto">${hibernate.hbm2ddl.auto}</prop>
                <prop key="hibernate.dialect">${hibernate.dialect}</prop>
                <prop key="hibernate.show_sql">${hibernate.show_sql}</prop>
                <prop key="hibernate.format_sql">${hibernate.format_sql}</prop>
            </props>
        </property>
        <!-- 注解方式配置 -->
        <!-- 注解方式 -->
        <property name="annotatedClasses" value="com.dailingnan.entity.User"/>
    </bean>
    <!-- 配置事务 -->
    <bean name="txManager"
        class="org.springframework.orm.hibernate4.HibernateTransactionManager">
        <property name="sessionFactory" ref="sessionFactory"></property>
    </bean>
    <tx:annotation-driven transaction-manager="txManager" />
</beans>


springmvc.xml


<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:mvc="http://www.springframework.org/schema/mvc" 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"
    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-3.0.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">

    <!-- 自动扫描controller包下的所有类,使其认为spring mvc的控制器 -->
    <context:component-scan base-package="com.dailingnan.controller" />

    <!-- 避免IE执行AJAX时,返回JSON出现下载文件 -->
    <!-- <bean id="mappingJacksonHttpMessageConverter" -->
    <!-- class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"> -->
    <!-- <property name="supportedMediaTypes"> -->
    <!-- <list> -->
    <!-- <value>text/html;charset=UTF-8</value> -->
    <!-- </list> -->
    <!-- </property> -->
    <!-- </bean> -->

    <!-- 启动Spring MVC的注解功能,完成请求和注解POJO的映射 -->
    <!-- <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
        <property name="messageConverters"> <list> <ref bean="mappingJacksonHttpMessageConverter"
        />json转换器 </list> </property> </bean> -->
    <mvc:annotation-driven />
    <!-- 对模型视图名称的解析,即在模型视图名称添加前后缀 -->
    

</beans>


spring.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:context="http://www.springframework.org/schema/context" 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-3.0.xsd
">

    <!-- 引入属性文件 -->
    <context:property-placeholder location="classpath:databases.properties" />

    <!-- 自动扫描dao和service包(自动注入) -->
    <context:component-scan base-package="com.dailingnan.dao,com.dailingnan.service" />

</beans>

哦,还有

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
	http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
	<display-name></display-name>

	<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>classpath:spring.xml,classpath:spring-hibernate.xml,</param-value>
	</context-param>
	<listener>
		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
	</listener>
	<filter>
		<filter-name>encodingFilter</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>encodingFilter</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>
	<!--Hibernate的session丢失解决方法 -->
	<filter>
		<filter-name>openSessionInView</filter-name>
		<filter-class>org.springframework.orm.hibernate4.support.OpenSessionInViewFilter</filter-class>
	</filter>
	<filter-mapping>
		<filter-name>openSessionInView</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>
	<!-- struts2配置 -->
	<!-- <filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> 
		</filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> 
		</filter-mapping> -->
	<!-- springMVC 配置 -->
	<servlet>
		<description>spring mvc servlet</description>
		<servlet-name>springMVC</servlet-name>
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
		<init-param>
			<description>spring mvc 配置文件</description>
			<param-name>contextConfigLocation</param-name>
			<param-value>classpath:spring-mvc.xml</param-value>
		</init-param>
		<load-on-startup>1</load-on-startup>
	</servlet>
	<servlet-mapping>
		<servlet-name>springMVC</servlet-name>
		<url-pattern>*.html</url-pattern>
	</servlet-mapping>
</web-app>

对应作为新手的我而言pom.xml也花了很多时间,不知道该导那些包,就一直找,所以我还是贴出来吧。方便和我一样的新手(哈哈)


pom.xml


<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>
  <groupId>com.dailingnan</groupId>
  <artifactId>maven-demo3</artifactId>
  <packaging>war</packaging>
  <version>0.0.1-SNAPSHOT</version>
  <name>maven-demo3 Maven Webapp</name>
  <url>http://maven.apache.org</url>
  
  <dependencies>
	  <dependency>
	    <groupId>org.apache.maven.plugins</groupId>
	    <artifactId>maven-resources-plugin</artifactId>
	    <version>2.4.3</version>
	</dependency>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
    <dependency>
	    <groupId>org.hibernate</groupId>
	    <artifactId>hibernate-core</artifactId>
	    <version>4.3.2.Final</version>
	</dependency>
       <dependency>
	    <groupId>commons-dbcp</groupId>
	    <artifactId>commons-dbcp</artifactId>
	    <version>1.4</version>
	</dependency>
	<dependency>
	    <groupId>org.springframework</groupId>
	    <artifactId>spring-tx</artifactId>
	    <version>4.3.5.RELEASE</version>
	</dependency>
   
    <dependency>
	    <groupId>mysql</groupId>
	    <artifactId>mysql-connector-java</artifactId>
	    <version>5.1.40</version>
	</dependency>
	<dependency>
	    <groupId>org.springframework</groupId>
	    <artifactId>spring-webmvc</artifactId>
	    <version>4.3.5.RELEASE</version>
	</dependency>
	<dependency>
	    <groupId>org.springframework</groupId>
	    <artifactId>spring-context</artifactId>
	    <version>4.3.4.RELEASE</version>
	</dependency>
	<dependency>
	   <groupId>org.springframework</groupId>
	   <artifactId>spring-orm</artifactId>
	   <version>4.1.6.RELEASE</version>
	</dependency>
  </dependencies>
  <build>
    <finalName>maven-demo2</finalName>
    <plugins>
   <plugin>  
    <groupId>org.apache.felix</groupId>  
    <artifactId>maven-bundle-plugin</artifactId>  
    <extensions>true</extensions>  
</plugin> 
</plugins>	
  </build>
</project>


注:maven对应的classpath在resourses




版权声明:本文为dailingnan0827原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。