Idea+maven搭建SSH(struts2+hibernate5+spring5)环境的方法步骤

最近要使用 SSH 来编写期末的考核任务,之前也在网上查阅了很久,也试出了很多的问题。也很感谢很多前辈们的总结,我也查到了很多用用的内容。

本次项目,我将以一个简单的登录案例实现 SSH 的项目整合,项目我会放到 Github 上面,需要的同学可以 clone 下来在本地跑一跑

项目地址:SSH 脚手架

一、项目环境搭建

使用 maven 搭建一个 Java Web 项目

1.1 配置 Spring 坐标依赖

引入 Spring 坐标依赖

<!-- spring-context -->
  <dependency>
   <groupId>org.springframework</groupId>
   <artifactId>spring-context</artifactId>
   <version>5.1.0.RELEASE</version>
  </dependency>
  <!-- spring-web -->
  <dependency>
   <groupId>org.springframework</groupId>
   <artifactId>spring-web</artifactId>
   <version>5.1.0.RELEASE</version>
  </dependency>
  <!--spring-jdbc -->
  <dependency>
   <groupId>org.springframework</groupId>
   <artifactId>spring-jdbc</artifactId>
   <version>5.1.0.RELEASE</version>
  </dependency>
  <!-- spring-orm -->
  <dependency>
   <groupId>org.springframework</groupId>
   <artifactId>spring-orm</artifactId>
   <version>5.1.0.RELEASE</version>
  </dependency>
  <!-- aop面向切面依赖的jar包 -->
  <!-- aspectjrt -->
  <dependency>
   <groupId>org.aspectj</groupId>
   <artifactId>aspectjrt</artifactId>
   <version>1.9.1</version>
  </dependency>
  <!-- aspectjweaver -->
  <dependency>
   <groupId>org.aspectj</groupId>
   <artifactId>aspectjweaver</artifactId>
   <version>1.9.1</version>
  </dependency>

1.2 配置 hibernate 坐标依赖

我们的目标是要整合 SSH,所以需要 hibernate 的核心依赖, mysql 数据库驱动,以及 c3p0 数据库连接池

<!-- hibernate核心依赖 -->
  <dependency>
   <groupId>org.hibernate</groupId>
   <artifactId>hibernate-core</artifactId>
   <version>5.2.17.Final</version>
  </dependency>
  <!-- mysql数据库驱动依赖 -->
  <dependency>
   <groupId>mysql</groupId>
   <artifactId>mysql-connector-java</artifactId>
   <version>5.1.47</version>
  </dependency>
    <!-- c3p0连接池 -->
  <dependency>
   <groupId>com.mchange</groupId>
   <artifactId>c3p0</artifactId>
   <version>0.9.5.2</version>
  </dependency>

1.3 配置 struts2 坐标依赖

我们需要 struts 核心,以及 struts 整合 spring 的插件,以及 struts 对 json 数据处理的插件

 <!-- struts2 -->
  <dependency>
   <groupId>org.apache.struts</groupId>
   <artifactId>struts2-core</artifactId>
   <version>2.3.35</version>
  </dependency>
  <!-- struts2-spring-plugin整合spring和struts2 -->
  <dependency>
   <groupId>org.apache.struts</groupId>
   <artifactId>struts2-spring-plugin</artifactId>
   <version>2.3.35</version>
  </dependency>
  <!-- json 数据处理,struts 插件 -->
  <dependency>
   <groupId>org.apache.struts</groupId>
   <artifactId>struts2-json-plugin</artifactId>
   <version>2.3.8</version>
  </dependency>

1.4 配置Java EE 坐标依赖

这里可以引入 servlet api,jstl 标签库等一系列工具

<!-- servlet api -->
  <dependency>
   <groupId>javax.servlet</groupId>
   <artifactId>javax.servlet-api</artifactId>
   <version>3.1.0</version>
   <scope>provided</scope>
  </dependency>
  <dependency>
   <groupId>javax.servlet.jsp</groupId>
   <artifactId>javax.servlet.jsp-api</artifactId>
   <version>2.3.1</version>
   <scope>provided</scope>
  </dependency>
  <!-- lombok 一个插件,可以免 getter 和 setter 方法,但是需要我们在 idea 中装对应的插件才可以使用,可以不要-->
  <dependency>
   <groupId>org.projectlombok</groupId>
   <artifactId>lombok</artifactId>
   <version>1.18.0</version>
   <scope>provided</scope>
  </dependency>
  <!-- jstl -->
  <dependency>
   <groupId>jstl</groupId>
   <artifactId>jstl</artifactId>
   <version>1.2</version>
  </dependency>
  <dependency>
   <groupId>taglibs</groupId>
   <artifactId>standard</artifactId>
   <version>1.1.2</version>
  </dependency>

