SSH框架系列之框架整合教程

举报
yd_273762914 发表于 2020/12/03 01:13:22 2020/12/03
3.3k+ 0 0
【摘要】     我以我做的一个例子来说明框架的搭建过程 ^V^!   项目结构如图: action:存放Action类,也就是控制类 dao:DAO数据库操作 po:POJO类,也就是持久化类 service:存放Service类   dao类在Service类里调用,然后Service类再到action类里调用     搭建过程 我们先要准备jar价...

我以我做的一个例子来说明框架的搭建过程 ^V^!

项目结构如图:

action:存放Action类,也就是控制类

dao:DAO数据库操作

po:POJO类,也就是持久化类

service:存放Service类

dao类在Service类里调用,然后Service类再到action类里调用

搭建过程

我们先要准备jar价包,这个可以去官网下载

下面是我准备的开发jar价包

然后我为了提高安全性,我将所有的JSP页面放在了WEB-INF下面

然后配置SSH的配置文件

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:p="http://www.springframework.org/schema/p"
     	xmlns:context="http://www.springframework.org/schema/context"
     	xmlns:tx="http://www.springframework.org/schema/tx"
     	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.1.xsd
       http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.1.xsd
       http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.1.xsd">
      <!-- Spring框架配置文件 -->
     	<!-- 属性注入配置 -->
     	<context:annotation-config/>
     	<!-- 实现数据库配置 -->
     	<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
     		<property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
     		<property name="url" value="jdbc:mysql://localhost:3306/db_sgdata?useUnicode=true&characterEncoding=UTF-8"></property>
     		<property name="username" value="root"></property>
     		<property name="password" value="111"></property>
     		<property name="maxActive" value="100"></property>
     		<property name="maxIdle" value="60"></property>
     		<property name="maxWait" value="10000"></property>
     	</bean>
     	<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
     		<property name="dataSource" ref="dataSource"></property>
     		<property name="configLocation" value="classpath:hibernate.cfg.xml"></property>
     	</bean>
     	<bean id="hibernateTemplate" class="org.springframework.orm.hibernate4.HibernateTemplate">
     		<property name="sessionFactory" ref="sessionFactory"></property>
     	</bean>
     	<bean id="txManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
     		<property name="sessionFactory" ref="sessionFactory"></property>
     	</bean>
     	<!-- 开启Spring框架的事务管理 ,开启之后@Transaction就可以用了 -->
     	<tx:annotation-driven transaction-manager="txManager"/>
     	<!-- 实现教师信息管理需要配置的Bean -->
     	<bean id="teacherDao" class="com.sgdata.dao.impl.TeacherDaoImpl">
     		<property name="sessionFactory" ref="sessionFactory"></property>
     	</bean>
     	<bean id="teacherService" class="com.sgdata.service.impl.TeacherServiceBean">
     	</bean>
     		<!--scope默认采用的是单例模式,scope="prototype" 可以保证 当有请求的时候都创建一个Action对象,保证Struts的Action线程安全 -->
     	<bean id="teacherAction" class="com.sgdata.action.TeacherInfoManagerAction" scope="prototype"></bean>
     	<bean id="loginCheckAction" class="com.sgdata.action.LoginCheckAction" scope="prototype"></bean>
     	<!-- 实现学生信息管理需要配置的Bean -->
     	<bean id="studentDao" class="com.sgdata.dao.impl.StudentDaoImpl">
     		<property name="sessionFactory" ref="sessionFactory"></property>
     	</bean>
     	<bean id="studentService" class="com.sgdata.service.impl.StudentServiceBean"></bean>
     	<bean id="studentAction" class="com.sgdata.action.StudentInfoManagerAction" scope="prototype"></bean>
     	<!-- 实现课程信息管理需要配置的Bean -->
     	<bean id="courseDao" class="com.sgdata.dao.impl.CourseDaoImpl">
     		<property name="sessionFactory" ref="sessionFactory"></property>
     	</bean>
     	<bean id="courseService" class="com.sgdata.service.impl.CourseServiceBean"></bean>
     	<bean id="courseAction" class="com.sgdata.action.CourseInfoManagerAction" scope="prototype"></bean>
     	<!-- 实现比赛信息管理需要配置的Bean -->
     	<bean id="matchDao" class="com.sgdata.dao.impl.MatchDaoImpl">
     		<property name="sessionFactory" ref="sessionFactory"></property>
     	</bean>
     	<bean id="matchService" class="com.sgdata.service.impl.MatchServiceBean"></bean>
     	<bean id="matchAction" class="com.sgdata.action.MatchInfoManagerAction" scope="prototype"></bean>
      </beans>
  
 

