SSH框架的一个简单搭建(附上源码)

  • SSH(Spring+Struts2+Hibernate)

    看了一些视频和资料,自己照猫画虎的写了一个很简单的SSH框架,实现的功能是对学生列表的查询,我的目的只是搭建一个框架,所以就只实现了非常简单的查询功能,觉得搭建出来一个框架其实对自己还是有一个比较好一点的理解,文章内源码都有,也可以到我的资源中直接下载资源(可直接运行看效果)。

资源链接为:https://download.csdn.net/download/weixin_43884418/11180644

ssh对于我个人的理解,struts2属于web层,负责与客户端打交道,将数据展示在视图中;spring属于service层(其实不准确,它应该是将三个层耦合起来,spring自己单独也可以完全实现一个web项目),实现主要的业务逻辑,ioc(控制反转)和aop(切面编程)是它的核心;hibernate就是一个对jdbc的轻量级包装,实现数据的持久化,对数据库中的数据进行操作。

在ecplise上进行的开发,那下面我们就来看看怎么搭建的吧~
——————————————————————————————————————

  1. 创建一个数据库(用的mysql)
    在这里插入图片描述

  2. 创建一个动态web项目(大家应该都会滴)
    new->other->输入web找到这个项目,进行创建
    在这里插入图片描述

  3. 将所有需要的jar包导入(有点多,虽然很多包没用到,但还是都导入了)
    在这里插入图片描述
    在这里插入图片描述

  4. 创建一个javabean,也就是一个Student的类

package ssh_javaBean;

public class Student {

	private int id;
	private String name;
	private int age;
	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 int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	
	
}

  1. 创建一个Student.hbm.xml(建立bean与数据库表的映射关系)
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
 
 <!-- 建立Student类中的属性和数据库中表的关系映射 -->
 
<hibernate-mapping package="ssh_javaBean">
    <class name="Student" table="studentMessage">
        <id name="id" column="id">
            <generator class="native">
            </generator>
        </id>
        <property name="name" />
        <property name="age" />
    </class>
     
</hibernate-mapping>
  1. 创建DAO的接口和实现类
    接口
package ssh_DAO;

import java.util.List;

import ssh_javaBean.Student;

public interface studentDAO {

	public List<Student> list();
	public void add(Student s);
}

实现类

package ssh_DAOImp;

import java.util.List;

import org.springframework.orm.hibernate3.HibernateTemplate;

import ssh_DAO.studentDAO;
import ssh_javaBean.Student;

public class studentDAOImp extends HibernateTemplate implements studentDAO {

	@Override
	public List<Student> list() {//返回所有Student对象
		return find("from Student");
	}

	@Override
	public void add(Student s) {//数据持久化,将数据保存到数据库中
		save(s);
	}

}

  1. 创建Service的接口和实现类
    接口
package ssh_service;

import java.util.List;

import ssh_javaBean.Student;

public interface StudentService {
	public List<Student> list();
}

实现类

package ssh_serviceImp;

import java.util.List;

import ssh_DAO.studentDAO;
import ssh_javaBean.Student;
import ssh_service.StudentService;

public class StudentServiceImp implements StudentService{
	
	studentDAO studentDAO;
	
	@Override
	public List<Student> list() {
		List<Student> students = studentDAO.list();
		if(students.isEmpty()) {
			for(int i = 0; i < 5; i++) {
				Student student = new Student();
				student.setName("james" + i);
				studentDAO.add(student);
				students.add(student);
			}
			
		}
		return students;
	}

	public studentDAO getStudentDAO() {
		return studentDAO;
	}

	public void setStudentDAO(studentDAO studentDAO) {
		this.studentDAO = studentDAO;
	}
	
	
}

  1. 创建一个StudentAction类(获得数据和返回视图)
package ssh_action;

import java.util.List;
	
import ssh_javaBean.Student;
import ssh_service.StudentService;

public class StudentAction {
	StudentService studentService;
	List<Student> students;
	
	public String list() {
		students = studentService.list();
		return "listStudents.jsp";
	}

	public StudentService getStudentService() {
		return studentService;
	}

	public void setStudentService(StudentService studentService) {
		this.studentService = studentService;
	}

