首页 > 代码库 > SSH项目的搭建

SSH项目的搭建

SSH是指JavaEE中的三种框架:Struts2,Spring,Hibernate。

   1,准备工作

    1.先要有一个eclipse工具,运行环境是jdk1.8。tomcat8.0

       2.然后在网上下载Struts2,Spring,Hibernate的包

       技术分享

       这是我用的SSH的包和版本。

       3.解压3个jar包:

       这是Struts2解压后所需要的包的路径,D:\SSH的资源包\struts-2.3.30-apps\apps\struts2-blank\WEB-INF\lib

       技术分享

 

       ———————————————————————————————————————————————————————————————

       spring解压后的路径,D:\SSH的资源包\spring-framework-4.2.2.RELEASE\libs

       技术分享

       但并不是所有的包都是需要的,比如“javadoc.jar、sources.jar”这两个结尾的包是不需要的,不会在项目中加入它们

       除了以上的包,spring还要导入两个包:commons-logging.jar 和 struts2-spring-plugin.jar

       这两个包在Struts2的包里,路径是:D:\SSH的资源包\struts-2.3.30\apps\struts2-showcase\WEB-INF\lib

       技术分享

       ——————————————————————————————————————————————————————

       Hibernate解压后所需要的包的路径:D:\SSH的资源包\hibernate-release-5.2.2.Final\lib\required

       技术分享  

       然后还需要一个数据库连接池的包,可以在网上下载,也可以在Hibernate包里找:路径是,D:\SSH的资源包\hibernate-release-5.2.2.Final\lib\optional\c3p0

       技术分享

       以上这些包都是要用到的。下面正式开始

       2.新建项目

    1.首先打开eclipse工具新建一个web项目

       技术分享

       这个选项是动态的web项目,点击之后进行下一步的设置

       技术分享

       不要直接Finish(完成),点next(下一步)

       技术分享

       完成之后如下图

    技术分享  

       之前准备好的包放入箭头所指的文件夹里

       2.在web.xml配置Struts2和spring

       

<?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"    xmlns="http://xmlns.jcp.org/xml/ns/javaee"    xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"    id="WebApp_ID" version="3.1">

 

      这是配置的头信息,可以从Struts2包里的示例项目中拷过来

      

