基于XML与FILTER的WEB访问

时间:2022-10-02 11:06:18

基于XML与FILTER的WEB访问

摘要:WEB应用程序除了通过自身提供的菜单或者是按钮进行WEB页面的流转外,还可以通过URL输入框进行页面的流转。这种现象为WEB应用程序的设计带来了一定的难度,处理不当将会出现意想不到的错误。该文通过使用java servlet过滤器技术,xml文档,实现对WEB页面的访问控制,可以有效解决上述问题。

关键词:java servlet;过滤器;自定义标签;xml

中图分类号:TP311文献标识码:A 文章编号:1009-3044(2009)36-10587-03

Controlling WEB by XML and FILTER

ZHANG Qing-hui1, LI Hai-tao2

(munication Department of Naval Headquarters, Beijing 100841, China; 2.Department of Naval Logistical, Beijing 100841, China)

Abstract: This is a direction that Application was deployed in WWW. But, there is very much difference in the form of accessing between Web application and local application. The main difference is that Web application which can be called by inputting URL in browse. Programmer should consider these factors. If did not consider it, it would cause any trouble. The essay introduce some method about servlet filter and xml document, will resolve the question.

Key words: Java servlet; fliter; self-definition tag of jsp; Xml

目前,基于Web客户端的主要任务是展现信息内容,而HTML语言则是信息展现的最有效载体之一。最初的HTML语言只能在浏览器中展现静态的文本或图像信息,人们对信息丰富性和多样性的需求。由静态技术向动态技术的转变成为了Web客户端技术演进的永恒定律。

当动态网页技术发展成熟以后,人们对WEB应用程序的要求越来越复杂,从而导致了WEB应用程序的软件架构越来越复杂,这时产生新的问题DDWEB应用程序的访问控制。本文只对最基本的页面之间的流转进行控制,而对用户权限相关的访问控制不做介绍。因为可以从最基本的页面流转的控制中发现用户权限的控制只是它的一个子集,当WEB应用程序的访问控制设计的足够灵活(与其它功能之间足够松耦合),就可以修改它,从而达到实现用户权限的访问控制。

1 流行的WEB应用程序访问控制

流行的WEB应用程序访问控制可以依赖在每个页面(如jsp,asp,php)或者是服务器边代码(如 servlet)中加入访问控制代码对其进行控制[1]。这种访问控制的缺点显而易见,就是和非访问控制功能代码联系过于紧密,从而导致访问控制代码的可维护性和通用性低下。随着应用程序功能的增加,这种缺陷更加明显。针对当前的访问控制可以得到以下的结论[2]:

1) 访问控制的粒度大小与应用程序的复杂度呈正比;

2) 访问控制的代码与应用程序的非访问控制代码的关系密切,可维护性和可重用性差;

3) 访问控制的真正实现可能牵涉太多的应用模型,导致学习成本的提高 [3]。

2 XML构成WEB应用程序页面模型

2.1 XML实现树型结构

XML(Extensible Markup Language,可扩展标记语言),是一种用系统无关的方式表示数据的结构化语言。xml文件包括三部分:XML声明、处理指令(可选)、XML元素。XML文档的一个基本要求是结构良好的(well formed),一个结构良好的XML文档要包含这三个部分[4]。下面对XML进行简单介绍:

1) XML声明形式 处理指令以结束。在

2) 处理指令是用来给处理XML文件的应用程序提供信息的。所有的处理指令应该遵循下面的格式 ,规则与XML声明形式相同。

3) XML元素是XML文件内容的基本单元。所有的XML元素应该遵循下面的格式 数据内容,元素里还可以再嵌套元素,实现循环嵌套。最外层的元素称为根元素。一个xml文档只能有一个根元素。

可以看出,XML是个结构良好的树型层次。那么,将web应用程序的页面之间相互链接用XML表示就成了顺理成章的事情了。当树型模型被建立后,接下来就是要解决访问模型的途径了。本文将通过介绍JAXP(java api for xml processing)实现对XML进行访问。

2.2 JAXP 解析 XML

Jaxp是java 操作xml 文档的工具,其建立在sax和dom(document object model)解析器的基础之上,自身并不解析xml,仅仅是调用上述解析器去实现解析功能。其目的在于使jaxp的代码与特定的xml解析器无关,易于移植。由于web应用程序访控制的性质决定了将会频繁访问该xml文档,所以本文将采用以dom解析器为基础的jaxp api 处理xml文档[5]。

Dom文档对象模型是一个普通的树状结构。每个节点来自于xml文档的一个元素(包含其它元素)或文本(不包含其它元素或xml标记)。我们利用jaxp中的相关api将xml文件转换成dom 对象,便于使用其它java api 去访问整个dom 对象。过程如下:

1) 导入相关的java api,主要包括:

javax.xml.parsers.DocumentBuilder;

