详解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日

相关文章

  • mybatis分页效果实现代码

    下面我来详细讲解一下mybatis分页效果实现代码的完整攻略。 什么是mybatis分页? mybatis分页是指将查询出来的结果集分成一定数量的小部分,每次只显示其中的一部分,以此来获得更加良好的用户体验。在使用mybatis进行开发时,我们可以利用一些已有的插件或者自定义代码来实现mybatis分页。 基于插件实现mybatis分页 在mybatis中,…

    Java 2023年5月20日
    00
  • Android仿QQ圆形头像个性名片

    作为网站的作者,我很乐意为大家讲解Android仿QQ圆形头像个性名片的完整攻略。整个过程可以分成以下步骤: 步骤一:导入CircleImageView库 进入项目的gradle文件,在dependencies选项下加入以下代码: compile ‘de.hdodenhof:circleimageview:2.2.0’ 同步gradle,等待依赖库下载完毕。…

    Java 2023年5月26日
    00
  • Java趣味练习题之输出两个日期之间的相隔天数

    以下是对应任务的完整攻略: 标题 题目:Java趣味练习题之输出两个日期之间的相隔天数 题目描述 给定两个日期,请输出两个日期之间相隔的天数。 思路 要求出两个日期之间相隔的天数,我们需要计算两个日期之间的天数差,而计算天数差的核心就是比较两个日期的大小。因此,我们可以将两个日期分别转换成毫秒数,然后通过毫秒数的差值,计算出两个日期之间相隔的天数。 具体实现…

    Java 2023年5月20日
    00
  • Java中的Web MVC简介_动力节点Java学院整理

    Java中的Web MVC简介 Web MVC 是一种基于模型-视图-控制器(MVC)模式的 Web 应用程序开发框架。在 Java 中,我们可以使用多种 Web MVC 框架,例如 Spring MVC、Struts2 等。本文将详细讲解 Java 中的 Web MVC,包括 MVC 模式的基本概念、Web MVC 框架的基本原理、Spring MVC 的…

    Java 2023年5月18日
    00
  • java 中 System.out.println()和System.out.write()的区别

    Java 中 System 类提供了输出字符流的功能,其中 System.out 对象可以输出到标准输出流。在这个对象中,有两个常见的方法是 System.out.println() 和 System.out.write(),本文将详细讲解它们之间的区别以及使用场景和示例。 System.out.println() 和 System.out.write() …

    Java 2023年5月26日
    00
  • Java8加java10等于Java18的版本查看及特性详解

    Java8加Java10等于Java18的版本查看及特性详解 在本篇攻略中,我们会讲解如何通过一些简单的命令来查看Java版本,并介绍一些Java8和Java10的重要特性。同时,我们还会提到Java18这一版本是否真实存在的问题。 1. 查看Java版本 1.1 使用java -version命令 在命令行中键入java -version命令,可查看当前系…

    Java 2023年5月19日
    00
  • Ajax+Servlet+jsp显示搜索效果

    如果想要实现“Ajax+Servlet+jsp显示搜索效果”,我们需要完成以下步骤: 前端页面设计 首先,我们需要在前端设计一个搜索框和搜索结果展示区域。搜索框用于输入查询关键词,搜索结果展示区域用于显示查询到的结果。如下示例代码: <form> <input type="text" id="searchInp…

    Java 2023年6月15日
    00
  • Java解压zip文件完整代码分享

    好的。首先,我们需要使用Java代码解压缩一个ZIP文件。下面是代码实现的过程: 步骤1:导入Java ZIP库 首先,我们需要在项目中导入Java的ZIP库,这可以通过在POM.xml文件中添加以下依赖项来实现: <dependency> <groupId>org.apache.commons</groupId> &lt…

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