<filter>    <filter-name>struts2</filter-name>    <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class></filter> <filter-mapping>    <filter-name>struts2</filter-name>    <url-pattern>/*</url-pattern></filter-mapping>  

      这是以过滤器的形式引入Struts2的包。这是个版本是一个过滤器,在后面的版本会变成两个过滤器,接下来配置spring

<context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:applicationContext.xml</param-value> </context-param><listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener>

      到这里就配置好了,进行下一步

      3.要编写一个代替servlet跳转的action类。先新建一个action类,如下图

       技术分享

       名字可随意起,不过一般会起个有意义的名字,方便查找。这里我把一般要用到的包都写上去了分别是,action(跳转),dao(访问数据库),service(业务逻辑),entity(实体类),util(工具)。

       

public class IndexAction extends ActionSupport{    //声明service,但不给它创建具体的实现类的实例,    //因为:action不应该关注具体是谁来实现service    //具体service实现类是谁,我们使用spring注入进来    private IndexService is;    public viod setIs(IndexService){//这里就是用spring注入        this. is = is ;    }    public String execute1{        return: "index" ;    }     }

 

       4.编写完Action类后,我们要配置struts.xml文件,首先新建一个xml文件,如下图

       技术分享

       下面开始写配置文件

<struts>    <constant name="struts.obiectFactory" value="spring"/>    <include file="s001.xml"/>    <package name="mypck001" extends="struts-default">        <action name="Index" class="myIndexAction" method="execute1">             <result name="success">/WEB-INF/jsp/index.jsp</result>            <result name="fail">/WEB-INF/jsp/fail.jsp</result>//防止不通过action就可以访问jsp页面        </action>    </package></struts> 

        

 

 

      5.写appliCation.xml配置文件,也是在src文件夹内新建一个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"          xmlns:aop="http://www.springframework.org/schema/aop"           xmlns:context="http://www.springframework.org/schema/context"          xmlns:jee="http://www.springframework.org/schema/jee"          xmlns:tx="http://www.springframework.org/schema/tx"          xsi:schemaLocation="                http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.2.xsd              http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd              http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsd            http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-4.2.xsd              http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.2.xsd">       <!-- ①一个bean标签对应一个类,id为myIndexAction的bean就对应项目中的IndexAction类     ②id的值是随便起,但最好有意义   ③class的值是包名.类名     ④scope="prototype"是非单例,不用理解,但一定要写这句代码,记住有这回事就行 -->    <bean id="myIndexAction" class="ssh.action.IndexAction" scope="prototype">          <!-- ①name的值是要注入的变量名   ②ref是引用类的类名,name为“is”的变量引用的是myIndexService的值 -->        <property name="is" ref="myIndexService"/>    </bean>          <!-- myIndexService = new ssh.service.IndexServiceImpl()  id为myIndexService的bean对应项目中的IndexService类-->    <bean id="myIndexService" class="ssh.service.IndexServiceImpl" scope="prototype">    <!-- name为id的变量引用的是myIndexDao的值 -->        <property name="id" ref="myIndexDao"/>    </bean>        <bean id="myIndexDao" class="ssh.dao.IndexDaoImpl" scope="prototype">        <property name="c" ref="myConnection"></property>    </bean>      <!-- 下面这个bean是对应项目中的connection类,class的值是包名.类名 -->    <bean id="myConnection" class="ssh.util.MyConnectionImpl_SQLSERVER" scope="prototype">      <!-- 这里没有<property>是因为connection这个类已经是连接数据库的类,我们已经不需要通过new实现类了 -->    </bean></beans>

      6.然后写数据库的配置文件,首先把(hibernate-release-5.2.2.Final\project\hibernate-core\src\test\resources)目录下的hibernate.cfg.xml文件放在src目录下。

      技术分享

      然后在hibernate.cfg.xml文件里最顶部加上<?xml version="1.0" encoding="utf-8"?>

      接着配置hibernate.cfg.xml文件,并配置映射文件

<?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"><hibernate-configuration>    <session-factory>        <!-- hibernate配置文件 -->     <!-- 配置数据库名,以及用户名,密码 -->        <property name="connection.driver_class">com.mysql.jdbc.Driver</property>        <property name="connection.url">jdbc:mysql://localhost:3306/CardDB</property>        <property name="connection.username">root</property>        <property name="connection.password">123456</property>        <!-- 每个数据库都有1个 -->        <property name="dialect">org.hibernate.dialect.MySQL5Dialect</property>        <property name="connection.pool_size">5</property>        <property name="show_sql">true</property>        <property name="format_sql">true</property>        <property name="hbm2ddl.auto">update</property>        <!-- 配置映射文件 -->        <mapping resource="ssh/entity/BookCard.hbm.xml"/>        </session-factory></hibernate-configuration>

        

 

      7.然后在src文件夹内再新建一个BookCard.hbm.xml(实体类配置)文件并进行配置

<?xml version="1.0" encoding="UTF-8"?><hibernate-mapping xmlns="http://www.hibernate.org/xsd/hibernate-mapping">  <!-- ①class的值是包名.实体类名    ②table的值是数据库表名 -->    <class name="ssh.entity.BookCard" table="BookCard">        <!-- ①<id>标签是要作为主键的属性或字段才能用    ②column是数据库的字段名-->        <id name="cid" column="cid">            <generator class="native"></generator>        </id>        <!-- <property>标签对应于属性(数据库字段)在<property>标签中设置数据库相关的属性,比如长度、类型、是否为空、列名...等等 -->        <property name="name" type="string" length="50" column="name" not-null="true"></property>        <property name="sex" type="string" length="2" column="sex"></property>        <property name="cardDate" type="date" column="cardDate"></property>        <property name="deposit" type="double" column="deposit"></property>    </class></hibernate-mapping>

       

        8.在IndexDaoImpl实现类中构造SessionFactory       

package ssh.dao;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.hibernate.cfg.Configuration;import org.hibernate.query.Query;public class IndexDaoImpl implements IndexDao {  <!-- SessionFactory是hibernate的内置对象 -->    private SessionFactory sessionFactory;  <!-- 给SessionFactory一个set方法,便于spring注入 -->    public void setSessionFactory(SessionFactory sf) {        this.sessionFactory = sf;    }    @Override    public List<BookCard> getAllBookCard() {        <!-- sessionFactory这个实例可以自己按常规的hibernate传统写法创建也可以交给spring去托管sessionFactory = new Configuration().configure().buildSessionFactory(); -->        Session session = sessionFactory.openSession();       }}

        

      以上就是一个简易的SSH框架项目的搭建

 

       

SSH项目的搭建