一种基于Struts技术的图片管理系统设计

2011-07-07 08:48
制造业自动化 2011年20期
关键词:应用服务视图组件

蒋 彭

(上海市静安区业余大学,上海 200040)

0 引言

商业需求刺激了现代信息技术的不断发展,并直接对各种基于web的应用服务产生了深远的影响。当前,在以信息技术运用为基础的现代业务运作模式中对WEB系统的依赖程度也在不断扩大,并且日趋复杂。一个健壮而高效的WEB应用服务系统不仅能为各种业务流程节省大量的人力和物力,同时也能为用户提供一个合理而有效的服务平台。

本文通过阐述一种基于Struts技术的图片管理系统的开发设计过程,介绍了在J2EE平台上进行WEB应用服务开发所涉及到的一些理论知识,并详细阐明了系统的设计过程,与实现的思路和具体算法。

1 相关概念

1.1 J2EE平台

J2EE表示企业版Java2平台,是使用Java技术开发企业级WEB应用的一种事实上的工业标准。通过这个平台可以将多种面向服务的应用都包含在一个框架中,也称之为容器,每个框架中又包含用于实现各种功能的若干组件。在J2EE中最常用的容器就是WEB容器或称为WEB服务器,里面最核心的两个组件就是JSP和SERVLET。而Struts就是基于这两种技术,依赖于WEB容器。

1.2 MVC

MVC是一种设计模式,利用应用服务器将应用的业务逻辑、表示逻辑和数据分为三个不同的处理层,即分为模型(Model)、视图(View)和控制器(Controller)三个部分。当客户端通过浏览器提交用户请求后,在MVC模式中由控制器接收用户动作,通过模型调用具体的业务逻辑进行数据处理,并将数据处理的结果以一个特定的视图格式在表示层中返回给用户。MVC模式的结构如图1所示。

图1 MVC模式的结构

模型包含应用程序的核心功能,封装了应用程序的状态,主要完成对数据的处理和计算操作。

视图提供了应用服务系统与用户交互的界面,呈现了数据处理的结果,在视图中只是作为一种输出数据并允许用户操纵的方式。

控制器对用户的输入做出反应,负责把用户的请求提交给相应的模型和将模型的改变及时反应到视图上,控制对用户输入的响应方式和流程。

1.3 Struts框架

Java开发WEB应用服务系统有多种符合MVC开发方式的组件及框架组合,在本项目中是使用JSP作为开发模型(Model),以Struts框架作为开发控制器(Controller),以Hibernate作为应用服务程序与用户交互的界面(View)。

Struts的核心是一个弹性的控制层,基于如Java Servlets,JavaBeans与XML等标准技术,以及Jakarta Commons 的一些类库。结合Struts框架的MVC模式处理过程是:其中控制器部分由Struts的ActionServlet 类和Action类来实现,在客户提交请求后,首先由前端控制器ActionServlet类接收,它将不同的请求传递给不同的后端控制器Action类来进行处理,请求的URL和后端控制器的映射关系在配置文件struts-config.xml中的〈action-mappings〉里面设置,并返回JSP类型的视图格式,Struts框架的结构如图2所示。

图2 Struts框架的结构

2 系统设计理念

系统主要是实现图片上传、编辑和展示的功能。其中图片展示模块主要实现在页面中按分类显示图片预览效果的功能,并可按照不同的分类订阅RSS,以供用户有选择性的订阅或浏览;图片管理模块包括图片的上传、图片缩略图编辑和组图编辑等功能。

2.1 系统界面设计

在整体显示界面布局设计中主要采用Struts中的Tiles框架来实现,Tiles框架为创建Web页面提供了一种模板机制,它能将网页的布局和内容分离。允许先创建模板,然后在运行时动态地将内容插入到模板中。与采用基本的JSP语言来创建Web页面相比,Tiles框架大大提高了视图层程序代码的可重用性、可扩展性和可维护性。

首先,定义模板文件,在模板文件要插入页面的地方加入〈tiles:insert〉标签并定义attribute属性,该属性指定了待插入内容的逻辑名,而没有指定真正被插入的文件。

其次,在专门的XML文件中配置Tiles 组件,这个文件位于WEB-INF目录下。在本项目中,该文件名为tilesDefinitions.xml。在配置文件中配置definition元素和put元素,对应模板文件和其下所定义的逻辑名。

最后,在web.xml配置文件中配置如下〈taglib〉元素:

〈taglib-uri〉/WEB-INF/struts-tiles.tld〈/tagliburi〉

〈taglib-location〉/WEB-INF/struts-tiles.tld〈/taglib-location〉

