java应用:在Struts2下的应用配置

ZDNet软件频道 时间:2008-10-15 作者: |  我要评论()
本文关键词:Struts Java
目前可以通过对Struts2的过滤请求范围进行修改,可以避免造成这种情况发生,以下是详细介绍产生的现象及修改方法。

  一、前言

  信息化在不断发展,相应的开发工具也在不断的改进升级,在Java方面,Struts2是一个新的优秀的Web框架,它结合了Struts和xWork两种框架的优点,使程序员开发及后期维护效率都大大提高,随着它的应用越来越广泛,客户在集成金格控件时会出现客户端请求被过滤的现象,这时需要对Struts2配置文件等做相应修改就可以了。

  二、原因及解决方法

  产生这种情况的原因可能是:金格控件服务器端组件采用了封装好了的服务器组件,Java中如iWebOffice是已编译好的iMsgServer2000.class文件,asp等采用的是iMsgServer2000.dll组件,由于类似组件都封装了由客户端发送的请求对象(request)以及有些组件对响应对象(response)的处理,对该对象的一些独立操作可能与Struts2请求响应处理机制产生了冲突,因而被Struts2过滤器拦截了。

  目前可以通过对Struts2的过滤请求范围进行修改,可以避免造成这种情况发生,以下是详细介绍产生的现象及修改方法。

  2.1修改Web.XML配置文件

  1)在未对该配置文件做修改前,原文件中Struts2设置如下:

  通过“/*”这样的设置将会对客户端发送过来的所有请求都进行处理,当客户端发送这样的请求如iWebOffice示例中的控件的WebUrl属性指定的服务器处理程序时,会出现如下图所示的错误:

(图2-1:未知路径错误)

  2)对Web.xml配置文件中Struts2过滤范围进行修改,修改内容如下:

  通过将过滤的请求范围设置为“*.action”及“*.jsp”,Struts2过滤器只会过滤以这两个为后缀的请求,大家此时一定会奇怪,为什么连对jsp页面的请求也要过滤,以下我详细说明下。

  客户在使用Struts2框架时,有些页面引用了Struts2标签,类似如下:

  如果不通过Struts2过滤“*.jsp”请求,页面中引用的Struts2标签库就得不到Struts2框架的支持,该页面也将无法识别,会产生如下图错误:

  但过滤了该请求又会产生一个新的问题,由于我们的示例后台处理程序大多是由jsp页面来完成的,如iWebOffice中由OfficeServer.jsp页面来处理,所以请求类似页面时同样会出现(图2-1)一样的错误,目前的解决办法是将此类页面改成Servlet来处理,下面会详细介绍。

  2.1修改后台处理程序页面

  以下详细介绍对iWebOffice示例中使用的OfficeServer.jsp页面的修改。

  1)新建一个Java类, 将OfficeServer.jsp中“<%! %>”标记内的全部内容拷到该ja

  va类中,如下所示:

  由于内容太长,这里只显示部分,这样做相当于是将原页面中的处理程序封装成了一个JavaBean,然后可以通过一个Servlet类来处理该JavaBean。

  2)新建一个Servlet类,引用上面的Java类,如下所示:

  通过以上两步设置,客户端可以通过访问该Servlet来实现控件与后台的交互操作。

  另外iWebOffice示例中对印章的添加页面(/Signature/SignatureAdd.jsp)也引用了已编译好的iFileUpLoad2000.class文件,也会产生(图2-1)的错误,用户可以参考上面对OfficeServer.jsp页面的修改也将其改为Servlet形式处理,在此不做详细介绍。

  三、总结

  通过以上的介绍,可以很好的解决这个问题,用户在Struts2环境下使用金格其它控件如果也出现类似问题,可以参考本文来解决,如还有问题请与金格联系。

  希望本文可以给每位使用金格iWebOffice系列控件的朋友带来帮助。

我有话要说订阅RSS探客网资源腾讯微博

百度大联盟认证黄金会员Copyright© 1997- CNET Networks 版权所有。 ZDNet 是CNET Networks公司注册服务商标。
中华人民共和国电信与信息服务业务经营许可证编号:京ICP证010391号 京ICP备09041801号-159
京公网安备:1101082134