SSH框架系列之框架整合教程
我以我做的一个例子来说明框架的搭建过程 ^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
- 点赞
- 收藏
- 关注作者
评论(0)