Struts2的配置文件代码:


      <?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">
      <!-- Struts2框架配置文件 -->
      <struts>
     	<!-- 配置struts2可以受理的请求扩展名 -->
     	<constant name="struts.action.extension" value="action,do,"></constant>
      <!-- struts2的package对应于项目的模块 -->
      <package name="action" extends="struts-default" namespace="/">
      <!-- 配置action -->
      <!-- 登录验证的Action -->
      <action name="loginAction" class="loginCheckAction">
      <result name="success">/WEB-INF/page/admin/index.jsp</result>
      <result name="input">/WEB-INF/page/admin/login.jsp</result>
      </action>
      <!--
       SSH项目WEB-INF下面的页面跳转要通过Servlet来实现,这样确实是麻烦了点,
       不过安全性就提高上去了,因为放在WEB-INF下面的JSP页面,是不可以直接访问的
       -->
      <action name="indexAction">
      <result>/WEB-INF/page/admin/index.jsp</result>
      </action>
      <action name="gotoLoginAction">
      <result>/WEB-INF/page/admin/login.jsp</result>
      </action>
      <!-- 学生信息管理的Action -->
      <action name="getAllStuInfoAction" class="studentAction" method="getAllInfo">
      <result name="success">/WEB-INF/page/admin/student/studentInfoManager.jsp</result>
      </action>
      <action name="getStuInfoByIdAction" class="studentAction" method="getInfoById">
      <result name="success">/WEB-INF/page/admin/student/studentInfoDetail.jsp</result>
      </action>
      <action name="getLearnScoresAction" class="studentAction" method="getLearnScoreById">
      <result name="success">/WEB-INF/page/admin/student/studentLearnScores.jsp</result>
      </action>
      <action name="getMatchScoresAction" class="studentAction" method="getMatchScoreById">
      <result name="success">/WEB-INF/page/admin/student/studentMatchScores.jsp</result>
      </action>
      <!-- 教师信息管理的Action -->
      <action name="getAllTeaInfoAction" class="teacherAction" method="getAllInfo">
      <result name="success">/WEB-INF/page/admin/teacher/teacherInfoManager.jsp</result>
      </action>
      <action name="getTeachingInfoAction" class="teacherAction" method="getTeachingInfoById">
      <result name="success">/WEB-INF/page/admin/teacher/teacherTeaching.jsp</result>
      </action>
      <action name="getMatchGuideInfoAction" class="teacherAction" method="getMatchGuideInfoById">
      <result name="success">/WEB-INF/page/admin/teacher/teacherMatchGuide.jsp</result>
      </action>
      <action name="getCourseStudentsInfoAction" class="teacherAction" method="getCourseStudentsInfoById">
      <result name="success">/WEB-INF/page/admin/teacher/teacherCourseStusInfo.jsp</result>
      </action>
      <action name="getMatchStudentsInfoAction" class="teacherAction" method="getMatchStudentsInfoById">
      <result name="success">/WEB-INF/page/admin/teacher/teacherMatchStusInfo.jsp</result>
      </action>
      <!-- 课程管理的Action -->
      <action name="getAllCourseInfoAction" class="courseAction" method="getAllInfo">
      <result name="success">/WEB-INF/page/admin/course/courseManager.jsp</result>
      </action>
      <action name="getTeachersInfoAction" class="courseAction" method="getTeachersInfoById">
      <result name="success">/WEB-INF/page/admin/course/courseTeachersInfo.jsp</result>
      </action>
      <!-- 比赛信息管理的Action -->
      <action name="getAllMatchInfoAction" class="matchAction" method="getAllInfo">
      <result name="success">/WEB-INF/page/admin/match/matchInfoManager.jsp</result>
      </action>
      <action name="getStudentsInfoAction" class="matchAction" method="getStudentsInfoById">
      <result name="success">/WEB-INF/page/admin/match/matchStudentsInfo.jsp</result>
      </action>
      </package>
      </struts>
  
 

