看过了两三个SSH搭建的视频(浪曦风中叶老师、尚学堂李勇老师的两个视频),也跟着视频把这个框架搭了两遍,有点迷迷糊糊的,为了加深印象,我决定不依靠视频再来搭一遍,经过一天的调试与处理,终于能够独立自主地把SSH框架给搭建起来了,不容易啊。其中出现的错误以及各种各样的BUG不计其数,通过查阅文档以及Google得到了解决。这里,我就来做一个总结:
SSH框架的基本配置:
1.相关jar包的引入,这里我采用的是spring2 + struts2 + hibernate3的组合,搭完了之后才发现Spring已经到3了,不知道在Spring3上面的配置是否相同,有待尝试。
-----核心jar包-----
# spring.jar
# struts2-core.jar
# xwork-core.jar
# mysql-connector-java.jar
# hibernate3.jar
# struts2-spring-plugin.jar
-----在默认配置下核心jar所依赖的jar包---
# commons-collections.jar ---|
# commons-fileupload.jar-----|------------这三个jar包是在jakarta-commons项目中一些
# commons-logging.jar--------| 基于JDK上扩展的工具包。
# freemarker.jar
# log4j.jar
# ognl.jar
# dom4j.jar
# jta.jar
# cglib-nodep.jar
# antlr.jar ------------ 这个jar包是spring AOP 采用 动态代理 时需要的jar包。
2.相关的配置
i)/WEB-INF/web.xml
a.需要配置一个Struts2的Filter:
<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>
b.由于从struts2.1.3之后的版本不再建议采用org.apache.struts2.dispatcher.FilterDispatcher,所以,我们最好配置成StrutsPrepareAndExecuteFilter或者StrutsExecuteFilter以及StrutsPrepareFilter,需要注意的是:如配置成StrutsExecuteFilter需要将StrutsPrepareFilter也配置上,否则将会报错。所以建议就只直接采用StrutsPrepareAndExecuteFilter。
c.此外还需要配置一个ContextListener:
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
如果你的applicationContext.xml没有配置在/WEB-INF/目录或者采用的不是默认的文件名,则还需要配context-param,让Spring找到对应的配置文件,如下(注意:param-name的内容一定是contextConfigLocation,Spring将根据该名称注入到相应的对象中):
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath*:application-Context.xml</param-value>
</context-param>
ii)applicationContext.xml,这个文件是比较核心的文件:
a)配置sessionFactory,有两种配置方式:
(1)采用传统的Hibernate配置文件,将其映射到sessionFactory中:
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="configLocation" >
<value>classpath:hibernate.cfg.xml</value>
</property>
</bean>
采用这种方式时,需要在hibernate.cfg.xml文件中配置数据连接相关信息,这里与一般的hibernate配置文件一样:
<hibernate-configuration>
<session-factory>
<!-- connection configuration -->
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/ssh_test</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">orange</property>
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
<!-- the following configuration just for programming and debug -->
<property name="hibernate.show_sql">true</property>
<!-- mapping resource -->
<mapping resource="com/ssh/bean/User.hbm.xml"/>
</session-factory>
</hibernate-configuration>
(2)采用sessionFactory属性的方式配置数据源相关信息,如下:
<!-- 配置数据源 -->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/mytest" />
<property name="username" value="root" />
<property name="password" value="orange" />
<property name="maxActive" value="100" />
<property name="maxIdle" value="30" />
<property name="maxWait" value="500" />
<property name="defaultAutoCommit" value="true" />
</bean>
<!-- 将数据源映射到sessionFactory中 -->
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
<prop key="hibernate.show_sql">true</prop>
</props>
</property>
<property name="mappingResources">
<list>
<value>com/test/bean/User.hbm.xml</value>
</list>
</property>
</bean>
b)配置完sessionFactory后,还可以根据需要配置以下三方面的内容,也可以不配置选择采用默认的方式:
<!-- 配置事务管理器 -->
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory">
<ref bean="sessionFactory"/>
</property>
</bean>
<!-- 配置事务的传播特性 -->
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="add*" propagation="REQUIRED"/>
<tx:method name="del*" propagation="REQUIRED"/>
<tx:method name="modify*" propagation="REQUIRED"/>
<tx:method name="*" read-only="true"/>
</tx:attributes>
</tx:advice>
<!-- 那些类的哪些方法参与事务 -->
<aop:config>
<aop:pointcut id="allManagerMethod" expression="execution(* xxx.xxx.*.*(..))"/>
<aop:advisor pointcut-ref="allManagerMethod" advice-ref="txAdvice"/>
</aop:config>
这样就基本完成了我们的ssh的相关配置。
3.SSH的基本使用:
具体分工:
# 在applicationContext.xml中配置相关的bean信息
<bean id="userService" class="com.ssh.service.impl.UserServiceImpl">
<property name="userDao" ref="userDao"/>
</bean>
<bean id="loginAction" class="com.ssh.action.LoginAction">
<property name="service" ref="userService" />
</bean>
这里的property属性中name值对应的是相应处理类生成时需要IoC容器注入的属性,比如说id为loginAction的处理类为com.ssh.action.LoginAction(它其中应当设置一个setService(UserService service)方法),这样在需要使用该bean时,IoC容器会调用这个setService方法来将生成的userService对象传入。
需要注意的是,如果想让IoC容器注入相应属性,则必须要实现相应属性的set方法。
# 在struts.xml中配置action的相关信息
相关注意事项:
由于所有的bean都由Spring来管理,那么在struts.xml中一个action的class属性就不能写成具体的类,而是要使用该类在applicationContext.xml文件中配置的Bean的id,如:
<action name="login" class="loginAction">
<result name="success">/result.jsp</result>
<result name="input">/index.jsp</result>
</action>
这个loginAction对应的就是上面的id为loginAction的bean,而这个bean的class属性中设置的才是真正的对应的Action的处理类。
# 对于每个模型,都要有一*.hbm.xml
3.其它一些注意点:
Spring中一些的概念很重要:AOP,IOC。
分享到:
相关推荐
ssh架构搭建示例,有谁需要学洗的就赶快下来看看,学习学习有需要的就下吧!
SSH构架,全称为Struts2 + Spring + Hibernate,是Java Web开发中广泛采用的一种集成框架,用于构建高效、可扩展且易于维护的Web应用程序。本教程将详细讲解SSH构架的各个方面,包括其核心组件的功能、配置以及它们...
这个压缩包文件"SSHdemo"提供了一个SSH框架搭建登录功能的示例,帮助开发者了解并实践如何整合这三个框架来构建一个完整的Web应用程序。 **Struts2** 是一个基于MVC(Model-View-Controller)设计模式的Java Web...
本压缩包提供了搭建SSH环境所需的核心jar包,让我们来详细探讨一下这些框架及其在构建Java Web应用中的作用。 1. Struts2:Struts2是一个基于MVC(Model-View-Controller)设计模式的Web应用框架,主要负责控制层。...
以下将详细介绍SSH框架搭建的步骤。 **Spring框架** 1. **环境准备**:首先确保已安装JDK,并配置好环境变量。然后下载Spring框架的库文件,将其添加到项目的类路径中。 2. **创建项目**:使用IDE如Eclipse或...
SSH 项目搭建步骤简单示例 SSH 项目搭建步骤简单示例是指使用 SSH 框架搭建一个完整的 Java 项目的步骤,该示例展示了从创建项目到配置 Web.xml 文件、添加 Hibernate 支持、添加 Struts2 支持、配置 Hibernate ...
本资源是在“ssh框架搭建实例源码6”基础上实现注解自动注入功能,简化了spring的配置,并解决了按F5刷新页面出现错误的bug。 本资源所需的jar包请到“ssh框架搭建实例源码2”和“ssh框架搭建实例源码”中下载: ...
本资源是在“ssh框架搭建实例源码4”基础上增加了数据类型转换功能;增加了数据验证功能;进行较好的测试和修改;进行部分代码注释;成功移植到ssm(strut2、spring、mybatis)实现了“hibernate和mybatis的之CRUD...
以上是SSH环境搭建的基本过程,通过这个过程,你可以建立一个安全的远程访问通道,保护你的数据不受网络威胁。在实际操作中,根据具体需求和安全策略调整配置是至关重要的。在 Rico-Cai 的博客中可能有更具体的实践...
SSH 架构是一种常见的Java Web应用开发框架,由Struts、Spring和Hibernate三个开源组件组合而成。这个架构在2000年代中期非常流行,它有效地解决了当时Web应用开发的一些痛点,但随着技术的发展,也逐渐暴露出一些...
本资源是在“ssh框架搭建实例源码1”基础上增加了修改了分页技术,实现数据从数据库中读取,并补充“ssh框架搭建实例源码1”中忘记上传的与分页技术相关的jar包,更新数据库文件ssh.sql。本资源所需的jar包请到“ssh...
ssh框架搭建及实例ssh框架 ssh框架搭建及实例ssh框架
总的来说,SSH2框架搭建实例是一个学习和理解Java Web开发的好素材。通过实践这个项目,开发者可以深入理解如何整合三大框架,以及如何利用它们来实现常见的业务功能。同时,这也是提升数据库操作、MVC设计模式和...
### 手把手SSH架构搭建详解 #### 一、概述 SSH框架是指Struts + Spring + Hibernate这三种技术的组合,是Java Web开发中非常流行的一种轻量级开发框架。本篇将详细介绍如何在MyEclipse 10环境下搭建SSH框架,并进行...
SSH架构,全称为Struts+Spring+Hibernate,是Java Web开发中的一个经典组合,用于构建高效、可扩展的web应用程序。SSH架构通过整合Struts的MVC设计模式、Spring的依赖注入(DI)和面向切面编程(AOP),以及...
SSH环境搭建 初学者可以参考学习,里面命名不规范的请见谅,只是为了面试复习一下........ SSH环境搭建 初学者可以参考学习,里面命名不规范的请见谅,只是为了面试复习一下........ SSH环境搭建 初学者可以参考...
本教程将详细介绍如何在MyEclipse环境中搭建一个SSH框架,并实现一个登录功能实例。以下是对SSH框架及其搭建过程的详细解释。 **1. Struts2** Struts2是MVC(Model-View-Controller)设计模式的实现,主要用于处理...
一次下载,SSH2框架的搭建步骤 全部文档资料都有。 对于新手来说,独自完成一个完整正确的SSH框架可能是一个相当困难麻烦的事。在此我利用Myeclipse+mysql环境下使用截图外加简略文字引导初学者一步一步的搭建出一个...
本资源是在“ssh框架搭建实例源码2”基础上修改了分页技术,实现项目真正可用的分页技术;实现对基础的dao,service,action操作的提取封装;使命名更规范。本资源所需的jar包请到“ssh框架搭建实例源码2”和“ssh...