2.2 RSS功能实现

在系统设计中,选用了Sun公司所提供的开发组件Rome来实现符合RSS2.0标准的RSS功能。在RSS文档中,它的根元素是〈rss〉,并包含一个表示其版 本 的version属 性, 如:〈rss version="2.0"〉。整个 RSS 文档由包含在 〈rss〉 中的一个 〈channel〉元素及其子元素组成。除了频道内容本身之外,〈channel〉元素还以〈item〉项的形式包含表示频道元数据(metadata)的元素。〈item〉项通常是频道的主要部分,包含经常变化的内容。不论是在channel还是item中,都要包含以下三个必须的元素:〈title〉,频道或提要的名称;〈link〉,与之关联的 Web 站点或者站点区域的 URL;〈description〉,简要的介绍或描述。

根据上述描述,将图片的分类(category)对应RSS中的频道(channel),将组图(story)对应项(item),然后根据时间排列列出最新的6个组图数据进行输出。RSS最终聚合方式的实现方法是,在做struts跳转之前,通过servlet中response的getWriter()方法直接以XML的格式输出处理后的数据。

channel.setEncoding ("UTF-8"); //定义所生成的XML的字符集

channel.setTitle ("图片新闻网"); //设置title内容

channel.setDescription (dw.getCateName()); //设置Description内容

channel.setLink ("##"); //设置链接

2.3 图片编辑设计

在图片编辑设计中图片上传功能是通过struts框架中的FormFile组件实现的,它主要是基于apache的common-uploadfile工具包通过数据流的方式将数据传回服务器端。

在逻辑验证通过后,按照设定的算法将原始图片做成两张缩略图片,以供在组图和大图浏览时能以最佳的精度得以展示。

BufferedImage src = ImageIO.read (new File(srcImageFile)); //读入文件

BufferedImage tag = new BufferedImage (w, h,

BufferedImage.TYPE_INT_RGB); //创建指定尺寸的RGB模式图片对象

tag.getGraphics().drawImage (src,0,0,w,h,null);//根据原始图片开始绘制

File smallfile = new File (path);

ImageIO.write (tag, "jpg", smallfile); //写入图片

2.4 字符集设计

在面向Web系统的前台显示页面中,通常设置字符集为GB2312或GBK,而Java默认采用的是unicode编码,即UTF-8字符集,加之数据库也有字符集的设定,如果这三者之间不能统一或者相互转换,那么就会产生显示乱码的情况。

因此在本系统设计中加入过滤器(filter),通过在java端转换字符集,每当有request和response请求时,需要经过系统后台的java程序进行处理,强制转换所包含数据的字符集。

具体实现是通过StrutsFormUtil类,该类实现了Filter接口,通过读取配置的方式将数据转换成指定的字符集。

3 结论

Struts技术使用标记和 MVC模式提高了程序设计代码的可重用性和灵活性,使网页设计人员和程序开发人员能将精力集中于自己最擅长的方面。但是,在强健性增强的同时,也意味着复杂性的增加。Struts技术比简单的单个 JSP 网页要复杂得多,但对于更大的系统而言,Struts技术实际上有助于管理复杂性。

本文通过采用Struts技术进行图片管理系统设计过程的阐述,介绍了其中所运用到的相关框架、组件以及设计模式。从本文中可看出在J2EE平台下使用Struts技术,除了具有Java语言本身的优点外,还可以利用其中诸多功能丰富的组件,使其可以胜任企业级应用的复杂性和安全性的要求,Struts也可能会成为您下一个WEB项目中不可缺少的一部分。

[1] Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides. 设计模式[M]. 机械工业出版社, 2002.

[2] 孙卫琴. 精通struts [M]. 电子工业出版社, 2004.

[3] 孙卫琴. 精通hibernate [M]. 电子工业出版社, 2005.

[4] 曾顺. 精通JavaScript+jQuery[M]. 人民邮电出版社,2008.

[5] 刘润东. Object Design & Programming with UML[M]. 北京希望电子出版社, 2001.

[6] 谭颖华, 张云飞, 唐勇. Webwork inAction中文版[M]. 电子工业出版社, 2006.

猜你喜欢
应用服务视图组件
无人机智能巡检在光伏电站组件诊断中的应用
全球卫星互联网应用服务及我国的发展策略
新型碎边剪刀盘组件
U盾外壳组件注塑模具设计
国家不动产统一登记信息平台构建与应用服务
5.3 视图与投影
视图
Y—20重型运输机多视图
SA2型76毫米车载高炮多视图
全国征集卫星应用服务解决方案