SSH框架搭建与项目实践步骤

原文地址为: SSH框架搭建与项目实践步骤

一、工具和环境

MyEclipse10、Tomcat7.0、MySql5.6、JDK1.7、Struts2.0-Hibernate3.2-Spring2.0。

二、操作步骤

  1. 建立数据库:编写sql语句,建立数据库;
  2. 新建工程:打开MyEclipse,File—>New—>WebProject;
  3. 导包: 下载jar包,将所有jar包粘贴进“WebRoot/WEB-INF/lib”文件夹里;
  4. 向工程中添加Spring框架,删除重复或有冲突的jar包;
  5. 编写WebRoot/WEB-INF目录下的“web.xml”;
  6. 编写“applicationContext.xml”,以后也要边编写类边补充;
  7. 编写简化后的“hibernate.cfg.xml”文件;
  8. 编写PO类和相应的“po类名.hbm.xml”映射文件;
  9. 编写DAO接口和DAO实现类;
  10. 编写业务接口和业务类;
  11. 编写Action类和VO类;
  12. 编写“struts.xml”文件;
  13. 编写jsp页面。

注:此操作步骤遵循ssh框架的分层结构,从底层逐层往上进行建立。有时候也可以根据需要改变建立步骤,如jsp页面就可以需要的时候编写即可。

三、详细实例

此处我们以“查看所有学生信息”为例,具体步骤如下:

1、 建立数据库:编写sql语句,建立数据库studentdb,创建students表:

CREATE DATABASE studentdb;
USE studentdb;
DROP TABLE IF EXISTS students;
CREATE TABLE students(
id bigint NOT NULL AUTO_INCREMENT,
sno varchar(12) NOT NULL UNIQUE,
sname varchar(10) NOT NULL,
ssex varchar(2) NOT NULL,
sage int NOT NULL,
sdept varchar(20) NOT NULL,
PRIMARY KEY(id)
);

insert into students(sno,sname,ssex,sage,sdept) values ('201506031234','张三','男',22,'信息学院');
insert into students(sno,sname,ssex,sage,sdept) values ('201506031235','李四','女',20,'艺术学院');

2、 新建工程:打开MyEclipse,File—>New—>Web Project,Project Name命名为StudentExample—>Finish:

这里写图片描述

