为了账号安全,请及时绑定邮箱和手机立即绑定

SSH框架整合,最基础开始(详细)

标签:
Java

1.首先先创建一个动态web项目。
图片描述

2.一路点击next最后记得勾选创建创建xml文档选项。
图片描述

3.创建完成之后首先添加本次项目所需要的jar包。为避免在找jar过程中的麻烦,我已经所有jar包上传至百度网盘。
链接:http://pan.baidu.com/s/1eRLnf6i 密码:vc2a

4.将所有jar包添加至如图的lib目录下。
图片描述

5.选中所有jar包,右键BuildPath-->Configure buil path。

6.添加完成之后打开web.xml文档,添加Struts2的核心过滤器。
图片描述

7.中间红框标明的那一段,我们把鼠标放上面,按住Ctrl然后点击,之后弹出这个页面就说明我们添加正确。
图片描述
8.再后续添加Spring监听器。
图片描述

9.同理如此添加spring监听器。也将鼠标置于org.springframework.web.context.ContextLoaderListener上面,按住ctrl点击,弹出这个页面就说明添加正确,那个applicationContext.xml后续进行创建。
图片描述

10.添加Spring容器,创建appliactionContext.xml文件。
图片描述

文件取名为applicationContext.xml
点击next选中aop、beans、context类别

图片描述

11.再创建一个普通xml文件,与applicationContext.xml放在同一个文件夹,文件结构如下图所示
图片描述

12.然后编辑struts.xml基本文件,我是从struts工具包中拷贝过来的xml文件再做修改。struts.xml文件先这样后续再进行修改
图片描述

13.在webContent文件夹下先创建一个普通jsp文件,取名index.jsp。在内部先添加一个连接,先打通struts跳转逻辑再后续添加内容,这个页面只用添加一行内容就不添加图片了。

<a href="employee">跳转</a>

14.接下来创建action类,再src目录下先创建com.imooc.action包,由于这次使用ssh框架来搭建员工管理系统,所以先创建EmployeeAction类。action类中新建一个save方法让save方法直接返回success字符串。
图片描述

15.继续修改struts.xml文件,添加跳转的逻辑。看图知肯定还需要创建一个success.jsp页面用来提示跳转成功。随便在success.jsp页面随便输点东西,自己认识就好。
图片描述
图片描述

16.接下来测试struts跳转是否成功。将项目部署到tomcat容器中,在开启项目的时候出错了,提示找不到applicationContext.xml。经查看是我在创建applicationContext.xml文件过程中,文件名少写了一个a,添加之后运行正常。顺利打开indes.jsp页面。
图片描述

17.点击跳转按钮,跳转到success.jsp页面,至此struts顺利打通。
图片描述

18.接下来我们整合spring。在整合spring之前我们先来创建两个类。分别是EmployeeService与EmployeeDao,在这里我并没有使用接口的方式,如果想练习也可以使用接口。
图片描述
再分别编辑action,service与dao类。
action:

package com.imooc.action;

import com.imooc.service.EmployeeService;
/**
 * 保存员工的action
 * @author ha
 *
 */
public class EmployeeAction {

    //使用spring传入EmployeeService实例
    EmployeeService employeeService;

    public void setEmployeeService(EmployeeService employeeService) {
        this.employeeService = employeeService;
    }

    public String save(){
        System.out.println("action执行了");
        employeeService.saveEmployee();

        return "success";
    }
}

service:

package com.imooc.service;

import com.imooc.dao.EmployeeDao;

/**
 * 保存员工service类
 * @author ha
 *
 */
public class EmployeeService {

    //使用spring自动注入EmployeeDao实例
    EmployeeDao employeeDao;

    public void setEmployeeDao(EmployeeDao employeeDao) {
        this.employeeDao = employeeDao;
    }

    public void saveEmployee() {
        // TODO Auto-generated method stub
        System.out.println("service执行了");
        employeeDao.saveEmployee();

    }

}

dao:

package com.imooc.dao;

public class EmployeeDao {

    public void saveEmployee() {
        // TODO Auto-generated method stub
        System.out.println("dao层执行了");
    }

}

19.接下来编辑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:aop="http://www.springframework.org/schema/aop"
    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/aop http://www.springframework.org/schema/aop/spring-aop-3.2.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd">

    <!-- 创建dao -->
    <bean id="employeeDao" class="com.imooc.dao.EmployeeDao">

    </bean>
    <!-- 创建service 自动注入dao -->
    <bean id="employeeService" class="com.imooc.service.EmployeeService">
        <property name="employeeDao" ref="employeeDao"></property>
    </bean>
    <!-- 创建action -->
    <bean id="employeeAction" class="com.imooc.action.EmployeeAction"> 
        <property name="employeeService" ref="employeeService"></property>
    </bean>

</beans>

20.然后进行测试。试试,action,service,dao三层是否可以正常运行。控制台正常打印出三层分别执行。说明spring配置文件并未书写错误。
图片描述

21.整合hibernate。首先需要创建一个实体类,员工一般会有部门信息,但我这为了简单并没有写部门信息,只包含:用户ID,用户名,密码,性别,将实体类放于新建的包com.imooc.entity下;
Employee:

package com.imooc.entity;

/**
 * 员工实体类
 * @author ha
 *
 */
public class Employee {

