控制动态servlet图形处理(1)

servlet|动态|控制|图形

控制世界—或者至少控制您的图像

作为一名站点开发人员或页面作者,迎合所有这些喜好是很困难的。要手工执行该工作,必须将站点上的每个图像转换成您的网站支持的图像大小。然后,需要调整站点上每个页面中的图像标记,使每个标记都正确地反映图像的大小。不能只更改 HTML img 标记的宽(width)和高(height),而不更改图像:这会导致低带宽用户下载大的图像,并在客户机端重新调整它的大小。如果提供了八个常用的图像大小,很容易可以看到每个图像将如何需要八个缩放大小,以及每个页面将如何需要八个版本的图像标记。这类图像管理很乏味而且容易出错,很简单地就能明白为什么大多数网站都不提供多个图像大小。

问题不在于技术:使用 Java 编程将图像转换成各种大小或格式是很容易的。问题也不在于服务:使用 Web 服务器定制页面以满足个别读者的需要是很常见的。相反,问题在于以易于部署和管理的形式组合技术和服务。

本文推荐了一种解决方案,使用 JavaServer Pages(JSP)标记管理您的图像。例如,不是象下面那样,在 HTML 中编码图像标记,并且为每个图像大小提供多个版本:

<img src="http://www.163design.net/j/f/images/LazyDog.jpg" width="800" height="600" >

提供一个可根据读者首选项自动调整图像大小的标记更有意义,如下所示:

<util:imagesizer src="http://www.163design.net/j/f/images/LazyDog.jpg"/>

让读者从许多大小中选择并且让他们的首选项影响站点上的所有图像,这是可能的,如图 1 中的样本浏览器图像所示。插入宽和高属性,并且消除手工编辑这些标记的苦差事也是可能的。

图 1. 带有图像首选项的示例 JSP 页面(笑一个)

可能您以前从未看到过JSP定制标记,让我们简单地研究一下本示例中的语法。JSP定制标记看上去非常象 HTML 标记,但有下列区别:

有一个由标记开发人员创建的标记名 imagesizer。

标记有一个前缀 util,它将标记集组合成库,这非常类似于 Java 编程中的包名。您可以创建新的前缀,或者使用与库一起提供的缺省名。

该标记拥有一个新的类似 XML 的结束标记“/>”。

与 HTML 标记一样,JSP 标记可以拥有任意数量的属性,如这里显示的 src 属性,它们可以包含主体,主体中可包含其它标记。由于我们正在模仿 HTML 的 img 标记,所以我们的 JSP 图像缩放标记将没有主体。

当 JSP 页面使用定制 image-sizer 标记时,标记的 Java 实现找到图像文件,将其转换成合适的大小(在这一过程中可能会添加版权或水印徽标),然后将图像提供给读者。该标记使站点管理器不必在发布前转换图像。它还简化了编写 Web 页面的工作,因为处理许多图像大小首选项只需要一个页面。最后,也是最重要的,为您的所有站点图像提供这类灵活性将赢得读者的青睐。

Web 服务器上在发生什么

本节提供了一个高级别视图,介绍了当客户机(读者使用的 Web 浏览器)访问提供 JSP 页面的站点时幕后在发生什么。有三种常见的交互,如图 2 所示:

图 2. Web 客户机和服务器之间的交互

在第一种情形中,假定浏览器只请求静态文档,如 HTML 文件或图像文件。服务器在它的文件空间中找到资源,然后将文件提供给浏览器。请求文档和响应请求是在 HTTP 中定义的,HTTP 构成了因特网上客户机/服务器交互的基础。Web 服务器完整地处理请求,无需与 servlet 容器或 Web 应用程序服务器进行交互。

在第二种情形中,假定浏览器请求包含 Java servlet 的 Web 资源。Java servlet 使 Web 服务器能够在服务器上使用 Java 编程语言执行任务。servlet 很有效,与旧有的技术(如公共网关接口(CGI)、服务器端 JavaScript)相比,使用的内存和处理能力更小。servlet 比其它技术更具有可移植性,因为许多 Web 服务器 — 如 IBM WebSphere Application Server(Application Server)和 Apache Tomcat 都支持 servlet 容器,而 servlet 容器可以在许多不同的平台上运行相同的 servlet。最后,由于 Java 语言的内在安全性(如健壮的异常处理和细颗粒度安全性),错误的 servlet 很少会影响到 Web 服务器。如图 2 所示,Web 服务器搜索适当的 servlet,如有必要则编译 servlet 源代码,然后将 servlet 的处理结果返回给请求者。经常被请求的 servlet 会高速缓存在服务器的内存中。

在第三种情形中,假定浏览器请求包含 JSP 页面的 Web 页面。JSP 页面有助于简化显示信息的任务,并且有助于将动态内容(实时生成的)与静态页面分隔开。Web 页面设计人员象使用 HTML 库中的任何其它标记一样使用 JSP 标记。JSP 程序员遵循 JSP 编程规范,并且按照其约定实现标记。

下一节阐述了如何实现图像缩放 JSP 标记,以及如何编写 JSP 页面。从 Web 容器的观点来看,JSP 页面与 Java servlet 是密切相关的。Web 容器将基于文本的 JSP 页面转换成(每页转换一次)其 Java 实现。Web 容器寻找 Java 实现,将该实现看成 Java servlet,运行代码并将处理结果返回给客户机。这些看上去好象有很多层和重定向,但是对于用户而言,分派是快捷和透明的。象 servlet 一样,经常被请求的 JSP 页面也高速缓存在服务器的内存中。

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索图像
, servlet
, 服务器
, 页面
, 图像编程
, 标记
大小
动态代理servlet、servlet 动态注册、j2ee 动态创建servlet、动态添加servlet、servlet中文乱码处理,以便于您获取更多的相关知识。

