搭建SSH三大框架WEB项目过程(Struts2.3+Hibernate4.3+Spring4.1)

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


项目结构如图:

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

daoDAO数据库操作

poPOJO类,也就是持久化类

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;  
      
    /** 
     * 获取<pre name="code" class="java">import java.util.List;  
  
import com.sgdata.po.Student;  
  
public interface StudentService {  
  
    /** 
     * 获取所有学生信息 
     * @return 
     */  
    public List<Student> getAllStudentInfo();  
    }  

所有信息 */ 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>  

实现数据获取
转载:http://blog.csdn.net/u014427391/article/details/50621111
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值