详解JAVAEE——SSH三大框架整合(spring+struts2+hibernate)

下面是“详解JAVAEE——SSH三大框架整合(spring+struts2+hibernate)”的完整攻略,并列举两条示例。

SSH框架整合方法详解

准备工作

首先,你需要准备好以下环境和工具:

  • JDK 1.8+,建议使用最新的版本;
  • Eclipse、IntelliJ IDEA等Java IDE;
  • Maven3+,用于项目的构建;
  • Tomcat9+,用于本地服务器环境。

新建项目

使用IDE新建一个Maven项目,然后添加如下依赖:

<dependencies>
    <!-- Struts2 -->
    <dependency>
        <groupId>org.apache.struts</groupId>
        <artifactId>struts2-core</artifactId>
        <version>2.5.22</version>
    </dependency>

    <!-- Spring Framework -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>5.2.8.RELEASE</version>
    </dependency>

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-webmvc</artifactId>
        <version>5.2.8.RELEASE</version>
    </dependency>

    <!-- Hibernate -->
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-core</artifactId>
        <version>5.4.21.Final</version>
    </dependency>

    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-validator</artifactId>
        <version>6.1.5.Final</version>
    </dependency>
</dependencies>

配置Struts2

  1. 在项目的/src/main/resources/目录下新建struts.xml文件。
  2. struts.xml中添加一个<package>元素,用于配置Action。
  3. struts.xml中添加<constant>元素,用于启用Struts2的Spring支持。

示例:

<struts>
    <constant name="struts.objectFactory" value="spring" />

    <package name="default" extends="struts-default">
        <action name="login" class="com.example.LoginAction">
            <result name="success">/login.jsp</result>
            <result name="error">/error.jsp</result>
        </action>
    </package>
</struts>

配置Spring

  1. 在项目的/src/main/resources/目录下新建applicationContext.xml文件。
  2. applicationContext.xml中添加<context:component-scan>元素,用于扫描Spring管理的Bean。
  3. 添加<mvc:annotation-driven />元素和<mvc:resources>元素,分别用于启用Spring的MVC支持和配置静态资源路径。

示例:

<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:mvc="http://www.springframework.org/schema/mvc"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="
        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">

    <context:component-scan base-package="com.example" />

    <mvc:annotation-driven />

    <mvc:resources location="/css/" mapping="/css/**" />
    <mvc:resources location="/js/" mapping="/js/**" />
    <mvc:resources location="/images/" mapping="/images/**" />

</beans>

配置Hibernate

  1. 在项目的/src/main/resources/目录下新建hibernate.cfg.xml文件,用于配置Hibernate的数据源和其他配置。
  2. hibernate.cfg.xml中添加<mapping>元素,用于引入实体类的映射文件。

示例:

<hibernate-configuration>
    <session-factory>
        <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
        <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/testdb</property>
        <property name="hibernate.connection.username">root</property>
        <property name="hibernate.connection.password">root</property>
        <property name="current_session_context_class">thread</property>
        <property name="show_sql">true</property>
        <property name="hibernate.hbm2ddl.auto">update</property>
        <mapping resource="com/example/Entity.hbm.xml" />
    </session-factory>
</hibernate-configuration>

整合SSH框架

  1. applicationContext.xml中添加Hibernate的相关配置(如SessionFactory、事务管理器等)。
  2. 在Action中注入Service,然后在Service中注入DAO。

示例:

<!-- Hibernate相关配置 -->
<bean id="sessionFactory"
      class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">
    <property name="configLocation" value="classpath:hibernate.cfg.xml"></property>
    <property name="packagesToScan" value="com.example"></property>
</bean>

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

<tx:annotation-driven />

<!-- Service -->
<bean id="userService" class="com.example.UserService">
    <property name="userDao" ref="userDao"></property> 
</bean>

<!-- DAO -->
<bean id="userDaoImpl" class="com.example.UserDaoImpl">
    <property name="sessionFactory" ref="sessionFactory"></property> 
</bean>
public class UserAction extends ActionSupport {

    @Autowired
    private UserService userService;

    // Action方法
}

public class UserService {

    @Autowired
    private UserDao userDao;

    // Service方法
}

public class UserDaoImpl implements UserDao {

    @Autowired
    private SessionFactory sessionFactory;

    // DAO方法
} 

示例1:登录功能

  1. struts.xml中增加一个Action,用于处理用户登录请求。
  2. 在Action中调用Service方法验证用户登录信息,并返回登录结果。
  3. 在Action中判断登录结果,根据不同结果返回不同页面。
<package name="default" extends="struts-default">
    <action name="login" class="com.example.UserAction" method="login">
        <result name="success">/success.jsp</result>
        <result name="error">/error.jsp</result>
        <result name="input">/login.jsp</result>
    </action>
</package>
public class UserAction extends ActionSupport {

    private UserService userService;

    private String username;
    private String password;

    // 省略getter和setter

    public String login() {
        boolean loginResult = userService.login(username, password);
        if (loginResult) {
            return SUCCESS;
        } else {
            return ERROR;
        }
    }
}
public class UserService {

    private UserDao userDao;

    @Transactional
    public boolean login(String username, String password) {
        User user = userDao.findUserByUsername(username);
        if(user != null && user.getPassword().equals(password)) {
            return true;
        } else {
            return false;
        }
    }
}