1.5 其他工具

json 处理工具

  <dependency>
     <groupId>org.jetbrains</groupId>
     <artifactId>annotations-java5</artifactId>
     <version>RELEASE</version>
     <scope>compile</scope>
   </dependency>
  <!-- 官方给的 json 包,建议使用这个,但是我后面好像并没有用到 -->
  <dependency>
   <groupId>org.json</groupId>
   <artifactId>json</artifactId>
   <version>20160810</version>
  </dependency>

二、项目结构搭建

2.1 配置文件

使用如下方式创建

1.applicationContext.xml
2.jdbc.properties
3.struts.xml

2.2 包结构

创建如下的基本包结构

三、编写配置文件

3.1 web.xml 文件配置

<!DOCTYPE web-app PUBLIC
 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>
 <display-name>Archetype Created Web Application</display-name>

 <context-param>
  <param-name>contextConfigLocation</param-name>
  <!-- Spring 的配置文件-->
  <param-value>classpath:applicationContext.xml</param-value>
 </context-param>
 <!-- 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>
 <!-- 上下文监听器 -->
 <listener>
  <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
 </listener>
</web-app>

3.2 编写 jdbc.properties 文件

这里我们需要自己手动修改数据库的信息配置

jdbc.driverClass=com.mysql.jdbc.Driver
jdbc.jdbcUrl=jdbc:mysql://localhost:3306/hibernate?characterEncoding=utf-8&autoReconnect=true&useSSL=false
jdbc.user=root
jdbc.password=root
#连接池中保留的最小连接数
jdbc.minPoolSize=1
#连接池中保留的最大连接数
jdbc.maxPoolSize=20
#初始化连接数
jdbc.initialPoolSize=1

3.3 编写 applicationContext.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: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/tx
    http://www.springframework.org/schema/tx/spring-tx.xsd
    http://www.springframework.org/schema/context
    http://www.springframework.org/schema/context/spring-context.xsd">

  <!-- 引入资源文件 -->
  <context:property-placeholder location="classpath:jdbc.properties"/>
  <!-- 自动扫描与装配bean-->
  <context:component-scan base-package="dao.*,service.*"/>
  <context:component-scan base-package="action"/>
  <!--引入注解解析器-->
  <context:annotation-config/>
  <!-- 数据源连接池 -->
  <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
    <property name="driverClass" value="${jdbc.driverClass}"/>
    <property name="jdbcUrl" value="${jdbc.jdbcUrl}"/>
    <property name="user" value="${jdbc.user}"/>
    <property name="password" value="${jdbc.password}"/>
    <property name="minPoolSize" value="${jdbc.minPoolSize}"/>
    <property name="maxPoolSize" value="${jdbc.maxPoolSize}"/>
    <property name="initialPoolSize" value="${jdbc.initialPoolSize}"/>
  </bean>
  <bean id="sessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">
    <property name="dataSource" ref="dataSource"/>
    <property name="hibernateProperties">
      <props>
        <!--配置Hibernate的方言-->
        <prop key="hibernate.dialect">
          org.hibernate.dialect.MySQLDialect
        </prop>
        <prop key="hibernate.hbm2ddl.auto">update</prop>
        <prop key="hibernate.current_session_context_class">thread</prop>
        <!--格式化输出sql语句-->
        <prop key="hibernate.show_sql">true</prop>
        <prop key="hibernate.format_sql">true</prop>
        <prop key="hibernate.use_sql_comments">false</prop>
      </props>
    </property>
    <!-- 自动扫描实体 -->
    <property name="packagesToScan" value="entity" />
  </bean>
  <!-- 配置 HibernateTemplate 对象 -->

  <bean id="hibernateTemplate" class="org.springframework.orm.hibernate5.HibernateTemplate">
    <!-- 注入 SessionFactory 对象 -->
    <property name="sessionFactory" ref="sessionFactory"/>
  </bean>

  <!-- 用注解来实现事务管理 -->
  <bean id="txManager" class="org.springframework.orm.hibernate5.HibernateTransactionManager">
    <property name="sessionFactory" ref="sessionFactory"/>
  </bean>
  <tx:annotation-driven transaction-manager="txManager"/>