	public List<Student> getStudents() {
		return students;
	}

	public void setStudents(List<Student> students) {
		this.students = students;
	}

	
	
}

  1. 创建一个struts.xml(名字不要打错了)
    将action的生命周期交给spring管理
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">
 
<struts>
  <constant name="struts.objectFactory" value="spring"/>
   
  <package name="basicstruts" extends="struts-default">
   
  <action name="listStudent" class="StudentActionBean" method="list">
    <result name="listStudents.jsp">listStudents.jsp</result>
  </action>
   
</package>
</struts>
  1. 创建一个application.xml
    spring的依赖注入
<?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: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-3.0.xsd
   http://www.springframework.org/schema/aop
   http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
   http://www.springframework.org/schema/tx
   http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
   http://www.springframework.org/schema/context     
   http://www.springframework.org/schema/context/spring-context-3.0.xsd">
   
   <bean name="StudentActionBean" class="ssh_action.StudentAction">
   	<property name="StudentService" ref="StudentServiceImp">
   	</property>
   </bean>
   
   <bean name="StudentServiceImp" class="ssh_serviceImp.StudentServiceImp">
   <property name="studentDAO" ref="studentDAOImp"></property>
   </bean>
   
   <bean name="studentDAOImp" class="ssh_DAOImp.studentDAOImp">
   	<property name="sessionFactory" ref="sf"></property>
   </bean>
   
   <bean name="sf" 
   class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
   	<property name="dataSource" ref="ds"></property>
   	<property name="mappingResources">
   		<list>
   			<value>ssh_javaBean/Student.hbm.xml</value>
   		</list>
   	</property>
   	
   	<property name="hibernateProperties">
   		<value>
   			hibernate.dialect=org.hibernate.dialect.MySQLDialect
            hibernate.show_sql=true
            hbm2ddl.auto=update
   		</value>
   	</property>
   </bean>
   
   <bean name="ds"
        class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="com.mysql.jdbc.Driver" />
        <property name="url" value="jdbc:mysql://localhost:3306/student?characterEncoding=UTF-8" />
        <property name="username" value="root" />
        <property name="password" value="" />
    </bean>
   
</beans>
  1. 配置web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app>

	<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>
		<dispatcher>FORWARD</dispatcher>
		<dispatcher>REQUEST</dispatcher>
		<url-pattern>/*</url-pattern>
	</filter-mapping>

	<listener>
		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
	</listener>

</web-app>
  1. 创建listStudents.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
 pageEncoding="UTF-8" isELIgnored="false"%>
 
<%@ taglib prefix="s" uri="/struts-tags" %>
<h1>学生信息</h1>

<table>
    <tr>
        <td>id</td>
        <td>name</td>
        <td>age</td>
    </tr>
                 
<s:iterator value="students" var="s">
    <tr>
        <td>${s.id}</td>
        <td>${s.name}</td>
        <td>${s.age }</td>
    </tr>
</s:iterator>
 
</table>
  1. 创建开始文件start.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
 pageEncoding="UTF-8" isELIgnored="false"%>
 
<%@ taglib prefix="s" uri="/struts-tags" %>
 
<s:form action="listStudent">
 
  <s:submit value="查询学生列表" />
 
</s:form>
  1. 启动文件为start.jsp,效果如下:
    在这里插入图片描述点检按钮
    在这里插入图片描述说一下大致的流程
1. 访问start.jsp
2. 点击查询信息按钮
3. web.xml中的过滤器会将请求交由struts进行处理
4. struts根据listStudents创建对应的StudentActionBean,此时StudentActionBean不再由Struts自己创建,而是由Spring创建
5. spring根据applicationContext.xml创建StudentActionBean对应的对象StudentAction
6. Spring 创建StudentAction的时候 注入Service
7. 创建Service的时候注入DAO
8. Struts 调用StudentAction的list方法
9. 在list方法中调用注入好的dao,访问数据库,查询结果
10. 跳转到listStudents.jsp显示数据 

jar包的话官网都有直接可以下载的,也可以直接下载我的资源哦,ssh学着就当玩玩了,以后的开发不知道还用不用的到,有时间把SpringMVC和SpingBoot去学了,闲着也是闲着,溜了~~~

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值