Hibernate的配置文件代码:


      <?xml version='1.0' encoding='UTF-8'?>
      <!DOCTYPE hibernate-configuration PUBLIC
      "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
      "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
      <!-- Generated by MyEclipse Hibernate Tools. -->
      <hibernate-configuration>
      <!-- Hibernate框架配置文件 -->
      <session-factory>
     	<!-- 配置sql语句可以打印在控制台 -->
     	<property name="show_sql">true</property>
     	<!--创建SessionFactory对象时自动创建数据表 -->
     	<property name="hbm2ddl.auto">update</property>
     	<!-- 配置映射文件 -->
     	<mapping resource="com/sgdata/po/Course.hbm.xml"/>
     	<mapping resource="com/sgdata/po/Deptment.hbm.xml"/>
     	<mapping resource="com/sgdata/po/Match.hbm.xml"/>
     	<mapping resource="com/sgdata/po/Student.hbm.xml"/>
     	<mapping resource="com/sgdata/po/StudentCourse.hbm.xml"/>
     	<mapping resource="com/sgdata/po/StudentMatch.hbm.xml"/>
     	<mapping resource="com/sgdata/po/Teacher.hbm.xml"/>
     	<mapping resource="com/sgdata/po/TeacherCourse.hbm.xml"/>
     	<mapping resource="com/sgdata/po/TeacherMatch.hbm.xml"/>
      </session-factory>
      </hibernate-configuration>
  
 

前面那些配置文件有包含其它的,这个要根据自己的项目需要去改的^V^

下面以学生信息管理的实现过程进行说明,只说明这个例子哈!

创建POJO实体类:


      import java.util.Date;
      import java.util.HashSet;
      import java.util.Set;
      /**
       *
       * 学生信息的实体类
       * @author Nicky
       *
       */
      public class Student {
     	/*
       * 学号
       */
     	private String stuID;
     	/*
       * 班级
       */
     	private String stuName;
     	/*
       * 性别
       */
     	private String stuSex;
     	/*
       * 出生年日
       */
     	private Date stuBirth;
     	/*
       * 电话
       */
     	private String stuTel;
     	/*
       * 邮箱
       */
     	private String stuEmail;
     	/*
       * 专业
       */
     	private String dept;
     	/*
       * 身份证
       */
     	private String stuIDCard;
     	/*
       * 班级
       */
     	private String className;
     	/*
       * 登录密码
       */
     	private String password;
     	/*
       * 是否是管理员的标志 1表示是,0表示不是
       */
     	private String isManager;
     	public String getStuID() {
     		return stuID;
      	}
     	public void setStuID(String stuID) {
     		this.stuID = stuID;
      	}
     	public String getStuName() {
     		return stuName;
      	}
     	public void setStuName(String stuName) {
     		this.stuName = stuName;
      	}
     	public String getStuSex() {
     		return stuSex;
      	}
     	public void setStuSex(String stuSex) {
     		this.stuSex = stuSex;
      	}
     	public Date getStuBirth() {
     		return stuBirth;
      	}
     	public void setStuBirth(Date stuBirth) {
     		this.stuBirth = stuBirth;
      	}
     	public String getStuTel() {
     		return stuTel;
      	}
     	public void setStuTel(String stuTel) {
     		this.stuTel = stuTel;
      	}
     	public String getStuEmail() {
     		return stuEmail;
      	}
     	public void setStuEmail(String stuEmail) {
     		this.stuEmail = stuEmail;
      	}
     	public String getDept() {
     		return dept;
      	}
     	public void setDept(String dept) {
     		this.dept = dept;
      	}
     	public String getStuIDCard() {
     		return stuIDCard;
      	}
     	public void setStuIDCard(String stuIDCard) {
     		this.stuIDCard = stuIDCard;
      	}
     	public String getClassName() {
     		return className;
      	}
     	public void setClassName(String className) {
     		this.className = className;
      	}
     	public String getPassword() {
     		return password;
      	}
     	public void setPassword(String password) {
     		this.password = password;
      	}
     	public String getIsManager() {
     		return isManager;
      	}
     	public void setIsManager(String isManager) {
     		this.isManager = isManager;
      	}
      }
  
 

