zoukankan      html  css  js  c++  java
  • 图解SSH框架配置步骤

    转自http://ajava.org/course/open/12486.html

    核心提示:现在开发的一个项目使用S2SH框架,配置环境用了一两天,现在把当时配置环境时写的文档整理下发出来,也算加强点记忆。 1 开发环境 MyEclipse5.5 JDK 1.6 Java EE 5.0 Tomcat6.0 Struts2.1.6 Spring2.5.6 Hibernate3.3.1 2 为 ssh 做好准备 2.1 下载包 Struts2

        现在开发的一个项目使用S2SH框架,配置环境用了一两天,现在把当时配置环境时写的文档整理下发出来,也算加强点记忆。

    1 开发环境

    Ø MyEclipse5.5

    Ø JDK 1.6

    Ø Java EE 5.0

    Ø Tomcat6.0

    Ø Struts2.1.6

    Ø Spring2.5.6

    Ø Hibernate3.3.1

    2 为ssh做好准备

    2.1下载包

    Ø Struts2.1.6包下载:

    http://struts.apache.org/download.cgi#struts216

    Ø Hibernate3.3包下载:

    https://www.hibernate.org/6.html

    Ø Spring2.5下载:

    http://www.springsource.org/download

    2.2搭建开发环境

    打开MyEclipse,新建一个web project,如图:

    注意:J2ee版本设为java ee 5.0


    点击Finish完成,建好的工程如图:

    如果你的myeclipse还没有配置一个web服务器,那就进行下面的步骤,这里以tomcat6为例:

    打开MyEclipseàPreferences窗口,展开目录树如下图:

    设置好你的tomcat6的路径即可,前提你要先安装好tomcat哦。还有需要注意的一点是,看到目录树tomcat6.x下面的JDK了吗?点击它,也要把tomcat的JDK设为jdk1.6才行,以与myeclipse一致。

    好了,工程已经建好了,下面就开始配置struts吧。配置之前先把struts的包下载下来哦,下载地址上面已经给出了。

    3 配置Struts2.0

    3.1 基础配置

    1)引入Struts必需的五个jar包。下载struts-2.1.6-all.zip解压后,struts-2.1.6\lib目录下是struts所有的相关jar包。这么多jar包并不是struts必须得,使用struts只需要把下面五个引入即可,以后用到什么jar包,再引入。

    ² Commons-logging-1.0.4.jar

    ² Freemarker-2.3.13.jar

    ² Ognl-2.6.11.jar

    ² Struts2-core-2.1.6.jar

    ² Xwork-2.1.2.jar

    2)修改WEB-INF下的web.xml文件,增加struts2的配置。增加代码如下:这些配置代码对于struts2是不变的,直接复制到web.xml即可。

    <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>

    3)添加struts配置文件。 在WEB-INF/classes目录下,新建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>
    </struts>

    好了,struts基本配置完毕,是不是很简单?

    现在把工程发布到tomcat上去测试一下,在工程名字上点击右键,选择MyEclipseàAdd and Remove project Deployments,在打开的窗口里,点击Add,选择我们之前配置好的tomcat6服务器,如下图:

    发布好了,启动tomcat,如果启动无异常,则说明配置成功。

    注意:可能会出现struts-default.xml相关异常,根据提示引入相关jar包。我测试的时候是缺少fileupload相关jar包,于是引入了commons-fileupload-1.2.1.jar。

    3.2 配置一个Action

    下面开始配置一个Action吧,以用户登录为例:

    1)首先新建一个登陆页面login.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>
    <s:form name="form1" action="login" >
    <s:textfield  name="username" label="username" ></s:textfield>
    <s:password name="password" label="password" ></s:password>
    <s:submit label="submit"></s:submit>
    </s:form>
    <s:actionerror/>
    </body>
    </html>

    2)在我们已经建好的struts.xml中来配置登录的action。这里定义登录action的名字为login,配置代码如下:

    <?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>
    <package name="struts2" extends="struts-default">
    <action name="login" class="test.LoginAction">
    <result name="success" type="redirect">index.jsp</result>
    <result name="input">login.jsp</result>
    <result name="error">login.jsp</result>
    </action>
    </package>
    </struts>

    3)下面就来编写具体的action类了。代码如下:

    1package test;
    2import com.opensymphony.xwork2.ActionSupport;
    3public class LoginAction extends ActionSupport {
    4 public String username;
    5 public String password;
    6 public String execute(){
    7 if(!username.equals("admin")){
    8 super.addFieldError("username", "用户名错误!");
    9 return ERROR;
    10        }
    11 if(!password.equals("001")){
    12 super.addFieldError("password", "密码错误!");
    13 return ERROR;
    14        }
    15 return SUCCESS;
    16    }
    17 public void validate(){
    18 if(username==null||username.length()==0){
    19 super.addActionError("用户名不能为空");
    20        }
    21 if(password==null||password.length()==0){
    22 super.addActionError("密码不能为空");
    23        }
    24    }
    25}
    26

    4)好了,一个Action就创建完成了,重启tomcat测试一下吧。如果第一次使用struts,你可能你明白上面的代码,以后慢慢学习即可,现在先来看一下效果吧。

    打开登录页面http://localhost:8080/test/login.jsp,输入正确或错误的用户名和密码,看看有什么提示。

    4 配置Hibernate

    4.1 基础配置

    1) 导入最小jar包,即使用Hibernate3所必需的jar包。下载hibernate-distribution-3.3.1.GA解压后,必需jar包都在lib"required目录下。必需jar包如下:

    ² hibernate3.jar-----------------------------核心类库

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

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

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

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

    ² jta-1.1.jar------------------------------------标准的JTA API。

    ² slf4j-api-1.5.2.jar

    ² slf4j-nop-1.5.2.jar

    1) 创建Hibernate配置文件。在WEB-INF"calsses目录下(工程的src包下)新建hibernate.cfg.xml。这是hibernate连接数据库的配置文件。这里以连接Oracle为例:

    <?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>
    <property name="connection.driver_class">
                oracle.jdbc.driver.OracleDriver
    </property>
    <property name="connection.url">
    jdbc:oracle:thin:@192.168.0.141:1521:TEST
    </property>
    <property name="myeclipse.connection.profile">TEST</property>
    <property name="connection.username">test</property>
    <property name="connection.password">test</property>
    <property name="dialect">
                org.hibernate.dialect.Oracle9Dialect
    </property>
    <property name="show_sql">true</property>
    <mapping resource="test/hibernate/TUser.hbm.xml" />
    </session-factory>
    </hibernate-configuration>

    1) 创建Session工厂类HibernateSessionFactory。

    让我们先了解一下Session, Hibernat 对数据库的操作是通过Session来实现的,这里的session不同于页面间传递参数的session,而是类似于JDBC中的 Connection。Session是Hibernate运作的中心,对象的生命周期、事务的管理、数据库的存取都与session息息相关。

    而Session是由HibernateSessionFactory创建的,是线程安全的,可以让多个执行线程同时存取HibernateSessionFactory而不会有数据共享的问题,但不能让多个线程共享一个Session。

    HibernateSessionFactory可以用myeclispe自动创建,这里就不贴出代码了。

    注意:别忘了把数据库驱动包引入到工程中。对于oracle是class12.jar。

    4.2 示例

            这个自己去测试一下吧。

    5 配置Spring2.5

    5.1 基础配置

    1) 导入spring包。下载spring-framework-2.5.6并解压后,在spring-framework-2.5.6"dist目录下找到spring.jar,引入到工程中。

    说明:spring.jar是包含有完整发布的单个jar包,spring.jar中包含除了 spring-mock.jar里所包含的内容外其它所有jar包的内容,因为只有在开发环境下才会用到spring-mock.jar来进行辅助测试,正式应用系统中是用不得这些类的。除了spring.jar文件,Spring还包括有其它13个独立的jar包,各自包含着对应的Spring组件,用户可以根据自己的需要来选择组合自己的jar包,而不必引入整个spring.jar的所有类文件。这里,为了使用方便,我们引入整个spring.jar。

    2) 配置web.xml文件。Jar包引入完成后,就开始配置spring了,首先修改web.xml文件,增加如下代码:

    <!--
    * 从类路径下加载spring的配置文件, 多个配置文件可以用逗号和空格区分
    * classpath: 关键字特指类路径下加载-->
    <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>
                classpath*:spring/applicationContext*.xml
    </param-value>
    </context-param>

    在这里,我们指定了spring配置文件的路径,即WEB-INF/classes/spring目录下的所有以applicationContext开头命名的xml文件。

    3) 在src下面新建applicationContext.xml文件。首先给这个文件加上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:aop="http://www.springframework.org/schema/aop"
             xmlns:tx="http://www.springframework.org/schema/tx"
             xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
    http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
    http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">
    </beans>

    注意:标头是2.5的 不要引入2.0, 错了可能Spring就不能正确加载。

    5.2 示例

           Spring基本配置完毕,让我们建个示例来测试一下吧,首先在test.spring包下创建两个java文件:TUser.java、SpringTest.java。

    TUser.java:

    1package test.spring;
    2
    3public class TUser implements java.io.Serializable {
    4 private String username;
    5 private String allname;
    6 private String address;
    7
    8 public String getUsername() {
    9 return this.username;
    10    }
    11 public void setUsername(String username) {
    12 this.username = username;
    13    }
    14 public String getAllname() {
    15 return this.allname;
    16    }
    17 public void setAllname(String allname) {
    18 this.allname = allname;
    19    }
    20 public String getAddress() {
    21 return this.address;
    22    }
    23 public void setAddress(String address) {
    24 this.address = address;
    25    }
    26}
    27

    SpringTest.java:

    1package test.spring;
    2
    3import org.springframework.context.ApplicationContext;
    4import org.springframework.context.support.ClassPathXmlApplicationContext;
    5
    6public class SpringTest {
    7 public static void main( String[] args ) {
    8 //加载spring配置文件,初始化IoC容器
    9        ApplicationContext ac = new ClassPathXmlApplicationContext("spring/applicationContext.xml");
    10 //从容器 接管Bean
    11        TUser user = (TUser) ac.getBean("TUser");
    12 //输出欢迎信息
    13        System.out.println( "Hello:" + user.getUsername() + ";u is in " + user.getAddress() + " ; and u is  " + user.getAllname() );
    14    }
    15}
    16

    创建完毕后,就剩最后一步了,在applicationContext.xml中配置一个bean,在xml中增加如下代码:

    <bean id="TUser" class="test.spring.TUser">
    <property name="username" value="小张"></property>
    <property name="allname" value="张三"></property>
    <property name="address" value="青岛市"></property>
    </bean>

    好了,下面运行一下吧,右键单击SpringTest.java选择run as àJava Application,运行结果如下:

    如果你的运行结果和上面一样,且没有异常,则说明Spring配置成功了。是不是很简单?不要骄傲,重要的是Spring与Hibernate、Struts的整合。继续吧!

    5.3 整合Struts

           Spring与Struts的整合其实就是把Struts的Action类交给Spring来管理,下面开始吧!

    1) 导入jar包。在Struts2.1.6的lib目录中找到struts2-spring-plugin-2.1.6.jar,引入到工程中。

    2) 配置web.xml文件。在web.xml中加入以下代码:

    <listener>

    <listener-class>

             org.springframework.web.context.ContextLoaderListener

    </listener-class>

    </listener>

    1) 现在就来看如何把struts的action交给spring。以struts示例中的login.action为例,首先创建一个LoginAction类的Bean。在applicationContext.xml中增加如下代码:

    <bean id="loginAction" class="test.action.LoginAction" scope="prototype">

    </bean>

    这里,我们把这个bean的id设为loginAction。Scope设为prototype,含义是每一次请求创建一个LoginAction类的实例,Scope还有另一个值“singleton”意为“单例模式”。

    接下来修改struts.xml文件,把原来login.action的配置做如下修改:

    把<action name="login" class=" test.action.LoginAction ">

    改为

    <action name="login" class="loginAction">

    注意到有什么区别了吗?class值设为了loginAction,即LoginAction类的bean的ID。这样我们就把LoginAction类交给了spring管理。至于具体是怎么处理的,秘密在struts2-spring-plugin-2.1.6.jar中,有空自己就去研究吧,现在会用就可以了。

    5.4 整合Hibernate

           Spring整合Hibernate主要是对hibernate的Session进行管理,包含Session的创建、提交、关闭的整个生命周期。Spring对事务的管理应用了AOP的技术,配置前请先了解一下AOP的知识。

    1) 配置sessionFactory,让spring来创建Session。在applicationContext.xml中增加如下代码:

    <!-- 配置sessionFactory -->

    <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">

    <property name="configLocation">

    <value>classpath:spring/hibernate.cfg.xml</value>

    </property>

    </bean>

    我们原来是用HibernateSessionFactory.java来创建Session的,现在删除即可,交给Spring创建。这里,创建了一个Session工厂类的Bean,其ID为“sessionFactory”。

    2) 配置事务管理器。增加如下代码:

    <!-- 配置事务管理器 -->

    <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">

    <property name="sessionFactory">

    <ref bean="sessionFactory"/>

    </property>

    </bean>

    这里创建了一个id为transactionManager的事务管理器,它匹配一个session工厂,<ref bean="sessionFactory"/>这个sessionFactory是指session工厂的ID。

    3) 对事务管理器进行事务设置。增加如下代码:

    <tx:advice id="smAdvice" transaction-manager="transactionManager">

    <tx:attributes>

    <tx:method name="save*" propagation="REQUIRED"/>

    <tx:method name="del*" propagation="REQUIRED"/>

    <tx:method name="update*" propagation="REQUIRED"/>

    </tx:attributes>

    </tx:advice>

    这里创建了一个advice(通知),对事务管理器进行事务设置,这里意思是指,对于以save、del、update开头的方法应用事务。

    4) 下面就把事务应用到具体的类。看如下代码:

    <aop:config>

    <aop:pointcut id="smMethod"

    expression="execution(* test.service.impl.*.*(..))"/>

    <aop:advisor pointcut-ref="smMethod" advice-ref="smAdvice"/>

    </aop:config>

    这里配置的作用是把我们上面创建的advice应用到具体的类中。以上代码的意思指,给test.service.impl下的所有类的所有方法应用smAdvice。

    5) 示例:使用Session。

         配置基本完毕了,自己去测试吧,这里就不先写了。     

    看过此文的读者还看过:
    《SSH框架笔记》-电子文档下载(MLDN)(PDF)
    图解SSH框架配置步骤

    本文内容搜集于互联网,如有侵犯你的权利,请来信告知。
     
  • 相关阅读:
    ASP.NET MVC 重点教程一周年版 第二回 UrlRouting
    ASP.NET MVC 重点教程一周年版 第三回 Controller与View
    DynamicData for Asp.net Mvc留言本实例 下篇 更新
    Asp.net MVC视频教程 18 单选与复选框
    使用ASP.NET MVC Futures 中的异步Action
    ASP.NET MVC RC 升级要注意的几点
    ATL、MFC、WTL CString 的今生前世
    msvcprt.lib(MSVCP90.dll) : error LNK2005:已经在libcpmtd.lib(xmutex.obj) 中定义
    关于Windows内存的一些参考文章
    Windows访问令牌相关使用方法
  • 原文地址:https://www.cnblogs.com/sunliming/p/1842114.html
Copyright © 2011-2022 走看看