javax.xml.parsers.DocumentBuilderFactory;

org.w3c.dom.Document;

2) 将xml文档转换成dom 对象:

//生成工厂类

DocumentBuildeFactory

factory=DocumentBuildeFactory. newInstance();

//实例化一个dom解析器

DocumentBuilde builder= factory.new Docum- entBuilder();

//将xml文档解析成dom对象

Document document=builder. Parse(“xml文档路径”);

3) dom对象在访问控制中的匹配过程:

//访问dom对象中的子元素

Element elements=document getDocumentElement ();

//获得将匹配的元素中所有节点

NodeList nodelists=get ElementsByTagName(“匹配元素名称”);

//匹配父节点名称是否存在于本节点允许范围内

Node nodes;

目前为止,已经可以使用xml文档代表一个web应用程序的结构关系了。并且也实现了如何匹配一个父节点链接到本节点合法性判断问题。其具体设计流程如下所述:

1) web应用程序结构示例

如图1所示,web应用程序结构一般存在四个页面,index是启动页面,pageA只存在一个父页面(index);pageB存在二个父页面(index、pageC);pageC存在二个父页面(index、pageB)。

2) 根据web应用程序结构建立xml文档

/

index

index

pageC

index

pageB

3 filter实现web应用程序访问控制

Filter(过滤器)是一个程序,它先于与之相关的servlet或JSP页面运行在服务器上。过滤器可附加到一个或多个servlet或JSP页面上,并且可以检查进入这些资源的请求信息。

3.1 filter 的实现

在java web service中实现一个filter必须执行以下基本步骤:

1) 建立一个实现Filter接口的类。这个类需要三个方法,分别是:doFilter、init和destroy。

2) doFilter方法包含主要的过滤代码,init方法建立设置操作,而destroy方法进行清除。在doFilter方法中放入过滤行为。doFilter方法的第一个参数为ServletRequest对象。此对象给过滤器提供了对进入的信息(包括表单数据、cookie和HTTP请求头)的完全访问。第二个参数为ServletResponse,通常在简单的过滤器中忽略此参数。最后一个参数为FilterChain,如下一步所述,此参数用来调用servlet或JSP页[6]。

3) 调用FilterChain对象的doFilter方法。Filter接口的doFilter方法取一个FilterChain对象作为它的一个参数。在调用此对象的doFilter方法时,激活下一个相关的过滤器。如果没有另一个过滤器与servlet或JSP页面关联,则servlet或JSP页面被激活。

4) 对相应的servlet和JSP页面注册过滤器。在部署描述符文件(web.xml)中使用filter和filter-mapping元素。

3.2 将xml和filter集成

将xml转换成document对象的代码放入filter 接口中的init方法中,init方法仅仅执行一次,直到服务器关闭为止。再将dom 对象的匹配过程放在dofilter方法中,当匹配成功,就流转到既定页面;反之,流转到默认出错页面。逻辑过程如图2所示。

通过xml和filter的集成,对于web应用程序的访问控制就可以实现。当web应用程序的访问规则方式变化时,只要对xml文档中的内容进行相应的修改即可。在文章开始时就提到关于身份用户权限相关的访问控制是web应用程序页面访问控制的一个子集,如何实现用户的权限呢?其实也只要修改xml文档的形式即可。

4 结论

Xml和filter技术相当成熟,通过二者的集成,就可实现对程序的控制。本文对web应用程序的访问控制提出了应用级的解决方案,随着对访问控制的要求不断增加,应该把filter中的控制程序提取出来,形成应该业务类,而在filter中仅仅对业务类进行相应的调用,这时,关于本文说阐述的web应用程序访问控制才形成模块。可以看出,做为一个良好的模块,应该将xml文档根据需求进行更详细的划分,使其不仅在访问控制模块中发挥作用,而且在用户管理方面也发挥作用,最终将web应用程序系统管理彻底与业务管理分割开来。

参考文献:

[1] 武孟军.简单网络管理协议(SNMP)[M].北京:人民邮电出版社,2006.

[2] 张楠,张振国.客户端/服务器模式中传输层协议的比较与选择[J].网络与通信,2006,22(9-3):200-202.

[3] 王绍斌,王昭顺.信息系统攻击与防御[M].北京:电子工业出版社,2007.

[4] 尹建璋.无线局域网网络安全措施改进[J].计算机工程与设计,2008,29(11):2745-2747.

[5] 栾昌海.异构网络下的Web监控系统设计研究[J].微计算机信,2008,24(7-3):81,101-102.

[6] 吴媛,陈正军,李雄德.基于SNMP校园网网络管理系统设计与实现[J].电脑知识与技术:学术交流,2009,5(15):3925-3926.

上一篇:浅谈基于Flex技术的RIA设计 下一篇:基于Excel的学生考勤管理应用