Maven、IDEA构建SSH基本项目结构

写在前面

最近在学习Java SSH,SSH相信学过Java的应该都知道吧,SSH是目前比较流行的一种Java Web应用程序开源框架,主要包括Spring、Struts2和Hibernate三个框架,这三个框架既可以单独使用,也可以整合在一起使用。Spring主要对应web开发中的service层,Struts2主要对应web层,Hibernate主要对应dao层。关于这三个框架的详细介绍我会在其他的博客文章中介绍,本文主要是在IntelliJ IDEA中,使用maven进行项目管理,搭建SSH基本项目结构。

主要软件版本

  • IntelliJ IDEA: 2016.2.4
  • Apache Maven: 3.3.3
  • Java version: 1.8.0_60
  • Spring: 4.2.4.RELEASE
  • Struts2: 2.3.24
  • Hibernate: 5.0.7.Final

创建Maven项目

Maven、IDEA构建SSH基本项目结构_第1张图片
new project
Maven、IDEA构建SSH基本项目结构_第2张图片
new maven project

点击next,接着填一些信息,创建一个新的web项目,项目的目录结构如下图所示:


Maven、IDEA构建SSH基本项目结构_第3张图片
code_structure_1

我们发现没有代码目录和测试代码目录,我们需要手动创建,在main下创建java目录,并让目录为源代码目录,在src下创建test目录,并在test目录下创建java目录,把这个java目录作为测试代码目录,创建后项目目录结构如下:


Maven、IDEA构建SSH基本项目结构_第4张图片
code_structure_2

之后我们在main/java写项目源代码,在test/java下写测试代码。

接下来我们在pom.xml中引入项目依赖,这些我都经过测试,中途也有缺少依赖导致项目运行报错,我都一一解决了,最终的pom.xml如下,直接复制即可:

编写pom.xml及web.xml


  4.0.0
  io.cutoutsy
  ssh
  war
  1.0-SNAPSHOT
  ssh Maven Webapp
  http://maven.apache.org
  
    
      junit
      junit
      3.8.1
      test
    
      
      
          org.apache.struts
          struts2-core
          2.3.24
      
      
      
      
          org.hibernate
          hibernate-core
          5.0.7.Final
      

      
      
          org.springframework
          spring-orm
          4.2.4.RELEASE
      

      
      
          mysql
          mysql-connector-java
          5.1.38
      

      
          com.mchange
          c3p0
          0.9.2.1
      

      
          org.springframework
          spring-web
          4.2.4.RELEASE
      

      
          org.apache.struts
          struts2-spring-plugin
          2.3.24
      

      
          org.hibernate
          hibernate-entitymanager
          5.0.7.Final
      

  
  
    ssh
  

