搭建SSH三大框架WEB專案過程(Struts2.3+Hibernate4.3+Spring4.1)
我以我做的一個例子來說明框架的搭建過程 ^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^
相關文章
- vue每時每刻-專案介紹-搭建過程Vue
- 阿里雲伺服器部署web專案全過程阿里伺服器Web
- 使用SpringBoot搭建Web專案Spring BootWeb
- MVVM框架的搭建(二)——專案搭建MVVM框架
- JavaGuns開發基礎框架搭建過程Java框架
- 專案實施過程
- Flutter專案實戰(1):通用專案框架搭建Flutter框架
- Day73 SSM專案 搭建框架SSM框架
- 前端專案框架搭建-day02前端框架
- iris-go 框架構建登陸 API 專案開發過程Go框架架構API
- Django Web框架/Python框架-李強強-專題視訊課程DjangoWeb框架Python
- Spring Boot入門-快速搭建web專案Spring BootWeb
- 透過 OKR 進行專案過程管理OKR
- Laravel 專案深度優化過程Laravel優化
- 2.1it專案的管理過程
- InterlliJ IDEA搭建一個完整的ssh框架Idea框架
- 手把手教你搭建SSH框架(Eclipse版)框架Eclipse
- django實戰專案課程平臺搭建Django
- Android專案框架搭建:mvp+retrofit+rxjava+rxbusAndroid框架MVPRxJava
- Vue+ Element Ui 搭建前端專案框架(二)VueUI前端框架
- Vue+ Element Ui 搭建前端專案框架(三)VueUI前端框架
- Vue+ Element Ui 搭建前端專案框架(一)VueUI前端框架
- 一個wpf專案的搭建prism框架mvvm框架MVVM
- 專案管理的 五大過程專案管理
- Web請求過程Web
- 專案 Laravel 框架 5.1 升級到 5.5 過程中的一些問題Laravel框架
- Python 中的 web 常見框架(Django 專案1)PythonWeb框架Django
- IntelliJ IDEA配置與搭建web專案入門使用IntelliJIdeaWeb
- 部落格搭建過程
- 基於webpack4搭建的react專案框架WebReact框架
- 前端專案框架搭建隨筆---Webpack踩坑記前端框架Web
- TT建站之路--vue專案基礎框架搭建【01】Vue框架
- ssm專案的搭建:使用到框架 spring springmvc mybatisSSM框架SpringMVCMyBatis
- 資訊系統專案管理系列之三:專案管理過程專案管理
- 【原創】專案過程和專案管理有什麼不同呢?專案管理
- 基於.NetCore開發部落格專案 StarBlog - (5) 開始搭建Web專案NetCoreWeb
- Flutter專案整合mqtt的過程記錄FlutterMQQT
- 專案過程中要提高會議效率
- 專案需求管理的五大過程