配置Student.hbm.xml文件


      <?xml version="1.0" encoding="UTF-8"?>
      <!DOCTYPE hibernate-mapping PUBLIC
      "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
      "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
      <hibernate-mapping package="com.sgdata.po">
     	<class name="Student" table="tb_students">
     		<id name="stuID" column="stuID" type="java.lang.String" length="11">
     			<generator class="assigned"></generator>
     		</id>
     		<property name="stuName" type="java.lang.String" length="30" not-null="true"></property>
     		<property name="stuSex" type="java.lang.String" length="2" not-null="true"></property>
     		<property name="stuBirth" type="java.util.Date" not-null="true"></property>
     		<property name="stuTel" type="java.lang.String" length="20" not-null="true"></property>
     		<property name="stuEmail" type="java.lang.String" length="20" not-null="true"></property>
     		<property name="dept" type="java.lang.String" length="10" not-null="true"></property>
     		<property name="stuIDCard" type="java.lang.String" length="20" not-null="true"></property>
     		<property name="className" type="java.lang.String" length="20" not-null="true"></property>
     		<property name="password" type="java.lang.String" length="10" not-null="true"></property>
     		<property name="isManager" type="java.lang.String" length="1" not-null="false"></property>
     	</class>
      </hibernate-mapping>
  
 


DAO实现


      import java.util.List;
      import com.sgdata.po.Student;
      public interface StudentDao {
     	/**
       * 获取所有学生信息
       * @return
       */
     	public List<Student> getAllStudentInfo();
      }
  
 

      public class StudentDaoImpl extends HibernateDaoSupport implements StudentDao {
     	@Resource HibernateTemplate ht;
     	/**
       * 获取所有信息
       */
     	public List<Student> getAllStudentInfo() {
      		String sql = "from Student";
      		List<Student> students = (List<Student>) ht.find(sql);
     		return students;
      	}
      }
  
 

Service实现:


      import java.util.List;
      import com.sgdata.po.Student;
      public interface StudentService {
     	/**
       * 获取所有学生信息
       * @return
       */
     	public List<Student> getAllStudentInfo();
      	}
  
 

      import java.util.List;
      import javax.annotation.Resource;
      import org.springframework.transaction.annotation.Transactional;
      import com.sgdata.dao.StudentDao;
      import com.sgdata.po.Student;
      import com.sgdata.service.StudentService;
      @Transactional(readOnly=false)
      public class StudentServiceBean implements StudentService {
     	@Resource private StudentDao studentDao;
     	public List<Student> getAllStudentInfo() {
     		return studentDao.getAllStudentInfo();
      	}
      }
  
 