    private int empId;
    private String empName;
    private String password;
    private String gender;
    public int getEmpId() {
        return empId;
    }
    public void setEmpId(int empId) {
        this.empId = empId;
    }
    public String getEmpName() {
        return empName;
    }
    public void setEmpName(String empName) {
        this.empName = empName;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
    public String getGender() {
        return gender;
    }
    public void setGender(String gender) {
        this.gender = gender;
    }

}

22.实体类写完之后,我们在创建hibernate映射文件hbm.xml。在我们刚刚创建的com.imooc.entity包上右键新建选择hbm文件。
图片描述

一路点击next,最后finish,这里为hibernate自动生成的hbm文件,我们将id的生成方法改为native。到时候这个文件会帮我们自动生成数据库文件。

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Generated 2017-7-2 17:08:46 by Hibernate Tools 3.5.0.Final -->
<hibernate-mapping>
    <class name="com.imooc.entity.Employee" table="EMPLOYEE">
        <id name="empId" type="int">
            <column name="EMPID" />
            <generator class="native" />
        </id>
        <property name="empName" type="java.lang.String">
            <column name="EMPNAME" />
        </property>
        <property name="password" type="java.lang.String">
            <column name="PASSWORD" />
        </property>
        <property name="gender" type="java.lang.String">
            <column name="GENDER" />
        </property>
    </class>
</hibernate-mapping>

23.接下来在spring配置文件中配置数据库的相关属性,这里也可以将连接数据库的信息单独写成一个properties文件。将下面这些内容添加至spring配置文件的beans标签之间。

<!-- 配置hibernate属性 -->
    <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
        <property name="dataSource" ref="dataSource"></property>
        <!-- 配置hibernate属性 -->
        <property name="hibernateProperties">
            <props>
                <prop key="hibernate.dielect">org.hibernate.dialect.MySQLDialect</prop>
                <prop key="hibernate.show_sql"> true</prop>
                <prop key="hibernate.format_sql">true</prop>
                <prop key="hibernate.hbm2ddl.auto">update</prop>
            </props>
        </property>
        <!-- 加载映射文件 -->
        <property name="mappingResources">
            <list>
                <value>com/imooc/entity/Employee.hbm.xml</value>
            </list>
        </property>

    </bean>

24.验证这些配置文件是否配置无误。我们现在数据库中先创建一个ssh-test数据库。然后部署这个项目,如果自动生成了数据表则配置正确。我这里成功生成employee的数据表,表明数据库连接正常,配置成功。
图片描述

25.接下来我们尝试保存一个员工信息。先更改action类的编写。这里我们让action类继承actionsupport类,实现modelDriven接口。实现model Driven接口,需要实现getModel方法,这样可以传递页面的员工信息。
action类:

package com.imooc.action;

import com.imooc.entity.Employee;
import com.imooc.service.EmployeeService;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;
/**
 * 保存员工的action
 * @author ha
 *
 */
public class EmployeeAction extends ActionSupport implements ModelDriven<Employee>{

    Employee employee = new Employee();

    @Override
    public Employee getModel() {
        // TODO Auto-generated method stub
        return employee;
    }

    //使用spring传入EmployeeService实例
    EmployeeService employeeService;

    public void setEmployeeService(EmployeeService employeeService) {
        this.employeeService = employeeService;
    }

    public String save(){
        System.out.println("action执行了");
        employeeService.saveEmployee();

        return "success";
    }

}

26.这时候就需要修改service和dao的保存方法了。修改dao类的同时我们需要给dao注入一个sessionFactory对象,只需要在spring配置文件种配置一下即可。添加这项内容即可。<property name="sessionFactory" ref="sessionFactory"></property>
图片描述
service类:

package com.imooc.service;

import com.imooc.dao.EmployeeDao;
import com.imooc.entity.Employee;

/**
 * 保存员工service类
 * @author ha
 *
 */
public class EmployeeService {

    //使用spring自动注入EmployeeDao实例
    EmployeeDao employeeDao;

    public void setEmployeeDao(EmployeeDao employeeDao) {
        this.employeeDao = employeeDao;
    }

    public void saveEmployee(Employee employee) {
        // TODO Auto-generated method stub
        System.out.println("service执行了");
        employeeDao.saveEmployee(employee);

    }

}

dao类:

package com.imooc.dao;

import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

import com.imooc.entity.Employee;

public class EmployeeDao extends HibernateDaoSupport{

    public void saveEmployee(Employee employee) {
        // TODO Auto-generated method stub

        System.out.println("dao层执行了");
        this.getHibernateTemplate().save(employee);
    }

}

27.然后测试员工保存方法。在初始index.jsp页面上写一个form表单,然后提交员工信息,查看是否可以保存至数据库。这里是index.jsp页面。

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>

<form action="employee" method="post">
    用户名:<input type="text" name="empName"/><br>
    密码:<input type="password" name="password"/><br>
    性别:<input type="text" name="gender"/><br>
    <input type="submit" value="提交"/>
</form>
</body>
</html>

28.部署项目运行。填写员工信息。
图片描述

29.打开数据库查看信息是否存在。
图片描述

30.经验证数据库中的信息与我们在页面填写的信息一致。
这个项目我已经上传至百度云,可以下载源码观看。链接:http://pan.baidu.com/s/1mhXT2v2 密码:n9cw
此次SSH整合项目完成,实现了保存员工到数据库的方法,然后便可以进行增删改查的编写。

点击查看更多内容
19人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
JAVA开发工程师
手记
粉丝
35
获赞与收藏
77

关注作者,订阅最新文章

阅读免费教程

感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消