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

SSH构架搭建个人小结

阅读更多

看过了两三个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。

 

分享到:
评论
3 楼 dk101 2010-07-14  
工作和学习的过程中,不断的总结,这是个很好的习惯,谢谢共享心得。
2 楼 smartyu586 2010-05-15  
受教了,以前也是根据视频整,现在清晰多了
1 楼 20055294 2010-05-14  
LZ ,学习这个了

相关推荐

    SSH学习小结SSH学习小结

    SSH学习小结SSH学习小结SSH学习小结SSH学习小结

    ssh构架搭建示例1。

    ssh架构搭建示例,有谁需要学洗的就赶快下来看看,学习学习有需要的就下吧!

    SSH框架搭建源码

    里面是SSH框架搭建登录的demo,清楚的描述了SSH框架搭建过程的各种配置,另附博客地址:http://blog.csdn.net/u010539352

    SSH构架教程(详细版)

    SSH构架教程(详细版,包括ppt,structs等内容)

    SSH搭建详细步骤

    详细描述SSH框架搭建步骤,提供给新手参考

    SSH框架搭建jar包

    这个里面只有一个整合所需要的jar包,搭建ssh环境所需要的

    SSH架构搭建,SSH架构,

    SSH架构搭建,SSH架构

    手把手SSH架构搭建

    SSH搭建

    ssh框架搭建源码

    ssh框架搭建源码

    ssh框架搭建实例源码7

    本资源是在“ssh框架搭建实例源码6”基础上实现注解自动注入功能,简化了spring的配置,并解决了按F5刷新页面出现错误的bug。 本资源所需的jar包请到“ssh框架搭建实例源码2”和“ssh框架搭建实例源码”中下载: ...

    ssh框架搭建实例源码5替换

    本资源是在“ssh框架搭建实例源码4”基础上增加了数据类型转换功能;增加了数据验证功能;进行较好的测试和修改;进行部分代码注释;成功移植到ssm(strut2、spring、mybatis)实现了“hibernate和mybatis的之CRUD...

    ssh框架搭建实例源码2

    本资源是在“ssh框架搭建实例源码1”基础上增加了修改了分页技术,实现数据从数据库中读取,并补充“ssh框架搭建实例源码1”中忘记上传的与分页技术相关的jar包,更新数据库文件ssh.sql。本资源所需的jar包请到“ssh...

    SSH项目搭建步骤简单示例

    SSH项目搭建步骤简单示例,SSH项目搭建步骤简单示例,SSH项目搭建步骤简单示例,SSH项目搭建步骤简单示例,SSH项目搭建步骤简单示例

    SSH视频演示SSH搭建

    SSH视频演示SSH搭建Struts Hibernate Spring 包括源代码

    ssh框架搭建及实例ssh框架

    ssh框架搭建及实例ssh框架 ssh框架搭建及实例ssh框架

    SSH项目构架规范详解

    SSH为Struts+Spring+Hibernate的组成方式,Struts实现MVC,Spring负责架构的结合,Hibernate进行数据的持久化。

    SSH2框架搭建实例源码

    SSH2框架搭建实例(spring3.2+strust2.3.4+hibernate4.2)全部采用最新版本.演示了用户登录和用户管理

    SSH框架搭建步骤

    NULL 博文链接:https://robinsoncrusoe.iteye.com/blog/797961

    SSH环境搭建

    SSH环境搭建 初学者可以参考学习,里面命名不规范的请见谅,只是为了面试复习一下........ SSH环境搭建 初学者可以参考学习,里面命名不规范的请见谅,只是为了面试复习一下........ SSH环境搭建 初学者可以参考...

    SSH2框架的搭建步骤-教程文档大全

    一次下载,SSH2框架的搭建步骤 全部文档资料都有。 对于新手来说,独自完成一个完整正确的SSH框架可能是一个相当困难麻烦的事。在此我利用Myeclipse+mysql环境下使用截图外加简略文字引导初学者一步一步的搭建出一个...

Global site tag (gtag.js) - Google Analytics