示例2:列表查询

  1. struts.xml中增加一个Action,用于处理列表查询请求。
  2. 在Action中调用Service方法查询数据,并返回查询结果。
  3. 在JSP页面中显示查询结果。
<package name="default" extends="struts-default">
    <action name="list" class="com.example.UserAction" method="list">
        <result name="success">/list.jsp</result>
    </action>
</package>
public class UserAction extends ActionSupport {

    private UserService userService;

    private List<User> userList;

    // 省略getter和setter

    public String list() {
        userList = userService.getUserList();
        return SUCCESS;
    }
}
public class UserService {

    private UserDao userDao;

    public List<User> getUserList() {
        return userDao.findUserList();
    }
}
<table>
    <thead>
        <tr>
            <th>编号</th>
            <th>姓名</th>
            <th>年龄</th>
        </tr>
    </thead>
    <tbody>
        <s:iterator value="userList">
            <tr>
                <td><s:property value="id" /></td>
                <td><s:property value="name" /></td>
                <td><s:property value="age" /></td>
            </tr>
        </s:iterator>
    </tbody>
</table>

至此,完整的SSH框架整合方法讲解完毕。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解JAVAEE——SSH三大框架整合(spring+struts2+hibernate) - Python技术站

(0)
上一篇 2023年5月19日
下一篇 2023年5月19日

相关文章

  • Spring零基础到进阶之使用方法详解

    Spring零基础到进阶之使用方法详解 什么是Spring Spring 是一个开放源代码的设计层面框架,它解决的是业务层和其他各层的耦合问题,使得整个系统架构清晰、易于维护、扩展性强。 Spring框架的模块 Spring框架分为20多个模块,其中最常用的是Core Container、Data Access/Integration、Web、AOP,下面分…

    Java 2023年5月19日
    00
  • 通过实例了解如何在JavaWeb实现文件下载

    让我来为您详细讲解如何在JavaWeb实现文件下载的完整攻略。 通过实例了解如何在JavaWeb实现文件下载 在JavaWeb中实现文件下载有多种方式,下面我们就分别来介绍一下。 方式一:使用Servlet实现文件下载 实现步骤: 1.在web.xml中配置一个Servlet,用于处理文件下载请求 <servlet> <servlet-na…

    Java 2023年5月19日
    00
  • springboot 跨域配置类及跨域请求配置

    在Spring Boot应用程序中,我们可以使用跨域配置类来允许跨域请求。以下是Spring Boot跨域配置类及跨域请求配置的完整攻略: 添加依赖 在Spring Boot应用程序中,我们需要添加spring-boot-starter-web依赖。以下是一个Maven的示例: <dependency> <groupId>org.sp…

    Java 2023年5月15日
    00
  • 什么是类加载器的双亲委派模型的实现原理?

    类加载器的双亲委派模型是Java虚拟机用于加载类的一种规范,它保证在Java中每个类都有且仅有一个类对象,从而保证Java程序的正确性和安全性。本文将详细讲解类加载器双亲委派模型的实现原理。 双亲委派模型的概述 在Java虚拟机中,每个类都有一个唯一的全限定名,类加载器加载一个类时需要先检查父加载器是否已经加载该类。如果父加载器没有加载该类,则它会使用自己的…

    Java 2023年5月10日
    00
  • python 调用HBase的简单实例

    下面是详细讲解“python 调用HBase的简单实例”的完整攻略: 简介 HBase是一个基于Hadoop的分布式NoSQL数据库,其数据存储在HDFS(Hadoop文件系统)上,能够存储大量结构化或非结构化数据。我们可以使用Python编程语言来连接HBase数据库,并对数据进行操作。 前置条件 在进行操作之前需要保证以下条件已满足: 系统中已安装HBa…

    Java 2023年6月2日
    00
  • java.lang.Void 与 void的比较及使用方法介绍

    Java中的Void和void Java中的Void和void是两个容易混淆的概念,但实际上它们是有着明显的区别的。 Void 先来看看Void。Void是Java中的一个类,不同于基本类型(如int和double),它不能进行实例化。Void类只有一个实例,即常量Void.TYPE,表示的是空类型。 我们可以用Void类来定义一个返回值类型为void的方法…

    Java 2023年5月26日
    00
  • 批量将现有Jar包上传到Maven私服

    批量将现有Jar包上传到Maven私服的过程,大致可以分为以下几个步骤: 准备Maven私服 在私服上创建一个Maven仓库,并提前准备好上传Jar包所需要的账户、密码等信息。 准备Jar包 将需要上传的Jar包,统一归纳至一个目录,在这个目录下,我们可以用以下命令将所有Jar包的文件名打印到一个列表文件中: ls *.jar > list.txt 上…

    Java 2023年5月19日
    00
  • mybatis resultmap 如何为对象赋值的调用顺序

    MyBatis的ResultMap用于映射查询结果集中的每一行数据到Java对象上,并赋值给相应的属性字段。下面是讲解“mybatis resultmap如何为对象赋值的调用顺序”的攻略。 1. ResultMap的调用顺序 在对查询结果集进行映射时,MyBatis会按照以下的调用顺序进行: 如果存在自定义的映射方法(typeHandler)或者列为null…

    Java 2023年5月20日
    00
合作推广
合作推广
分享本页
返回顶部