基于spring+springmvc+hibernate的maven项目搭建

1.新建一个maven项目

(1)选择工作区间
基于spring+springmvc+hibernate的maven项目搭建_第1张图片

(2)选择maven-archetype-webapp
基于spring+springmvc+hibernate的maven项目搭建_第2张图片

(3)输入Group id(包名的前缀)和Artifact Id(项目名),然后finish
基于spring+springmvc+hibernate的maven项目搭建_第3张图片

(4)完成上面的步骤,项目的目录如下:
基于spring+springmvc+hibernate的maven项目搭建_第4张图片

(5)修改Dynamic Web Module和java的版本
基于spring+springmvc+hibernate的maven项目搭建_第5张图片
(有人可能不理解这个Dynamic Web Module,其实就是:java的web系统有多种类型,比如静态的和动态的,然后动态的java web project要设置dynamic web module,也就是动态网页模型,他必须要和对应的服务器搭配好了才能跑,版本对应如下
dynamic web module 2.4 对应Tomcat 5.5
dynamic web module 2.5 对应Tomcat 6.0
dynamic web module 3.0 对应Tomcat 7.0或更高)

2.配置3个xml文件

web.xml
web.xml主要配置:ContextLoaderListener和DispatcherServer,代码如下:


<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">

    

    <context-param>
        <param-name>contextConfigLocationparam-name>
        <param-value>classpath:applicationContext.xmlparam-value>
    context-param>
    
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListenerlistener-class>
    listener>


    <filter>
       <filter-name>SpringOpenSessionInViewFilterfilter-name>
       <filter-class>org.springframework.orm.hibernate4.support.OpenSessionInViewFilterfilter-class>
     filter>
  <filter-mapping>
    <filter-name>SpringOpenSessionInViewFilterfilter-name>
    <url-pattern>/*url-pattern>
  filter-mapping>
      
    <filter>
        <filter-name>encodingFilterfilter-name>
        <filter-class>org.springframework.web.filter.CharacterEncodingFilterfilter-class>
        <init-param>
            <param-name>encodingparam-name>
            <param-value>UTF-8param-value>
        init-param>
    filter>
    <filter-mapping>
        <filter-name>encodingFilterfilter-name>
        <url-pattern>/*url-pattern>
    filter-mapping>


    
    
    <servlet>
        <servlet-name>contactsservlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServletservlet-class>
        <init-param>  
            <param-name>contextConfigLocationparam-name>  
            
            <param-value>classpath*:/spring-mvc.xmlparam-value>
        init-param>  
        <load-on-startup>1load-on-startup>  
    servlet>
    <servlet-mapping>
        <servlet-name>contactsservlet-name>
        <url-pattern>*.htmurl-pattern>
    servlet-mapping>

    <welcome-file-list>  
        <welcome-file>index.jspwelcome-file>  
    welcome-file-list>  
web-app>

applicationContext.xml
配置ContextLoaderListener表示,该工程要以spring的方式启动。启动时会默认在/WEB-INF目录下查找 applicationContext.xml作为spring容器的配置文件,这里可以初始化一些bean,如DataSource等。代码如下:


<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"
    xmlns:p="http://www.springframework.org/schema/p" xmlns:aop="http://www.springframework.org/schema/aop"
    xmlns:tx="http://www.springframework.org/schema/tx"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
    http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd 
    http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd 
    http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.1.xsd">


    <context:component-scan base-package="ssh.demo">context:component-scan>

    <bean
        class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="locations">
            <list>
                <value>classpath:database.propertiesvalue>
            list>

        property>
    bean>


    <bean id="dataSource"
        class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="${jdbc.driverClassName}" />
        <property name="url" value="${jdbc.url}" />
        <property name="username" value="${jdbc.username}" />
        <property name="password" value="${jdbc.password}" />
    bean>

    
     <bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
       <property name="dataSource" ref="dataSource"/>

       <property name="packagesToScan">
         <list>
           <value>ssh.demovalue>
         list>
       property>

        <property name="hibernateProperties">
            <props>
                <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialectprop>
                <prop key="hibernate.show_sql">trueprop>
                
                <prop key="hibernate.current_session_context_class">
                   org.springframework.orm.hibernate4.SpringSessionContext
                prop>
                <prop key="hibernate.jdbc.batch_size">50prop>
                <prop key="hibernate.enable_lazy_load_no_trans">trueprop>
            props>
        property>
     bean>   

    
    <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"
        p:dataSource-ref="dataSource" />

    
    <bean id="transactionManager"
        class="org.springframework.orm.hibernate4.HibernateTransactionManager">
        <property name="sessionFactory" ref="sessionFactory" />
    bean> 

    
    <tx:annotation-driven transaction-manager="transactionManager" proxy-target-class="true"/> 

beans>

spring-mvc.xml


<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-3.0.xsd 
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd"
default-lazy-init="true">


   <context:annotation-config />
   <context:component-scan base-package="ssh.demo" >
   context:component-scan>  

beans>

3.添加必须的包依赖到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.0modelVersion>
  <groupId>ssh.demogroupId>
  <artifactId>ssh_DemoartifactId>
  <packaging>warpackaging>
  <version>0.0.1-SNAPSHOTversion>
  <name>ssh_Demo Maven Webappname>
  <url>http://maven.apache.orgurl>
 <properties>
        <project.build.sourceEncoding>UTF-8project.build.sourceEncoding>
        
        <spring.ver>4.2.5.RELEASEspring.ver>
        <hibernate.ver>4.3.11.Finalhibernate.ver>
        <hibernate.common.anno.ver>5.0.0.Finalhibernate.common.anno.ver>
        <hibernate.validator.ver>5.1.3.Finalhibernate.validator.ver>
        <mysql.connector.ver>5.1.36mysql.connector.ver>
        <aspectj.ver>1.8.6aspectj.ver>
        <jackson.ver>2.6.4jackson.ver>
        <commons-file.ver>1.3.1commons-file.ver>
        <common.csv.ver>1.2common.csv.ver>        
        <reflection.ver>0.9.10reflection.ver>
    properties>

    <dependencies>
        <dependency>
            <groupId>org.springframeworkgroupId>
            <artifactId>spring-contextartifactId>
            <version>${spring.ver}version>
        dependency>

        <dependency>
            <groupId>org.springframeworkgroupId>
            <artifactId>spring-coreartifactId>
            <version>${spring.ver}version>
        dependency>

        <dependency>
            <groupId>org.springframework.datagroupId>
            <artifactId>spring-data-redisartifactId>
            <version>1.6.0.RELEASEversion>
        dependency>

        <dependency>
            <groupId>org.springframeworkgroupId>
            <artifactId>spring-testartifactId>
            <version>${spring.ver}version>
            <scope>testscope>
        dependency>
        
        <dependency>
            <groupId>com.fasterxml.jackson.coregroupId>
            <artifactId>jackson-databindartifactId>
            <version>${jackson.ver}version>
        dependency>

        
        <dependency>
            <groupId>org.springframeworkgroupId>
            <artifactId>spring-webmvcartifactId>
            <version>${spring.ver}version>
        dependency>

        <dependency>
            <groupId>org.springframeworkgroupId>
            <artifactId>spring-jdbcartifactId>
            <version>${spring.ver}version>
        dependency>

        <dependency>
            <groupId>org.springframeworkgroupId>
            <artifactId>spring-ormartifactId>
            <version>${spring.ver}version>
        dependency>

        
        <dependency>
            <groupId>org.aspectjgroupId>
            <artifactId>aspectjrtartifactId>
            <version>${aspectj.ver}version>
        dependency>
        <dependency>
            <groupId>org.aspectjgroupId>
            <artifactId>aspectjweaverartifactId>
            <version>${aspectj.ver}version>
        dependency>

        <dependency>
            <groupId>commons-fileuploadgroupId>
            <artifactId>commons-fileuploadartifactId>
            <version>${commons-file.ver}version>
        dependency>
        

        <dependency>
            <groupId>org.hibernategroupId>
            <artifactId>hibernate-validatorartifactId>
            <version>${hibernate.validator.ver}version>
        dependency>

        <dependency>
            <groupId>org.hibernategroupId>
            <artifactId>hibernate-coreartifactId>
            <version>${hibernate.ver}version>
        dependency>

        <dependency>
            <groupId>org.hibernategroupId>
            <artifactId>hibernate-entitymanagerartifactId>
            <version>${hibernate.ver}version>
        dependency>

        <dependency>
            <groupId>org.hibernategroupId>
            <artifactId>hibernate-c3p0artifactId>
            <version>${hibernate.ver}version>
        dependency>

        <dependency>
            <groupId>org.hibernate.commongroupId>
            <artifactId>hibernate-commons-annotationsartifactId>
            <version>${hibernate.common.anno.ver}version>
        dependency>

        <dependency>
            <groupId>mysqlgroupId>
            <artifactId>mysql-connector-javaartifactId>
            <version>${mysql.connector.ver}version>
        dependency>

        <dependency>
            <groupId>org.apache.commonsgroupId>
            <artifactId>commons-csvartifactId>
            <version>${common.csv.ver}version>
        dependency>

        <dependency>
            <groupId>javax.servletgroupId>
            <artifactId>javax.servlet-apiartifactId>
            <version>3.1.0version>
        dependency>

        <dependency>
            <groupId>org.apache.maven.pluginsgroupId>
            <artifactId>maven-resources-pluginartifactId>
            <version>2.4.3version>
        dependency>

    dependencies>
  <build>
    <finalName>ssh_DemofinalName>
  build>
project>

4.写一个简单的新增功能验证项目

User.java

package ssh.demo.domain;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;

@Entity
public class User {

    @Id @GeneratedValue(strategy=GenerationType.AUTO)
    private int id;

    private String name;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        return "User:[id="+id+",name="+name+"]";
    }
}

UserDao.java

package ssh.demo.dao;

import javax.transaction.Transactional;

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

import ssh.demo.domain.User;

@Repository
public class UserDao {

    @Autowired
    private SessionFactory sessionFactory;


    public Session getCurrentSession(){
        return sessionFactory.getCurrentSession();
    }

    public void save(User u){
        getCurrentSession().save(u);
    }

    public User getByName(String name){
        return (User) getCurrentSession().createCriteria(User.class)
                .add(Restrictions.eq("name", name)).uniqueResult();
    }

    public User getById(int id){
        return (User) getCurrentSession().createCriteria(User.class)
                .add(Restrictions.eq("id", id)).uniqueResult();
    }

}

Test.java

package ssh.demo.test;

import java.util.Date;

import javax.annotation.Resource;

import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

import ssh.demo.dao.UserDao;
import ssh.demo.domain.User;


@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = "classpath:applicationContext.xml")
public class Test {
    @Resource
    private UserDao userDao;



    @org.junit.Test
    public void saveStu(){
        User stu=new User();
        stu.setName("zs");
        userDao.save(stu);
    }
}

测试结果:

基于spring+springmvc+hibernate的maven项目搭建_第6张图片
这里写图片描述

这个项目搭建其实还是挺简单,不过中途会遇到一些问题,耐心点,慢慢研究下,代码就不放到github啦,自己试一次,印象深刻很多的。

你可能感兴趣的:(spring,springmvc,项目搭建)