3、 导包:将所需的jar包粘贴进“WebRoot/WEB-INF/lib”文件夹里:(点击下载jar包

这里写图片描述

4、 向工程中添加Spring框架,删除重复或有冲突的jar包:

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

   这里写图片描述

这里写图片描述

5、 打开WebRoot/WEB-INF目录下的“web.xml”,编写如下代码:

 <?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
>

<!-- 定义WEB应用的名字 -->
<display-name>ssh</display-name>

<!-- 配置struts2 filter -->
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

<!-- 指定WEB应用的默认首页 -->
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>

<!-- 配置spring监听器和上下文参数 -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>WEB-INF/applicationContext.xml</param-value>
</context-param>
</web-app>

至此,SSH框架的搭建已经基本完成,后面主要是项目的具体实现和编码,代码仅供参考,小弟也是新手一枚,望多多指教。


6、 编写“applicationContext.xml”,以后也要边编写类边补充:(这里给出已写好后的applicationContext.xml)

 <?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"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">

<!-- 定义数据源: -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
<property name="driverClass" value="com.mysql.jdbc.Driver"/>
<property name="jdbcUrl" value="jdbc:mysql://127.0.0.1:3306/STUDENTDB"/> <!--连接数据库STUDENTDB-->
<property name="user" value="root"/>
<property name="password" value="root"/> <!-- mysql的用户名和密码 -->
<property name="maxPoolSize" value="100"></property>
<property name="minPoolSize" value="1"/>
<property name="initialPoolSize" value="1"/>
<property name="maxIdleTime" value="30"/>
</bean>
<!-- 定义Hibernate的SessionFactory: -->
<bean id="sessionfactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="hibernateProperties">
<value>
hibernate.dialect=org.hibernate.dialect.MySQL5Dialect
hibernate.hbm2ddl.auto=update
</value>
</property>
<property name="mappingResources">
<list>
<value>com/po/StudentPO.hbm.xml</value> <!-- PO类的Hibernate映射文件路径 -->
</list>
</property>
</bean>

<!-- 定义DAO: -->
<bean id="studentDao" class="com.dao.StudentDaoImpl" lazy-init="true">
<property name="sessionFactory" ref="sessionfactory"></property>
</bean>
<!-- 定义业务类: -->
<bean id="studentService" class="com.service.StudentServiceImpl">
<property name="studentDao" ref="studentDao"></property>
</bean>
<!-- 以下定义各个Action类: -->
<bean id="findStudents" class="com.action.FindStudentsAction" scope="prototype">
<property name="studentService" ref="studentService"></property>
</bean>
</beans>


7、 在src目录新建xml文件,编写简化后的“hibernate.cfg.xml”文件:(须保留,其头文件仍然有用)

 <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<hibernate-configuration>
<session-factory>
</session-factory>
</hibernate-configuration>

8、 编写“StudentPO”类和相应的“StudentPO.hbm.xml”映射文件:

StudentPO.java:

package com.po;

public class StudentPO {
private long oid;
private String sno;
private String sname;
private String ssex;
private int sage;
private String sdept;

//setter和getter方法
public long getOid() {
return oid;
}
public void setOid(long oid) {
this.oid = oid;
}
public String getSno() {
return sno;
}
public void setSno(String sno) {
this.sno = sno;
}
public String getSname() {
return sname;
}
public void setSname(String sname) {
this.sname = sname;
}
public String getSsex() {
return ssex;
}
public void setSsex(String ssex) {
this.ssex = ssex;
}
public int getSage() {
return sage;
}
public void setSage(int sage) {
this.sage = sage;
}
public String getSdept() {
return sdept;
}
public void setSdept(String sdept) {
this.sdept = sdept;
}
}

StudentPO.hbm.xml:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">


<hibernate-mapping>
<class name="com.po.StudentPO" table="STUDENTS">
<id name="oid" column="ID" type="long">
<generator class="native" />
</id>
<property name="sno" column="SNO" type="string" not-null="true" unique="true" />
<property name="sname" column="SNAME" type="string" not-null="true" />
<property name="ssex" column="SSEX" type="string" not-null="true" />
<property name="sage" column="SAGE" type="integer" not-null="true" />
<property name="sdept" column="SDEPT" type="string" not-null="true" />
</class>
</hibernate-mapping>

9、 编写DAO接口和DAO实现类:

StudentDaoInt.java:

package com.dao;

import java.util.List;
import com.po.StudentPO;

public interface StudentDaoInt {
//查询所有学生信息
public List<StudentPO> findAllStudent() throws Exception;
}

StudentDaoImpl.java:

package com.dao;

import java.util.ArrayList;
import java.util.List;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import com.po.StudentPO;

public class StudentDaoImpl extends HibernateDaoSupport implements StudentDaoInt{
//查询所有学生信息
public List<StudentPO> findAllStudent() throws Exception{
List<StudentPO> students = new ArrayList<StudentPO>();
students = this.getHibernateTemplate().find("from StudentPO");
return students;
}
}

10、 编写业务接口和业务类:

StudentServiceInt.java:

package com.service;

import java.util.List;
import com.po.StudentPO;

public interface StudentServiceInt {
//查看所有学生信息
public List<StudentPO> findAllStudents();
}

StudentServiceImpl.java:

 package com.service;

import java.util.ArrayList;
import java.util.List;
import com.dao.StudentDaoInt;
import com.po.StudentPO;

public class StudentServiceImpl implements StudentServiceInt{
private StudentDaoInt studentDao;

//采用set注入
public StudentDaoInt getStudentDao() {
return studentDao;
}
public void setStudentDao(StudentDaoInt studentDao) {
this.studentDao = studentDao;
}

//查看所有学生信息
public List<StudentPO> findAllStudents(){
List<StudentPO> students = new ArrayList<StudentPO>();
try {
students = studentDao.findAllStudent();
} catch (Exception e) {
e.printStackTrace();
}
return students;
}

}

11、编写Action类和VO类:

FindStudentsAction.java:

package com.action;

import java.util.ArrayList;
import java.util.List;
import com.opensymphony.xwork2.ActionSupport;
import com.po.StudentPO;
import com.service.StudentServiceInt;

public class FindStudentsAction extends ActionSupport{
private StudentServiceInt studentService;
List<StudentPO> students = new ArrayList<StudentPO>();

public StudentServiceInt getStudentService() {
return studentService;
}
public void setStudentService(StudentServiceInt studentService) {
this.studentService = studentService;
}
public List<StudentPO> getStudents() {
return students;
}
public void setStudents(List<StudentPO> students) {
this.students = students;
}

public String execute() throws Exception{
students = studentService.findAllStudents();
return "success";
}
}

StudentVO.java:

package com.vo;

public class StudentVO {
private String sno;
private String sname;
private String ssex;
private int sage;
private String sdept;

public String getSno() {
return sno;
}
public void setSno(String sno) {
this.sno = sno;
}
public String getSname() {
return sname;
}
public void setSname(String sname) {
this.sname = sname;
}
public String getSsex() {
return ssex;
}
public void setSsex(String ssex) {
this.ssex = ssex;
}
public int getSage() {
return sage;
}
public void setSage(int sage) {
this.sage = sage;
}
public String getSdept() {
return sdept;
}
public void setSdept(String sdept) {
this.sdept = sdept;
}
}

12、在src目录新建xml文件,编写“struts.xml”文件:

 <?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.enable.DynamicMethodInvocation" value="true" />
<constant name="struts.devMode" value="false" />
<include file="struts-default.xml" />

<package name="students" extends="struts-default">
<action name="findStudents" class="findStudents">
<result name="success">index.jsp</result>
<result name="input">index.jsp</result>
</action>

</package>
</struts>

13、编写jsp页面:

index.jsp:

 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>查看学生信息页</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
</head>

<body>
<center>
<a href="findStudents.action">点击查看学生信息</a> <br><br>
<table border="1">
<tr>
<th>序号</th>
<th>学号</th>
<th>姓名</th>
<th>性别</th>
<th>年龄</th>
<th>院系</th>
</tr>
<s:iterator value="students" status="st">
<tr>
<td><s:property value="#st.count"/></td>
<td><s:property value="sno"/></td>
<td><s:property value="sname"/></td>
<td><s:property value="ssex"/></td>
<td><s:property value="sage"/></td>
<td><s:property value="sdept"/></td>
</tr>
</s:iterator>
</table>
</center>
</body>
</html>

工程结构图如下:

这里写图片描述

最后的运行结果如下:

这里写图片描述

附:实例下载链接http://download.csdn.net/download/azrael05020/8773031


转载请注明本文地址: SSH框架搭建与项目实践步骤

猜你喜欢

转载自blog.csdn.net/CHCH998/article/details/80861159