时间: 2024-11-02 04:09:30

控制动态servlet图形处理(1)的相关文章

控制动态servlet图形处理(2)

servlet|动态|控制|图形 编写定制 JSP 标记 既然明白了 Web 服务器是如何处理 JSP 页面请求的,那么让我们研究一下如何实现定制 JSP 标记.注:JSP 标记既来自标准库(如 Java Standard Template Library,JSTL),也来自您自己编写的库(也称为定制标记).通常,定制标记处理特殊的问题领域.对本文而言,我们在处理如何管理图像.目前,Java 2 Extended Edition(J2EE)V1.2 和 V1.3 使用 JSP 规范 V1.2.在

使用jsp:include控制动态内容的方法_JSP编程

本文实例讲述了使用jsp:include控制动态内容的方法.分享给大家供大家参考,具体如下: 清单 1. JSP include 伪指令 <![CDATA[ <%@ page language="java" contentType="text/html" %> <html> <head> <title>newInstance.com</title> <meta http-equiv="

JSP 最佳实践:用 jsp:include 控制动态内容

include|js|动态|控制 本文是 Java"知情人士"Brett McLaughlin 继第一篇 JSP 最佳实践文章后的后续文章,在文中,作者向您演示了如何扩展 JSP 技术中用于动态内容的包含功能.了解静态 include 伪指令和动态 jsp:include 元素之间的差异,搞清楚如何混合搭配这二者以获取最优性能.在新的 JSP 最佳实践系列的前一篇文章中,您了解了如何使用 JSP include 伪指令将诸如页眉.页脚和导航组件之类的静态内容包含到 Web 页面中.和服

JSP最佳实践: 用jsp:include控制动态内容

简介:本文是 Java Brett McLaughlin 继第一篇 JSP 最佳实践文章后的后续文章,在文中,作者向 您演示了如何扩展 JSP 技术中用于动态内容的包含功能.了解静态 include 伪指令和动态 jsp:include 元素之间的差异,搞清楚如何混合搭配这二者以获取最优性能. 在新的 JSP 最佳实践系列的前一篇文章中,您了解了如何使用 JSP include 伪指令将诸如页眉.页 脚和导航组件之类的静态内容包含到 Web 页面中.和服务器端包含一样,JSP include 伪

Jsp &amp;amp; Servlet 会话控制

js|servlet|控制 Jsp & Servlet 会话控制 作者:guipei 前言作为J2EE的重要组成部分的jsp和servlet规范中,会话(session)处理占有非常重要的位置.目前,很多资料都非常详细的讲解了会话跟踪如何处理.但是,针对会话控制却很少有人涉及,原本在servlet规范中,servlet提供了HttpSessionContext接口处理会话控制功能,但是,在Servlet API 2.1以后,这个功能被取消了,参考原文(As of Java(tm) Servlet

控制共享库的符号可见性(一) 符号可见性简介

什么是符号和符号可见性 符号是谈及对象文件.链接等内容时的基本术语之一.实际上,在 C/C++ 语言中,符号是很多用户定义的变量.函数名称以 及一些名称空间.类/结构/名称等的对应实体.例如,当我们定义非静态全局变量或非静态函数时,C/C++ 编译器就会在对象文 件中生成符号,这些符号对于链接器(linker)确定不同模块(对象文件.动态共享库.可执行文件)是否会共享相同的数据或 代码很有用. 尽管变量和函数都可能会在模块之间共享,但是对象文件之间的变量共享更为常见.例如,程序员可能会在 a.c

servlet+jsp+java实现Web 应用

用java来构建一个web应用是特别容易的事情,jsp和php很像,可以嵌套在html中.程序的结构很简单,也很清楚,本文主要记录下大概的开发过程和环境的搭建. 环境搭建 下载: eclipse  tomcat eclipse tomcat 插件 开发过程 1.建立一个Dynamic Web Project 2.创建一个欢迎页面 页面可以是jsp/html,我们选择一个jsp页面(放在WebContent内) <%@ page language="java" contentTyp

解决Linux动态库版本兼容问题

说道"动态库版本兼容",很多人头脑中首先蹦出的就是"Dll Hell".啊,这曾经让人头疼的难题.时至今日,这个难题已经很好地解决了. 在进一步讨论之前来思考一个问题:Linux下为什么没有让人头痛的"DllHell"?回答这个问题,非常easy,因为--Linux下根本没有dll! 哈哈,当然这只是个玩笑,接下来展开一下这个话题,很多有动态库的系统都会面临这个难题,但各自解决的思路却各不相同. Dll hell是指windows 上动态库新版本

在Linux上将视频转换成动态gif图片

虽然曾经被认为是过时的艺术形式,但动态GIF图片现在复苏了.如果你还没有留意到,不少在线分享和社交网络网站都开始支持动态GIF图片,例如,Tumblr,Flickr,Google+和Facebook的部分地方.由于在消费和共享上的容易,GIF的动画已经成为主流互联网文化的一部分了. 所以,你们中的一些人会好奇怎样才能生成这样的动态GIF图片.已经有各种各样专门用来生成动态GIF图片的在线或离线工具.另一种选择是创建一副动态GIF图片时关闭现有的视频剪辑.在这个教程中,我会描述在Linux上如何将