</beans>

3.4 struts 配置文件

我们还没有编写的具体的 action 服务,所以这里先跳过

四、使用 hibernate 逆向生成工具生成实体

4.1 配置数据库连接信息

使用 idea 自带的数据库连接的工具

完善基本配置信息

4.2 逆向生成实体类

4.3 实体类配置

生成好后可以看到和数据库对应的实体类,我的表很简单,一个简单的用户表,只有 id, username, password 字段

但是我们发现里面的部分内容会爆红,这是因为我们没有指定数据源

选择我们刚才连接的数据库

然后就没问题了。

五、JavaBean 编写

看到包结构,大家应该可以猜出来,我是使用的典型的 MVC 三层架构来编写的

5.1 编写 dao 层

创建 UserDao 以及 它的实现类 UserDaoImpl

UserDao 编写

package dao;

import entity.User;

public interface UserDao {

  // 用户登录验证
  public User selectByUsernameAndPassword(String username, String password);
}

UserDaoImpl

package dao.Impl;

import dao.UserDao;
import entity.User;
import org.hibernate.Session;
import org.hibernate.query.Query;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.orm.hibernate5.HibernateTemplate;
import org.springframework.stereotype.Repository;

import javax.annotation.Resource;

// 使用 Spring 来接管持久层的所有操作
@Repository
public class UserDaoImpl implements UserDao {

  // 使用 Hibernate 提供的模板
  @Autowired
  @Resource
  private HibernateTemplate hibernateTemplate;

  // 生成对应的 get 和 set 方法
  public HibernateTemplate getHibernateTemplate() {
    return hibernateTemplate;
  }

  public void setHibernateTemplate(HibernateTemplate hibernateTemplate) {
    this.hibernateTemplate = hibernateTemplate;
  }

  @Override
  public User selectByUsernameAndPassword(String username, String password) {
    // 登录的逻辑不算难,就是使用 sql 语句查询,username 和 password 两个字段是否存在即可,我们使用的是 hibernate 框架,所以要写 hql 语句
    Session session = hibernateTemplate.getSessionFactory().openSession();
    Query q = session.createQuery("from User u where u.username = ? and u.password = ?");
    q.setParameter(0,username);
    q.setParameter(1,password);
    User u = (User) q.uniqueResult();
    return u;
  }
}

我们写好了 dao 层,这时候发现出现了爆红的问题,这里我们需要手动添加项目的依赖信息

点击 project structure

添加这个就可以了,问题就解决了

显示正常了

5.2 编写 Service 层

同样,我们创建对应的 UserService 和 对应的 UserServiceImpl 类

有的同学可能会问道,不就是一个简单的登录功能嘛,有必要这么麻烦吗?是的,这么做确实没必要,但是随着项目的越来越大,只有把具体的功能全部分开来做,这样才不至于整个项目太过于乱

编写用户的业务层 接口 UserService

package service;

import entity.User;

public interface UserService {
  // 登录验证
  User checklogin(String username, String password);
}

编写 业务层对应的实现类 UserServiceImpl

package service.Impl;

import dao.UserDao;
import entity.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import service.UserService;

@Service
public class UserServiceImpl implements UserService {

  // 这里业务层调用持久层的方法
  @Autowired
  private UserDao ud;

  @Override
  public User checklogin(String username, String password) {
    return ud.selectByUsernameAndPassword(username,password);
  }
}

5.3 编写 Controller 层 (UserAction)

这里的逻辑思路,是 controller 层 调用 service 的方法,service 层调用 dao 层的方法

package action;

import com.opensymphony.xwork2.ActionContext;
import entity.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import service.UserService;

import java.util.Map;

// 使用 Controller 表示这是控制层,使用 ua 表示这个类被 Spring 所管理
@Controller("ua")
public class UserAction {
  // 编写两个属性,使用 struts2 的 ognl 表达式可以直接接收到前端穿过来的数据,不再需要 request.getParameter("xxxx") 接收数据了
  private String username;
  private String password;

