`
skylovehero
  • 浏览: 31613 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

S2SH项目搭建流程

阅读更多
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>
分享到:
评论
1 楼 LD_21 2011-03-09  

相关推荐

    S2SH详细搭建(适合新手)

    本教程将详细介绍如何在MyEclipse 8.5环境下搭建一个基本的S2SH项目。 **一、开发环境** 1. **MyEclipse 8.5**:集成开发环境,用于编写和管理Java项目。 2. **JDK 1.6**:Java开发工具包,提供Java语言运行环境。 ...

    S2SH项目搭建

    【标题】"S2SH项目搭建"涉及到的是一个基于Struts2、Spring和Hibernate三大开源框架集成的Web项目构建过程。这些技术是Java Web开发中非常经典的MVC(Model-View-Controller)架构模式实现,广泛应用于企业级应用...

    S2SH架构搭建简单实例解析

    **S2SH架构搭建简单实例解析** S2SH架构,全称为Struts2+Spring+Hibernate,是Java Web开发中的经典MVC(Model-View-Controller)架构组合。这个架构结合了Struts2的视图控制、Spring的依赖注入与事务管理以及...

    基础S2SH框架开发流程

    下面将详细介绍S2SH框架的基本概念和开发流程。 1. **Struts框架** Struts是一个基于MVC(Model-View-Controller)设计模式的Java Servlets框架,负责处理HTTP请求和转发到相应的控制器。在Struts.xml配置文件中,...

    S2SH框架搭建和心得

    本文将详细讲解S2SH项目的搭建步骤,以及一些关键配置和注意事项。 首先,我们要添加项目所需的支持库。在搭建S2SH项目时,需要包括以下核心组件的jar包: 1. **Struts2**:struts2-core-2.0.11.jar、xwork-2.0.4....

    S2SH框架搭建登录实例

    这个实例不仅涵盖了S2SH框架的基本配置,还涉及到数据库操作、Spring依赖注入和Struts2的Action控制流程。通过实践,开发者可以更好地理解这三个框架的协同工作方式,为后续的复杂应用开发打下坚实的基础。

    s2sh环境搭建

    以上就是关于"S2SH环境搭建"的知识点介绍,涵盖了Struts2、Spring和Hibernate的基础概念、配置过程及项目结构。通过理解这些内容,开发者可以搭建出一个基本的S2SH开发环境,从而高效地进行Java Web应用的开发。

    S2SH简单集成小项目

    **S2SH简单集成小项目** 本项目是一个基于Struts2、Spring和Hibernate(简称S2SH)的轻量级Java Web应用框架的实例。S2SH是企业级Web开发中常用的三大开源框架的组合,它们分别是:Struts2负责控制层,Spring处理...

    S2SH项目整合源码

    通过这个S2SH项目整合源码,开发者可以学习到如何将这三个框架协同工作,理解它们各自的职责和交互方式,从而提升在企业级Java Web开发中的能力。此外,这个项目也展示了基本的用户认证和CRUD操作的实现,对于初学者...

    s2sh和mysql搭建的框架

    在这个“S2SH和MySQL搭建的框架”中,开发者使用这些技术与MySQL数据库协同工作,创建了一个基础的登录系统。 Struts2是ActionServlet的增强版,提供了一种更强大的处理HTTP请求的方式,并且拥有丰富的插件体系和...

    s2sh所需jar包

    标题中的“s2sh所需jar包”指的是在搭建基于Struts2、Spring和Hibernate整合的Web应用程序(通常称为S2SH框架)时所必需的Java类库文件。这些jar包是构建这种三层架构(表现层、业务逻辑层、数据访问层)应用的基础...

    S2SH框架的搭建过程详解(文档)及源代码

    本教程将详细介绍如何搭建一个完整的S2SH框架环境,并提供源代码供参考。 首先,我们需要了解每个组件的基础: 1. **Struts 2**:这是一个基于MVC设计模式的Java Web框架,主要负责处理用户请求,控制应用程序流程...

    基于S2SH框架开发的BBS的JSP项目

    【标题】基于S2SH框架开发的BBS的JSP项目 这个项目是一个采用Struts2、Spring...通过学习这个基于S2SH的BBS项目,不仅可以掌握三大框架的集成应用,还能提升对Web开发整体流程的理解,为后续的进阶学习打下坚实基础。

    s2sh完整jar包

    使用这个完整的S2SH JAR包,开发者可以在新的Java Web项目中快速搭建环境,实现MVC架构,通过Spring管理Bean,以及利用Hibernate进行数据持久化。这极大地提高了开发效率,减少了配置工作,并允许团队成员更专注于...

    S2SH所需jar包

    开发者在搭建S2SH环境时,必须确保这些jar包完整且正确导入,以避免运行时出现类找不到或版本不匹配等问题。 在实际开发过程中,`S2SH所需Jar包`通常会包括以下组件: - Spring框架的核心库(如spring-context、...

    s2sh框架的搭建例子(搭建思路清晰)(demo)

    这个“s2sh框架的搭建例子”中的"ywhw"可能是一个项目名或目录名,具体含义需要进一步查看压缩包内容。通过这个例子,开发者可以学习到如何将SSH三个组件有效地结合,为复杂的Web应用提供稳定的基础。尽管现代开发中...

    S2SH 整合 导入即可完整包

    通过下载的"mytest"压缩包,开发者可以直接导入IDE进行项目运行,省去了搭建环境和基础配置的步骤,特别适合新手快速上手学习S2SH框架的使用。 总结,S2SH整合提供了一种高效、成熟的Java Web开发解决方案,它简化...

    完整的S2SH框架整合, 带jar包

    这个“完整的S2SH框架整合,带jar包”资源包含了这些框架的核心库,以及可能的一个实例项目,旨在帮助开发者快速搭建和理解S2SH的应用。 1. **Struts**:Struts 是一个基于MVC设计模式的Web应用框架,主要用于控制...

    BBS论坛管理系统S2SH框架开发

    综上所述,基于S2SH框架的BBS论坛管理系统充分利用了这三个框架的优势,实现了高效的开发流程和稳定的运行性能。开发者通过Struts2处理用户请求,Spring管理业务逻辑和数据访问,Hibernate则负责数据库操作。这样的...

Global site tag (gtag.js) - Google Analytics