整合SSH-DWR等技术过程分析

开发 后端
本篇文章主要介绍ssh整合技术全过程总结分析为了更清晰的分析ssh整合的流程,(也是为了巩固自己所学的)在这里我将要先分析整合步骤,然后在将步骤细化分析(根据我所了解的)。

ssh整合技术全过程总结分析

为了更清晰的分析ssh整合的流程,(也是为了巩固自己所学的)在这里我将要

先分析整合步骤,然后在将步骤细化分析(根据我所了解的)。部分代码块可能也

将贴出。

ssh整合步骤:

***步:添加支持

1:建表、配置数据库连接(切换到database视图或hibernate视图)

2:循序添加hibernate、spring、struts支持(切换到j2ee视图,建web工程,

添加hibernate、spring、struts(myeclipse菜单-->add project-->hibernate、spring、struts)

说明:在整合了spring时候hibernate无需创建sessionfactory也就说在添加hibernate支持时候不

需要勾上那个创建sessionfactory的勾

3:生成pojo类,创建dao包将DAO类放在一起(切换到database视图或hibernate视图找到相应的数据库中的表右键:Hibernate Reverse

Engineering)

选项说明:Java src folder 选择所在项目的src目录 下面多选框下面前三个都勾上

对于pojo类的映射文件配置。需注意表级联问题,未配置好可能导致某些操作失败(操作主表时,从表也同时操作.):在映射文件后面的set 设置cascade 属性。如:

cascade = save-update(级联添加) 同时添加主表和n个从表 、cascade = all 都级联

4:如果涉及到DWR 那么还得把DWR开发包拷在lib下,dwr.xml、dwr20.dtd(提示文件)复制到WEB-INF

目录下(至于怎么配置,下面我们详细贴出)

第二步:后台业务、.xml文件配置(如果是用MyEclipse6.5 开发的可能会出现个金典异常,解决办法就是 选择项目->Build Path->Configure

->Libraries 中Remove asm-2.2.3.jar 开发包 ,再lib下delet)

1:开始写业务层,抽取接口类。写dao层。因为业务层是调用dao层的,所以先把业务写好了就算完成了第二

步就算完成半了。

2:可以选择配置web.xml文件。

1)为spring支持的applicationContext.xml文件指定路径配置(默认会认为在WEB-INF下面)

代码:

  1.     
  2. <context-param> 
  3.  <param-name>contextConfigLocationparam-name> 
  4.  <param-value>classpath:app*.xmlparam-value> 
  5. context-param> 

 

 

2)为了避免在事务还没完成session就关闭的情况我们可以设置OpenSessionInViewFilter过滤器。这是

涉及到懒加载的问题。其实还有几种常见的方法可以避免。如:在pojo类的主键映射文件中的set

添加一个属性为 lazy="false" (立即加载关联表,默认为true) 还有种就是用代码控制立即加载关键

字 fetch。如:join fetch from A a join fetch a.

  1.    (映射可以是所有文件)  
  2. <filter> 
  3.  <filter-name>openssionfilter-name> 
  4.  <filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilterfilter-class> 
  5. filter> 

 

 

3)为了解决编码问题的过滤器(映射可以是所有文件)

  1. <filter> 
  2.  <filter-name>encodingfilter-name> 
  3.  <filter-class>org.springframework.web.filter.CharacterEncodingFilterfilter-class> 
  4. filter> 

 

 

4)配置文件加载的监听器 (没有映射)

  1. <listener> 
  2.  <listener-class>org.springframework.web.context.ContextLoaderListenerlistener-class> 
  3. listener> 

 

 

