现在开发的一个项目使用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
Full Distribution:
struts-2.1.6-all.zip (110mb) [PGP] [MD5]
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< BR> </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" ?>
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。
配置基本完毕了,自己去测试吧,这里就不先写了。
联系客服