Action实现:


      /**
       * 实现学生信息管理的Action类
       *
       */
      public class StudentInfoManagerAction extends ActionSupport {
     	/**
       *
       */
     	private static final long serialVersionUID = 1L;
     	@Resource private StudentService studentService;
     	//页数
     	int pagenum = 0;
     	//学号
     	private String stuID;
     	//姓名
     	private String stuName;
     	//性别
     	private String stuSex;
     	//出生年月
     	private String stuBirth;
     	//电话
     	private String stuTel;
     	//邮箱
     	private String stuEmial;
     	//系部
     	private String dept;
     	//身份证
     	private String stuIDCard;
     	//班级
     	private String className;
     	//密码
     	private String password;
     	/**
       * 学生对象来储存学生信息
       */
     	private Student student;
     	/**
       * 学生信息的列表
       */
     	private List<Student> studentsInfo;
     	/**
       * 学生学习成绩的信息列表
       */
     	private List learnScores;
     	/**
       * 学生比赛成绩的信息列表
       */
     	private List matchScores;
     	public StudentInfoManagerAction(){
     		//student = new Student();
      	}
     	public Student getStudent() {
     		return student;
      	}
     	public void setStudent(Student student) {
     		this.student = student;
      	}
     	public void setStudentsInfo(List<Student> studentsInfo){
     		this.studentsInfo = studentsInfo;
      	}
     	public List<Student> getStudentsInfo() {
     		return studentsInfo;
      	}
     	public List getLearnScores() {
     		return learnScores;
      	}
     	public void setLearnScores(List learnScores) {
     		this.learnScores = learnScores;
      	}
     	public List getMatchScores() {
     		return matchScores;
      	}
     	public void setMatchScores(List matchScores) {
     		this.matchScores = matchScores;
      	}
     	public int getPagenum() {
     		return pagenum;
      	}
     	public void setPagenum(int pagenum) {
     		this.pagenum = pagenum;
      	}
     	public String getStuID() {
     		return stuID;
      	}
     	public void setStuID(String stuID) {
     		this.stuID = stuID;
      	}
     	public String getStuName() {
     		return stuName;
      	}
     	public void setStuName(String stuName) {
     		this.stuName = stuName;
      	}
     	public String getStuSex() {
     		return stuSex;
      	}
     	public void setStuSex(String stuSex) {
     		this.stuSex = stuSex;
      	}
     	public String getStuBirth() {
     		return stuBirth;
      	}
     	public void setStuBirth(String stuBirth) {
     		this.stuBirth = stuBirth;
      	}
     	public String getStuTel() {
     		return stuTel;
      	}
     	public void setStuTel(String stuTel) {
     		this.stuTel = stuTel;
      	}
     	public String getStuEmial() {
     		return stuEmial;
      	}
     	public void setStuEmial(String stuEmial) {
     		this.stuEmial = stuEmial;
      	}
     	public String getDept() {
     		return dept;
      	}
     	public void setDept(String dept) {
     		this.dept = dept;
      	}
     	public String getStuIDCard() {
     		return stuIDCard;
      	}
     	public void setStuIDCard(String stuIDCard) {
     		this.stuIDCard = stuIDCard;
      	}
     	public String getClassName() {
     		return className;
      	}
     	public void setClassName(String className) {
     		this.className = className;
      	}
     	public String getPassword() {
     		return password;
      	}
     	public void setPassword(String password) {
     		this.password = password;
      	}
     	/**
       * 获取学生的基本信息
       * @return
       * @throws Exception
       */
     	//@Override
     	public String getAllInfo() throws Exception {
      		studentsInfo = studentService.getAllStudentInfo();
     		return SUCCESS;
      	}
      }
  
 

然后就可以在JSP页面引入

<%@ taglib uri="/struts-tags" prefix="s" %>

然后获取数据了


      <table class="table table-hover">
      <tr>
      <th width="120">学号</th>
      <th width="120">姓名</th>
      <th width="120">性别</th>
      <th width="120">班级</th>
      <th width="120">系部</th>
      <th width="100">出生年月</th>
      <th width="100">操作</th>
      </tr>
      <s:iterator value="studentsInfo" id="ssif" >
      <tr>
      <td><s:property value="#ssif.stuID" /></td>
      <td><s:property value="#ssif.stuName" /></td>
      <td><s:property value="#ssif.stuSex" /></td>
      <td><s:property value="#ssif.className" /></td>
      <td><s:property value="#ssif.dept" /></td>
      <td><s:property value="#ssif.stuBirth" /></td>
      <td>
      <a class="button border-blue button-little" href="getStuInfoByIdAction?stuID=<s:property value='#ssif.stuID'/>">详情</a>
      <a class="button border-yellow button-little" href="getLearnScoresAction?stuID=<s:property value='#ssif.stuID' />" >学习</a>
      <a class="button border-green button-little" href="getMatchScoresAction?stuID=<s:property value='#ssif.stuID' />">比赛</a>
      </td>
      </tr>
      </s:iterator>
      </table>
  
 

实现数据获取


这是我结合Bootstrap和SSH做的,结合例子来说明实现过程,希望可以帮到学习的人,有疑惑请留言哈!^V^



文章来源: smilenicky.blog.csdn.net,作者:smileNicky,版权归原作者所有,如需转载,请联系作者。

原文链接:smilenicky.blog.csdn.net/article/details/50621111

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

作者其他文章

评论(0

抱歉,系统识别当前为高风险访问,暂不支持该操作

    全部回复

    上滑加载中

    设置昵称

    在此一键设置昵称,即可参与社区互动!

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。