  // 调用业务层的方法
  @Autowired
  private UserService us;

  // get 方法可以不要, set 方法必须有,不然前端的数据就无法注入进来
  public String getUsername() {
    return username;
  }

  public void setUsername(String username) {
    this.username = username;
  }

  public String getPassword() {
    return password;
  }

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

  // 编写登录逇控制层方法
  public String login() {
    System.out.println(username + " " + password); // 打印穿过来的数据
    ActionContext ac = ActionContext.getContext();
    // 得到 servlet 中的三大域的 session 域,在这里我们要将数据保存至 session,并在前端展示
    Map<String,Object> session = ac.getSession(); // 我们可以看到 session 的实质就是一个 map
    User user = us.checklogin(username,password); // 登录验证
    if ( user!=null ) {
      session.put("user",username);
      return "success";
    } else {
      return "error";
    }
  }
}

5.4 编写 struts 路由映射

记得在 Project Structure 添加如下配置

stucts action 配置

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
    "http://struts.apache.org/dtds/struts-2.3.dtd">

<struts>

  <package name="user" namespace="/" extends="struts-default">
    <action name="checklogin" class="ua" method="login">
    	<!-- 登录成功挑战至首页 -->
      <result name="success" type="redirect">/index.jsp</result>
      <!-- 登录失败跳转至错误页面 -->
      <result name="error" type="redirect">/error.jsp</result>
    </action>
  </package>
</struts>

六、前端界面编写

6.1 登录界面编写

<%--
 Created by IntelliJ IDEA.
 User: Gorit
 Date: 2020/6/13
 Time: 23:18
 Contact: gorit@qq.com
 To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
  <title>Title</title>
</head>
<body>
  <form action="checklogin" method="post">
    <label for="username">账户:</label>
    <input type="text" name="username" id="username"><br>
    <label for="password">密码:</label>
    <input type="password" name="password" id="password"><br>
    <input type="submit" value="登录">
  </form>

</body>
</html>

6.1 登录成功

<%--
 Created by IntelliJ IDEA.
 User: Gorit
 Date: 2020/6/13
 Time: 23:21
 Contact: gorit@qq.com
 To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
<html>
<head>
  <title>Title</title>
</head>
<body>
  <h3>欢迎你 ${sessionScope.user} 登录!!</h3>
</body>
</html>

6.3 登录失败

<%--
 Created by IntelliJ IDEA.
 User: Gorit
 Date: 2020/6/13
 Time: 23:21
 Contact: gorit@qq.com
 To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
  <title>Title</title>
</head>
<body>
  <h2>出错啦!!!</h2>
</body>
</html>