5)配有DWR就必须为之注册

  1.   <servlet> 
  2. <servlet-name>dwrservlet-name> 
  3. <servlet-class>org.directwebremoting.servlet.DwrServletservlet-class> 
  4. <init-param> 
  5.  <param-name>debugparam-name> 
  6.  <param-value>trueparam-value> 
  7. init-param> 
  8.  servlet> 
  9.  <servlet-mapping> 
  10. <servlet-name>dwrservlet-name> 
  11. <url-pattern>/dwr/*url-pattern> 
  12.  servlet-mapping> 

 

 

说明:如果是整合ssh2 时候就可能在DWR测试时候会报错因为ssh2的核心过滤器会将其拦截,导致

测试时候报错。解决办法我们将在下一篇ssh2整合流程分析讲解给出具体解决方案

(上面的映射文件可以是所有文件)

3:现在可以创建action类了、及配置。控制

添加了struts支持就会在web.xml中自动注册核心控制器 ActionServlet

这里涉及到核心控制器的工作流程了。在action中会重写execute方法。简单说客户端发送HTTP请求,都会被核心控制器拦截

核心控制器请求填充ActionForm.再转到Action.在Action中我们只要将form中的信息填充到

我们自己的ActionForm中就可以了如: 部门表Form类 部门Form(将form中信息填充到该form中) = (部门表Form) form;

要说的几点需注意:

1)注册页面:注意action是.do结尾

2)写类,继承ActionForm(FormBean),界面属性,并生成set/get方法

(类型可以是: 8种基本数据类型级包装类和它们组成的数组。 还可以 String,java.sql.Date及其数组)

3)写类,继承Action,重写execute方法,调用业务 。可以一个action类处理一个业务,也可在一个

action类中处理多个业务,就必须这样几个地方。 在页面action .do后面可添加一个参数p="xx",

在struts-config.xml-> action-mapping->action 中添加属性 parameter="p" 在请求的action类中直接

获取参数p的值,在调用对应的方法。

4)在WEB-INF建struts-config.xml文件,注册actionForm,action

并确定界面/actionForm/Action三者的关系.

action具体配置文件struts-config.xml:

代码:

1.配置actionForm

 

  1. <form-beans> 
  2.   <form-bean name="" type=""> 
  3.   form> 
  4. form-beans> 

 

 

2.配置action

 

  1. <action-mappings> 
  2.     <action path="/emp" parameter="" type="action类/代理"> 
  3.     action> 
  4.  action-mappings> 

 

 

说明:/emp jsp页面中action 的 emp.do? 代理类:type="org.springframework.web

.struts.DelegatingActionProxy"

4:配置spring的applicationContext.xml

添加了spring支持的主要特点是IOC(控制反转,依赖注入),AOP(面向切面编程)大大降低

层与层之间的耦合度。就关系的事务了。要做的***件事就是换文件头子。

1)换文件头子

 

  1. xml version="1.0" encoding="UTF-8"?> 
  2.   <beans xmlns="http://www.springframework.org/schema/beans" 
  3.  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
  4.  xmlns:util="http://www.springframework.org/schema/util" 
  5.  xmlns:p="http://www.springframework.org/schema/p" 
  6.  xmlns:aop="http://www.springframework.org/schema/aop" 
  7.  xmlns:tx="http://www.springframework.org/schema/tx" 
  8.  xsi:schemaLocation="  
  9.  http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd  
  10.  http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-2.0.xsd  
  11.  http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd  
  12.  http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd"> 

 

2)dao层bean已经自动生成了,需要创建一下bean。

  1.  如:  
  2.  <bean id="tsaleformService" class="com.service.TSaleformServiceImpl"> 
  3.      <property name="tsaleformDAO" ref="TSaleformDAO">property> 
  4.      <property name="tsDetail3DAO" ref="TSaleformDetailDAO">property> 
  5.  bean> 
  6.     如:  
  7.  <bean name="/emp" class="com.struts.action.SaleformShowAction"> 
  8.      <property name="itSaleformService" ref="tsaleformService">property> 
  9.  bean> 
  10.  
  11.  
  12.    
  13.  <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"> 
  14.     <property name="sessionFactory" ref="sessionFactory">property> 
  15.  bean> 
  16.  

说明:sessionFactory 是自动生成的下面bean id.

  1. <bean id="sessionFactory" 
  2.   class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> 
  3.   <property name="configLocation" 
  4.    value="classpath:hibernate.cfg.xml"> 
  5.   property> 
  6.  bean> 
  7.  
  8.     <tx:advice id="mycy"> 
  9.       <tx:attributes> 
  10.          <tx:method name="*"/> 
  11.       tx:attributes> 
  12.     tx:advice> 
  13.    
  14.  
  15.    <aop:config> 
  16.          <aop:advisor advice-ref="mycy" pointcut="execution(* com.service.*.*(..))"/> 
  17.    aop:config> 

 

 

 

 

说明:com.service.*.*(..) com包下.service业务层包下.所有类.所有方法(..)

 

5: 现在该配置DWR了配置文件 dwr.xml。

1)将

文件打开 配置为:

 

  1. "-//GetAhead Limited//DTD Direct Web Remoting 2.0//EN"  
  2.   "dwr20.dtd">     

说明:就是将"dwr20.dtd" 中前面那段"http:...dwr20.dtd" 什么的剪切掉 剩下就"dwr20.dtd"就ok

2)

  1. <dwr> 
  2.        <allow> 
  3.           <convert match="com.pojos.*" converter="bean">convert> 
  4.           <create javascript="myjs" creator="spring"> 
  5.             <param name="beanName" value="tsaleformService">param> 
  6.           create> 
  7.        allow> 
  8.     dwr> 

 

 

 

说明:需导入dwr.dtd 文件用于提示用,记得话 不要当然没问题

com.pojos.* 所有pojo类 , converter="bean" 固定的,bean 也可以换成hibernate,

javascript="myjs" 是自定义的,creator="spring" 固定的,param name="beanName"固

定的,value="tsaleformService"中 tsaleformService 是applicationContext.xml中

下面的对应的业务层bean 的id 如上id。

第三步:现在就关系到如何进行DWR测试。在浏览器中在工程名下直接/dwr .dwr 是刚才在web.xml

中所配置的映射名 如上:dwr。

测试成功将会出现你的自定义 "myjs" 链接 。进入就可进行测试业务层事务了.

这段总结是我在一个上午总结的总结的不是很专业、很全,我也是带着复习的心情边开着电脑对着源码思索一步步、一个个字

打出来的!希望对有需要的人有所帮助,与人同乐就是我最大的快乐。

很高兴跟大家互相关注,打算在把ssh2的一些地方整理下。

编辑推荐】

  1. 使用MyEclipse整合SSH模式:登陆范例
  2. 通过SSH在位于F5后面的SUSE Linux上配置jdk和tomcat
  3. MyEclipse构建SSH框架浅析
  4. 简单介绍jBPM与SSH的完整实例
  5. MyEclipse真的整合了SSH吗?
责任编辑:金贺 来源: JavaEye博客
相关推荐

2014-07-31 11:40:08

ssh

2016-12-02 08:51:05

AlphaGo大数据技术

2012-05-25 10:41:33

StrutsDWRJava

2011-06-09 15:44:29

Spring

2009-06-02 14:09:37

myeclipse smyeclipse开发myeclipse

2015-05-11 16:16:45

TeradataQueryGrid

2009-08-14 09:40:55

MyEclipse整合

2010-07-01 14:42:16

SSH协议

2012-05-03 10:13:56

FlexSSHJava

2013-09-05 09:37:49

2011-08-30 15:11:21

密码SSH服务器

2010-04-26 00:30:36

等开销负载均衡

2010-01-13 10:29:51

CentOS配置ssh

2015-04-23 15:34:15

RSA大会RSA2015安全大会

2011-03-21 14:30:45

LAMPApachePHP

2021-05-13 21:51:38

鸿蒙HarmonyOS应用

2022-09-05 08:03:28

MySQL崩溃恢复

2012-09-19 15:06:45

Lucene

2012-11-01 14:03:49

Teradata 大数据天睿

2015-10-22 12:53:53

Teradata
点赞
收藏

51CTO技术栈公众号