接下来我们需要配置webapp/WEB-INF/web.xml,




  ssh

  
    contextConfigLocation
    classpath:applicationContext.xml
  
    
  
    struts2
    org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
  

  
    struts2
    /*
  
    
  
    org.springframework.web.context.ContextLoaderListener
  

  
    index.html
    index.htm
    index.jsp
  


这个配置文件中,除了我们平时熟悉的配置struts2的过滤器外,我还配置了监听器,指定spring配置文件位置,这样在项目启动的时候,服务器就会创建sessionFactory以及其他对象,这样网站初始访问时候就不会存在速度慢的情况了。

编写代码

接着我们来编写项目基本测试代码,在编写测试代码前,由于我们使用Hibernate,所以肯定会用到数据库,我们在数据库里面创建一个名为ssh的数据库,方便后面使用。我们首先在main/java/下创建4个包,分别为action、dao、entity、service。在entity下创建User.java类,代码如下:

package entity;

public class User {
    private int id;
    private String name;
    private String password;

    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;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }
}

同时我们在这个目录下,编写User的关系映射文件User.hbm.xml,内容如下:




    
        
            
        

        
        
    

在dao下面创建接口UserDao,代码如下:

package dao;

import entity.User;

public interface UserDao {
    public String addUser(User user);
}

同时在这个目录下,编写它的实现类,先创建impl的包,然后创建UserDaoImpl类,代码如下,

package dao.impl;

import dao.UserDao;
import entity.User;
import org.springframework.orm.hibernate5.support.HibernateDaoSupport;

public class UserDaoImpl extends HibernateDaoSupport implements UserDao{

    public String addUser(User user) {
        getHibernateTemplate().save(user);
        return "success";
    }
}

在service下创建UserService类,代码如下:

package service;

import dao.UserDao;
import entity.User;
import org.springframework.transaction.annotation.Transactional;

@Transactional
public class UserService {

    private UserDao userDao;

    public void setUserDao(UserDao userDao) {
        this.userDao = userDao;
    }

    public String addUser(User user){
        return userDao.addUser(user);
    }
}

在action下创建UserAction类,代码如下:

package action;

import com.opensymphony.xwork2.ActionSupport;
import entity.User;
import service.UserService;

public class UserAction extends ActionSupport{
    private UserService userService;
    public void setUserService(UserService userService) {
        this.userService = userService;
    }

    public String add(){
        User user = new User();
        user.setName("bob");
        user.setPassword("12345");
        userService.addUser(user);
        return "success";
    }
}

现在,我们代码部分已经编写完了,接下来就是三个框架的配置文件,关于struts2和spring整合主要是把struts2里面action对象的创建交给Spring进行管理,而hibernate和spring进行整合是把数据库信息配置到Spring中,且把Hibernate中sessionFactory的创建也交给Spring进行管理,同时让项目启动的时候由服务器进行创建,按照上述的原则,在resource下编写配置文件如下:

structs.xml




    
        
            /success.html
        
    


hibernate.cfg.xml



    

        org.hibernate.dialect.MySQLDialect
        false
        true
        update
        true
        utf8

        
    


applicationContext.xml




    
    
        
        
        
        
    

    
    
        
        
    

    
    
        
    

    

    
        
    
    
        
    

    
        
    


上面的数据库信息是我本地的数据库信息,你要按照你的数据库信息进行配置。至此我们的配置文件也编写完成了,我们的测试代码是向数据库里面添加一条用户记录,添加成功则说明我们ssh整合配置没有问题,在添加成功后添加到页面success.html,所以我们需要在webapp下编写success.html,代码如下:



Add Success!

测试

接下来我们就来测试我们的框架搭建是否是成功的,我们需要给项目配置一个tomcat,如果不清楚怎么在IDEA中给web项目配置tomcat服务器的,可以自行查询,或者在评论里面留言,这个不属于本文的内容。配置好了之后我们启动tomcat服务器,启动的时候不要忘了开启数据库服务,否则会报错,


Maven、IDEA构建SSH基本项目结构_第5张图片
tomcat_start

由于我们在服务器启动的时候就会创建数据库sessionFactory,所以这个时候,服务器应该已经帮我们创建好t_user这个表了,到数据库里面看下


Maven、IDEA构建SSH基本项目结构_第6张图片
mysql_table

如果你的数据库里面没有这个表,请查看启动的时候是否有报错信息,然后我们去浏览器打开:http://localhost:8080/进行访问

Maven、IDEA构建SSH基本项目结构_第7张图片
browser_index

接下来我们调用我们编写的action,添加用户,通过http://localhost:8080/user_add,成功结果如下:

Maven、IDEA构建SSH基本项目结构_第8张图片
browser_add

然后我们去数据库里面查看用户是否添加成功,


Maven、IDEA构建SSH基本项目结构_第9张图片
mysql_bob

可见,数据已经成功插入到数据库中。

结束

到此,我们已经成功在IDEA中使用maven搭建了SSH整合框架。接下来我们就可以编写我们的业务代码了,当然还有用maven打包项目,但这不属于本文要讲的内容,可能在后面的博客中我会写到。

更多文章请访问我的博客

你可能感兴趣的:(Maven、IDEA构建SSH基本项目结构)