S2SH项目搭建流程
08年年底开始,公司新项目开始采用struts2了。往后大部分项目采用Strust2,Hibernate,Spring架构。项目中忙里偷闲,整理点东西供分享(如有不完善之处将尽快修补):
1) 准备好如下jar包:
Oracle数据库的jar:
Ojdbc14.jar
struts2的jar:
commons-pool.jar
freemarker-2.3.8.jar
ognl-2.6.11.jar
struts2-core-2.0.11.jar
xwork-2.0.4.jar
struts2整合spring的jar:
struts2-spring-plugin-2.0.9.jar
Hibernate整合需要的jar:
commons-logging-1.0.4.jar
2) Jndi连接池配置(以Tomcat为例)
<Resource name="jdbc/test" auth="Container"
type="javax.sql.DataSource"
maxActive="100" maxIdle="30" maxWait="10000"
username="EHT" password="eht"
driverClassName="oracle.jdbc.driver.OracleDriver"
url="jdbc:oracle:thin:@localhost:1521:Orcl"/>
3) 创建工程,加入准备好的jar包,
通过IDE自动导入Spring,Hibernate框架,
删除asm-2.2.3.jar这个冲突的Jar
创建model,dao,service,action,inteceptor包,
建立相应的类:
model类,dao类(继承HibernateDaoSupport),service类,Action类(继承ActionSupport),
interceptor类(依据拦截方式实现不同接口,常用的是实现MethodInteceptor环绕拦截接口);
4) 修改web.xml,加入Spring的装载器与Struts2.0的过滤器,编码过滤器:
<!-- Spring的装载器 -->
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
<!--ContextLoaderListener会去找contextConfigLocation这个参数的,选择spring的配置文件 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:/applicationContext.xml</param-value>
</context-param>
<!-- struts的过滤器 -->
<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>
<!-- 著名的Character Encoding filter,设置转换编码为gbk -->
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>
org.springframework.web.filter.CharacterEncodingFilter
</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>gbk</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>*.action</url-pattern>
</filter-mapping>
5) 创建struts.xml文档;
6) 在根目录下创建daoContext.xml,strutsContext.xml,serviceContext.xml,aopContext.xml;
7) 为上步创建的4个文档引入如下申明:
<?xml version="1.0" encoding="UTF-8"?>
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.0.xsd"></beans>
8) 创建JSP界面,建立表单,定义好表单的action属性(与下一步的<action/>配置的name属性匹配);
若要使用struts2标签,可引入<%@ taglib prefix="s" uri="/struts-tags" %>
9) 配置struts.xml:
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<!-- GBK编码 -->
<constant name="struts.i18n.encoding" value="GBK" />
<!--通过Spring管理Struts-->
<constant name="struts.objectFactory" value="spring" />
<package name="default" extends="struts-default">
<action name="user" class="loginAction">
<result name="input">/login.jsp</result>
<result name="error">/login.jsp</result>
<result name="success">/index.jsp</result>
<interceptor-ref name="params"></interceptor-ref>
</action>
</package>
</struts>
10) 配置strutsContext.xml:
<!—未加AOP的配置-->
<bean id="loginAction" class="com.company.action.LoginAction" scope="prototype">
<property name="userService" ref="userService" />
</bean>
11) 配置serviceContext.xml:
<!—未加事务的配置-->
<bean id="userService" class="com.company.service.UserService">
<property name="userDao" ref="userDao"/>
</bean>
12) 配置daoContext.xml:
<!-- 数据源配置 -->
<bean id="dataSource"
class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName"
value="java:comp/env/jdbc/test" />
<property name="lookupOnStartup" value="false" />
<property name="cache" value="true" />
<property name="proxyInterface" value="javax.sql.DataSource" />
</bean>
<!-- sessionFactory -->
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource">
<ref bean="dataSource" />
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">
org.hibernate.dialect.Oracle9Dialect
</prop>
<prop key="hibernate.show_sql">true</prop>
</props>
</property>
<property name="mappingDirectoryLocations">
<list>
<value>classpath:/com/company /model/User.hbm.xml</value>
</list>
</property>
</bean>
<bean id="userDao" class="com.company.dao.UserDao">
<property name="sessionFactory" ref="sessionFactory"/>
</bean>
13) 修改自动生成的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"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
<import resource="aopContext.xml"/>
<import resource="daoContext.xml"/>
<import resource="serviceContext.xml"/>
<import resource="strutsContext.xml"/>
</beans>
14) src下加入Log4J资源文件: log4j.properties
15) 可以开始写业务逻辑与数据库操作方法了.
Action类中获得各范围对象的方法:
1.获得Session对象:
Map sessionMap = ActionContext.getContext().getSession();
//将信息放入session中
sessionMap.put("user", "valid");
2.获得request对象
HttpServletRequest request = ServletActionContext.getRequest();
request.setAttribute("username", "helloworld");
3.获得response对象
HttpServletResponse response = ServletActionContext.getResponse();
Cookie cookie = new Cookie("username",this.getUsername());
//如果设置为负数,则为会话Cookie;
cookie.setMaxAge(1000);
response.addCookie(cookie);
字段驱动:
本例采用字段驱动, 它一般用在页面表单比较简单的情况使用.界面表单文本框的name属性必须采用user.username形式
模型驱动:
界面表单文本框比较复杂, 用普通java对象充当模型部分
struts.xml的action配置加上<interceptor-ref name="model-driven"/>
并且让Action类实现ModelDriven接口,重写getModel()方法
public Object getModel(){
return user;
}
将JSP界面表单文本框的name属性的user.去掉
附加过滤器:
<!-- 容器负责session的开启和关闭 -->
<filter>
<filter-name>hibernateFilter</filter-name>
<filter-class>
org.springframework.orm.hibernate3.support.OpenSessionInViewFilter
</filter-class><!-- singleSession默认为true,若设为false则等于没用OpenSessionInView -->
<init-param>
<param-name>singleSession</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>hibernateFilter</filter-name>
<url-pattern>*.action</url-pattern>
</filter-mapping>
分享到:
相关推荐
本教程将详细介绍如何在MyEclipse 8.5环境下搭建一个基本的S2SH项目。 **一、开发环境** 1. **MyEclipse 8.5**:集成开发环境,用于编写和管理Java项目。 2. **JDK 1.6**:Java开发工具包,提供Java语言运行环境。 ...
【标题】"S2SH项目搭建"涉及到的是一个基于Struts2、Spring和Hibernate三大开源框架集成的Web项目构建过程。这些技术是Java Web开发中非常经典的MVC(Model-View-Controller)架构模式实现,广泛应用于企业级应用...
**S2SH架构搭建简单实例解析** S2SH架构,全称为Struts2+Spring+Hibernate,是Java Web开发中的经典MVC(Model-View-Controller)架构组合。这个架构结合了Struts2的视图控制、Spring的依赖注入与事务管理以及...
下面将详细介绍S2SH框架的基本概念和开发流程。 1. **Struts框架** Struts是一个基于MVC(Model-View-Controller)设计模式的Java Servlets框架,负责处理HTTP请求和转发到相应的控制器。在Struts.xml配置文件中,...
本文将详细讲解S2SH项目的搭建步骤,以及一些关键配置和注意事项。 首先,我们要添加项目所需的支持库。在搭建S2SH项目时,需要包括以下核心组件的jar包: 1. **Struts2**:struts2-core-2.0.11.jar、xwork-2.0.4....
这个实例不仅涵盖了S2SH框架的基本配置,还涉及到数据库操作、Spring依赖注入和Struts2的Action控制流程。通过实践,开发者可以更好地理解这三个框架的协同工作方式,为后续的复杂应用开发打下坚实的基础。
以上就是关于"S2SH环境搭建"的知识点介绍,涵盖了Struts2、Spring和Hibernate的基础概念、配置过程及项目结构。通过理解这些内容,开发者可以搭建出一个基本的S2SH开发环境,从而高效地进行Java Web应用的开发。
**S2SH简单集成小项目** 本项目是一个基于Struts2、Spring和Hibernate(简称S2SH)的轻量级Java Web应用框架的实例。S2SH是企业级Web开发中常用的三大开源框架的组合,它们分别是:Struts2负责控制层,Spring处理...
通过这个S2SH项目整合源码,开发者可以学习到如何将这三个框架协同工作,理解它们各自的职责和交互方式,从而提升在企业级Java Web开发中的能力。此外,这个项目也展示了基本的用户认证和CRUD操作的实现,对于初学者...
在这个“S2SH和MySQL搭建的框架”中,开发者使用这些技术与MySQL数据库协同工作,创建了一个基础的登录系统。 Struts2是ActionServlet的增强版,提供了一种更强大的处理HTTP请求的方式,并且拥有丰富的插件体系和...
标题中的“s2sh所需jar包”指的是在搭建基于Struts2、Spring和Hibernate整合的Web应用程序(通常称为S2SH框架)时所必需的Java类库文件。这些jar包是构建这种三层架构(表现层、业务逻辑层、数据访问层)应用的基础...
本教程将详细介绍如何搭建一个完整的S2SH框架环境,并提供源代码供参考。 首先,我们需要了解每个组件的基础: 1. **Struts 2**:这是一个基于MVC设计模式的Java Web框架,主要负责处理用户请求,控制应用程序流程...
【标题】基于S2SH框架开发的BBS的JSP项目 这个项目是一个采用Struts2、Spring...通过学习这个基于S2SH的BBS项目,不仅可以掌握三大框架的集成应用,还能提升对Web开发整体流程的理解,为后续的进阶学习打下坚实基础。
使用这个完整的S2SH JAR包,开发者可以在新的Java Web项目中快速搭建环境,实现MVC架构,通过Spring管理Bean,以及利用Hibernate进行数据持久化。这极大地提高了开发效率,减少了配置工作,并允许团队成员更专注于...
开发者在搭建S2SH环境时,必须确保这些jar包完整且正确导入,以避免运行时出现类找不到或版本不匹配等问题。 在实际开发过程中,`S2SH所需Jar包`通常会包括以下组件: - Spring框架的核心库(如spring-context、...
这个“s2sh框架的搭建例子”中的"ywhw"可能是一个项目名或目录名,具体含义需要进一步查看压缩包内容。通过这个例子,开发者可以学习到如何将SSH三个组件有效地结合,为复杂的Web应用提供稳定的基础。尽管现代开发中...
通过下载的"mytest"压缩包,开发者可以直接导入IDE进行项目运行,省去了搭建环境和基础配置的步骤,特别适合新手快速上手学习S2SH框架的使用。 总结,S2SH整合提供了一种高效、成熟的Java Web开发解决方案,它简化...
这个“完整的S2SH框架整合,带jar包”资源包含了这些框架的核心库,以及可能的一个实例项目,旨在帮助开发者快速搭建和理解S2SH的应用。 1. **Struts**:Struts 是一个基于MVC设计模式的Web应用框架,主要用于控制...
综上所述,基于S2SH框架的BBS论坛管理系统充分利用了这三个框架的优势,实现了高效的开发流程和稳定的运行性能。开发者通过Struts2处理用户请求,Spring管理业务逻辑和数据访问,Hibernate则负责数据库操作。这样的...