zoukankan      html  css  js  c++  java
  • 搭建SSH

    搭建SSH详细步骤及相关说明

     

    因为手里已有相关jar,为方便我搭建的是:Struts2.0+Hibernate3.3+Spring3.0,数据库:MySQL

    如果想搭建最新的,在官网上下载最新jar即可。

    这里会对比MyEclipse自动配置和手动配置,直接说搭建步骤,过程中说明一下一些重要的jar的作用。

    1、新建web项目SSH

    2、Struts2搭建http://struts.apache.org/download

    通过MyEclipse搭建:

    选择需要用到的jar,

    finish后,会生成struts.xml,以及Struts 2.1 libraries,展开Struts 2.1 libraries,我们可以看到导入的jar的路径:

    这样的路径是绝对的,以后项目迁移环境了,这些jar也就不能用了,项目也就不能正常运行了。我们希望jar是跟着项目目录走的,所以将下载好的struts2的jar(下载struts-*-all.zip解压后,struts/lib目录下是struts所有的相关的jar包)放到WEB-INF/lib下,并右击Struts2.1 Libraries-->Build Path-->Remove from Build Path,移除自动导入的jar。

    几个主要jar包说明:

    commons-logging-1.0.4.jar        日志组件

    freemarker-2.3.13.jar                一个基于模板生成文本输出的通用工具

    ognl-2.6.11.jar         对象图导航语言(jar包库)

    strut2-core-2.1.6.jar                 Struts2核心jar包

    xwork-core-2.1.2.jar                 xwork核心包

    commons-io-1.2.3.jar                io包

    commons-fileupload-1.0.4.jar     文件上传组件

    javassist-3.7.ga.ja                    扩展java类和实现

    commons-lang-2.5.jar               基础工具包,封装一些常用的基础操作

    3、Spring搭建(http://www.springsource.com/download/community)

    通过MyEclipse搭建:

    finish后,会生成applicationContext.xml和Spring 3.0.5 Libraries,下载Spring所需jar(spring-framework-**.zip解压后,文件夹下的dist目录下所有jar),放入WEB-INF/libs下,右击Spring 3.0.5 Libraries-->Build Path-->Remove from Build Path,移除自动导入的jar。

    几个主要jar包说明:

    struts2-spring-plugin-2.0.14.jar                Struts2+Spring整合包

    spring-core-3.0.5.jar                                Spring核心工具包

    spring-context-3.0.5.jar                           为Spring提供核心扩展

    spring-context-support-3.0.5.jar               为Spring提供核心扩展

    spring-beans-3.0.5.jar                              管理beans的工具

    spring-expression-3.0.5.jar                       表达式语言

    spring-web-3.0.5.jar                                 Web应用开发包

    spring-aspects-3.0.5.jar                            提供对AspectJ的支持,以便可以方便的将面向方面的功能集成进IDE中

    4、建立数据源

    我这里用的数据库是MySQL,首先安装MySQL,安装MySQL可视化的管理工具,我这里用的是Navicat Premium。在Navicat Premium创建数据库sshd,新建user表:

    打开MyEclipse Database Explorer窗口,在空白处右击new...新建数据源:需要添加mysql连接数据库的jar:mysql-connector-java.jar

    finish后双击连接新建的数据源MySQL。

    5、Hibernate搭建http://sourceforge.net/projects/hibernate/files/hibernate3/

    通过MyEclipse搭建:

    Spring与Hibernate有两种方式整合,一种是不要hibernate.cfg.xml这个文件,一个是要这个文件,这里只讲解有这个文件的情况。

    finish后,会生成hibernate.cfg.xml、HibernateSessionFactory.java和Hibernate 3.3.2 Libraries,下载Hibernate所需jar放到WEB-INF/lib目录下,右击Hibernate 3.3.2 Libraries-->Build Path-->Remove from Build Path,移除自动导入的jar。

    hibernate3.jar                                核心类库 

    antlr-2.7.6.jar            代码扫描器,用来翻译HQL语言

    commons-collections-3.2.jar    Apache Commons包中的一个,包含了一些Apache开发的集合类,功能比java.util.*强大

    dom4j-1.6.1.jar           一个java的XML API,类似于jdom,用来读写XML文件的

    javassist-3.9.0.GA.jar       Javassist字节码解释器

    jta-1.1.jar              标准的JTA API

    slf4j-api-1.5.8.jar

    lf4j-nop-1.5.2.jar

    6、配置S2SH

    在web.xml中配置struts2、spring

    复制代码
    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
      <display-name>SSH</display-name>
      <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
      </welcome-file-list>
      
        <!--struts Framework start  -->
      <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>
      <!--struts Framework end  -->
      
      <!--Spring Framework start  -->
      <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
      </listener>
      <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:applicationContext.xml</param-value>
      </context-param>
      <!--Spring Framework end  -->
    </web-app>
    复制代码

     将数据库中的表映射到项目中:

    在项目src下新建包entity、dao,用来存放映射出来的文件。在MyEclipse Database Explorer窗口,双击“MySQL”连接连接数据源,选择需要映射的表。

    同时你也可以配置多表之间一对一、一对多的关系。

    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">
    <!-- Generated by MyEclipse Hibernate Tools.                   -->
    <hibernate-configuration>
    
        <session-factory>
            <!-- Database connection settings -->
            <!-- SQL dialect -->
            <property name="dialect">org.hibernate.dialect.MySQLDialect</property>
            <property name="connection.url">jdbc:mysql://localhost:3306/sshdb</property>
            <property name="connection.username">root</property>
            <property name="connection.password">1234</property>
            <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
            <property name="myeclipse.connection.profile">MySQL</property>
            
            <!-- Enable Hibernate's automatic session context management -->
            <property name="current_session_context_class">thread</property>
            
            <!-- transaction自动提交 ,配置Quartz-->
            <property name="connection.autocommit">true</property> 
    
            <!-- Echo all executed SQL to stdout -->
            <property name="show_sql">true</property>
            <property name="format_sql">true</property>
            
            <!-- 配置映射文件 -->
            <mapping resource="joanna/yan/entity/User.hbm.xml" />
        </session-factory>
    
    </hibernate-configuration>
    复制代码

    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"
        xmlns:tx="http://www.springframework.org/schema/tx"    
        xmlns:aop="http://www.springframework.org/schema/aop"
        xsi:schemaLocation="
            http://www.springframework.org/schema/beans 
            http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
            http://www.springframework.org/schema/tx 
            http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
            http://www.springframework.org/schema/aop
            http://www.springframework.org/schema/aop/spring-aop-3.0.xsd">
        
        <!-- 配置SessionFactory,由Spring容器来管理Hibernate -->
        <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
            <property name="configLocation" value="classpath:hibernate.cfg.xml"></property>
        </bean>
        <!-- 配置OpenSessionInView拦截器 -->
        <bean id="OSIVInterceptor" class="org.springframework.orm.hibernate3.support.OpenSessionInViewInterceptor">
            <property name="sessionFactory" ref="sessionFactory"></property>
        </bean>
        <!-- 配置事务管理器 -->
        <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
            <property name="sessionFactory" ref="sessionFactory"/>
        </bean>
        <!-- 将事务管理器通知化 -->
        <tx:advice transaction-manager="transactionManager" id="txAdvice">
            <tx:attributes>
                <tx:method name="query" isolation="DEFAULT" propagation="REQUIRED"/>
                <tx:method name="find*" isolation="READ_COMMITTED" propagation="REQUIRED"/>
                <tx:method name="update*" isolation="SERIALIZABLE" />
                <tx:method name="save*" isolation="SERIALIZABLE"/>
                <tx:method name="delete*" isolation="SERIALIZABLE"/>
                <tx:method name="*" isolation="READ_COMMITTED"/>
            </tx:attributes>
        </tx:advice>
        <!-- 织入事务管理通知 -->
        <aop:config proxy-target-class="true">
            <aop:pointcut expression="execution(* joanna.yan.action.*.*(..))" id="txcut"/>
            <aop:advisor advice-ref="txAdvice" pointcut-ref="txcut"/>
        </aop:config>
        
        <!-- 配置dao -->
        <bean id="UserDAO" class="joanna.yan.dao.UserDAO">
            <property name="sessionFactory">
                <ref bean="sessionFactory" />
            </property>
        </bean>
        
        <!-- 配置Action -->
        <!--但是现在有个冲突struts中的一个类中可以有多个方法,也就是说有多个action,而spring中却只能是单个的,
        这时就有冲突,需要在spring的配置文件中加上scope="prototype"这句话,spring的bean默认是单例的,
        也就是说只能new一个实例,但是当用struts的时候,需要将scope配置成proprtype的,它表示每个访问就new一个实例。  -->
        <bean id="UserAction" class="joanna.yan.action.UserAction" scope="prototype">
            <property name="userDAO" ref="UserDAO"></property>
        </bean>
    </beans>
    复制代码

    struts.xml:(因为先前手动导入的Struts jar是2.0的,这样XML中dtd声明改成2.0)

    复制代码
    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.0.dtd">
    <struts>
        <constant name="struts.devMode" value="true"></constant>
        <constant name="struts.action.extension" value="do,action,*,"></constant>
        
        <package name="UserPackage" extends="struts-default">
        <!--SysUserAction为applicationContext.xml中配置的bean的id  
        struts.xml中的class不再是action类的全路径地址,而是spring配置文件中的bean的id的名字,两者必须一致。
           而spring的配置文件中的class就是原先在struts.xml中配置的class的路径-->
            <action name="user" class="UserAction" >
                <result name="success">/index.jsp</result>
                <result name="default">/index.jsp</result>
            </action>
        </package>
    
    </struts>    
    复制代码

    User.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">
    <!-- 
        Mapping file autogenerated by MyEclipse Persistence Tools
    -->
    <hibernate-mapping>
        <class name="joanna.yan.entity.User" table="user" catalog="sshdb">
            <id name="id" type="java.lang.Integer">
                <column name="id" />
                <generator class="identity" /><!--主键生成策略  -->
            </id>
            <property name="username" type="java.lang.String">
                <column name="username" length="20" not-null="true" />
            </property>
            <property name="age" type="java.lang.Integer">
                <column name="age" not-null="true" />
            </property>
        </class>
    </hibernate-mapping>
    复制代码

    7、测试

    UserAction.java

    复制代码
    package joanna.yan.action;
    
    import java.util.List;
    import joanna.yan.dao.UserDAO;
    import joanna.yan.entity.User;
    import com.opensymphony.xwork2.ActionSupport;
    
    public class UserAction extends ActionSupport{
        private User user;
        private UserDAO userDAO;
        public User getUser() {
            return user;
        }
        public void setUser(User user) {
            this.user = user;
        }
        public UserDAO getUserDAO() {
            return userDAO;
        }
        public void setUserDAO(UserDAO userDAO) {
            this.userDAO = userDAO;
        }
        @Override
        public String execute() throws Exception {
            List<User> list=userDAO.findAll();
            for (User user : list) {
                System.out.println(user);
            }
            return "success";
        }
    }
    复制代码

    测试结果:

    源码:http://pan.baidu.com/s/1dEznL1v    提取码:czsq

  • 相关阅读:
    【用程序思维学习英语】
    【python3】修饰器简单理解
    【FLASK】发送QQ邮件
    【FLASK】数据库迁移
    【python3】with的用法
    【flask】工厂函数和蓝本的作用
    使用Python中的xltpl模块填充excel表格模板文件
    Python添加excel表格的批注
    在原有表格基础上面进行添加内容修改格式等操作
    Python操作excel表格库的介绍
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/5062010.html
Copyright © 2011-2022 走看看