到此这篇关于Idea+maven搭建SSH(struts2+hibernate5+spring5)环境的方法步骤的文章就介绍到这了,更多相关Idea+maven搭建SSH内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 使用IDEA配置Maven搭建开发框架ssm教程

    一.配置Maven环境 1.下载Maven 下载链接http://maven.apache.org/download.cgi 2.下载完成解压压缩包并创建本地仓库文件夹 3.打开解压缩文件,配置本地仓库路径 4.配置Maven环境变量 5.在cmd中查看maven是否配置正确 在cmd中输入mvn -v命令查看 二.在IntelliJ IDEA中配置Maven 打开-File-Settings 三.新建maven JAVAWEB项目 1.打开-File-New-Project Next Next

  • 使用Maven搭建SpringMVC项目的步骤(图文教程)

    约定电脑都安装了eclipse,且已配置好Maven以及eclipse插件. 1.Eclipse 2.maven 3.Eclipse 需要安装maven插件.url:maven - http://download.eclipse.org/technology/m2e/releases . 1.新建一个Maven Project 2.选择工作空间 3.搭建Web工程,我们选择maven-archetype-webapp类型 4.填写项目参数,如图 5.以上步骤完成时的工程结构目录 6.可以查看或修

  • Maven 搭建SpringMVC+Hibernate项目详解

    前言 今天复习一下SpringMVC+Hibernate的搭建,本来想着将Spring-Security权限控制框架也映入其中的,但是发现内容太多了,Spring-Security的就留在下一篇吧,这篇主要搭建SpringMVC4.1.4和Hibernate4.3.8,之前也打了好多SpringMVC的,这部分已经非常的熟悉了,毕竟业开发过一年多SpringMVC的,这次持久层采用Hibernate,数据源采用c3p0,数据库暂采用MySQL,主要是想复习一下Hibernate.搭建Spring

  • Java框架搭建之Maven、Mybatis、Spring MVC整合搭建(图文)

    本文主要介绍了Java框架搭建之Maven.Mybatis.Spring MVC整合搭建(图文),分享给大家,具体如下: SSM(Spring+SpringMVC+Mybatis),目前较为主流的企业级架构方案.标准的MVC设计模式,将整个系统划分为显示层.Controller层.Service层.Dao层四层,使用SpringMVC负责请求的转发和视图管理,Spring实现业务对象管理, MyBatis作为数据对象持久化引擎. 框架详情 Spring 是一个轻量级的Java开发框架,它是为了解

  • 使用maven+eclipse搭建struts2开发环境

    一.web分层结构简介1.web[细]粒度分层结构: 按细粒度分层可以分为以下6种: 1).表现层:html/css/js/jsp 2).控制层:servlet 3).实体层:javabean 4).业务逻辑层:javabean 5).持久层:jdbc/c3p0/dbutils 6).数据层:mysql/oracle 2.web[粗]粒度分层结构(重点): 按粗粒度可以分为3层: 1).由上面的1).2).3)组成mvc 什么是MVC? m即为model(模型层),v为view(表现层),c为c

  • Maven实战之搭建Maven私服和镜像的方法(图文)

    本文主要介绍了Maven实战之搭建Maven私服和镜像的方法(图文),分享给大家,具体如下: 准备工作 安装3.6.*的Nexus 理论 Nexus的仓库类型 hosted(宿主):宿主仓库主要用于存放项目部署的构件.或者第三方构件用于提供下载. proxy(代理):代理仓库就是对远程仓库的一种代理,从远程仓库下载构件和插件然后缓存在Nexus仓库中 group(仓库组):仓库的一种组合策略,并不存在实在意义的依赖,只是作为一种中转站的作用存在. Nexus内置仓库类型 maven-centra

  • 详解手把手Maven搭建SpringMVC+Spring+MyBatis框架(超级详细版)

    SSM(Spring+SpringMVC+Mybatis),目前较为主流的企业级架构方案.标准的MVC设计模式,将整个系统划分为显示层.Controller层.Service层.Dao层四层,使用SpringMVC负责请求的转发和视图管理,Spring实现业务对象管理, MyBatis作为数据对象持久化引擎. 一. 框架详情 Spring是一个轻量级的Java开发框架,它是为了解决企业应用开发的复杂性而创建的.Spring的用途不仅限于服务器端的开发.从简单性.可测试性和松耦合的角度而言,任何J

  • maven搭建java ee项目图文教程

    一.开发环境 jdk1.7  tomcat7 eclipse-jee-luna-R-win32 maven2.2.1 二.搭建步骤 1.点击File->New->Other,选择maven project 2.选择maven project,点击Next,,而后再点击next,进入如下界面 如图选择最后一个,点击next 3.看到以下界面 输入Group Id跟Artifact Id,点击finish完成基本创建 4.创建好的项目结构如图所示(Java视图) 如果是Java EE视图,看到的项

  • Maven+oracle+SSM搭建简单项目的方法

    简单谈一下maven搭建 ssm 项目 (使用数据库oracle,比 mysql 麻烦一点,所以这里谈一下) 在创建maven 的web项目时,常常会缺了main/java , main/test 两个文件夹. 解决方法: ① : 在项目上右键选择properties,然后点击java build path,在Librarys下,编辑JRE System Library,选择workspace default jre就可以了. (推荐使用这种) ② :手动创建 目录.切换视图采用Navigato

  • Eclipse使用maven搭建spring mvc图文教程

    本文为大家介绍了Eclipse使用maven搭建spring mvc的详细步骤,供大家参考,具体内容如下 1. 环境配置 a). Java 1.7 b). Eclipse luna c). Maven3.2.5 d). Spring 4.1.4 2. 创建maven工程 a). 打开eclipse,file->new->project->Maven->Maven Project b). 下一步 c). 选择创建的工程为webapp,下一步 d). 填写项目的group id和art

随机推荐