- 浏览: 3502473 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
wanglf1207:
EJB的确是个不错的产品,只是因为用起来有点门槛,招来太多人吐 ...
weblogic-ejb-jar.xml的元素解析 -
qwfys200:
总结的不错。
Spring Web Flow 2.0 入门 -
u011577913:
u011577913 写道也能给我发一份翻译文档? 邮件437 ...
Hazelcast 参考文档-4 -
u011577913:
也能给我发一份翻译文档?
Hazelcast 参考文档-4 -
songzj001:
DbUnit入门实战
引言:最近在看一个开源的聊天室AjaxChat 时看到一个被引用的包:javawebparts,处于好奇去看了一下,突然发现这么好的一个常用web组件不去用实在是太可惜了,下面逐一介绍,详细文档大家可以去官方文档看看,最好看它的Demo,很直观。
javawebparts的口号是:不用重新发明轮子 !
对这点我是严重支持啊,在我的身边看到N多所谓的牛人来到项目组作的第一件事就是把以前的项目推倒,重新实现自己的所谓一套先进的东西,靠,你有多先进啊,你的自己"方言"一边自我欣赏,一边还让别人接受,再来一个人又把这个推倒,循环。。。。无语.
所以,用开源吧 ,是不是绕的太远了? :) 让我们言归正传吧.
一。管理你的web配置文件信息
web的配置文件是我们经常要用到的,配置信息我们可以分为两大类,一类是最简单的"平板"型的,比如:
For an XML config file like this:
< firstName > Frank </ firstName >
</ config >
The following bean could be used:
private static String firstName;
public void setFirstName(String inFirstName) {
firstName = inFirstName;
}
public String getFirstName() {
return firstName;
}
}
在应用中你不用去自己解析xml了,javawebparts已经帮你做好了,你只要getFirstName()就可以了,是不是很方便?
你所要做的工作就是在web.xml中引用一个listener,配置如下:
< param-name > configFile </ param-name >
< param-value > /WEB-INF/app_config.xml < /param-value ></ context-param >
< context-param >
< param-name > rootElement </ param-name >
< param-value > config </ param-value > </ context-param >
< context-param >
< param-name > configClass </ param-name >
< param-value > javawebparts.sampleapp. SampleAppConfigBean </ param-value >
</ context-param >
< context-param >
< param-name > AjaxPartsTaglibConfig </ param-name >
< param-value > /WEB-INF/ajax_config.xml </ param-value >
</ context-param >
< listener >
< listener-class > javawebparts.listener. AppConfigContextListener </ listener-class >
</ listener >
这种平板型结构的数据这样就已经OK了,还有一种是复杂一点的,有层次结构,比如在Bean中可能还有collection,需要自己实现一下,也 不复杂直接调用apache的Digester就可以了(实际上在javawebparts到处都有Digester的影子),需要了解的请参看 用Digester解析xml到bean
二。缓存页面
比如,我想缓存所有的gif图片,但是jpg的不缓存,web.xml中配置如下:
< filter-name > CacheControlFilter </ filter-name >
< filter-class > javawebparts.filter. CacheControlFilter </ filter-class >
< init-param >
< param-name > pathSpec </ param-name >
< param-value > include </ param-value >
</ init-param >
< init-param >
< param-name > pathList </ param-name >
< param-value > */header1.gif, *.jpg </ param-value >
</ init-param >
</ filter >
< filter-mapping >
< filter-name > CacheControlFilter </ filter-name >
< url-pattern > /* </ url-pattern >
</ filter-mapping >
它的后台实现机制很简单,内部部分代码如下:
((HttpServletResponse)response).setHeader( " Cache-Control " ,
" no-cache,no-store,max-age=0 " );
((HttpServletResponse)response).setDateHeader( " Expires " , 1 );
三。图片压缩
是不是对gzip压缩很亲切? 对的,就是传说中可以压缩图片减少网络传输体积的玩意,现在你只要在web.xml中增加以下内容就可以轻松实现了:
< filter-name > CompressionFilter </ filter-name >
< filter-class > javawebparts.filter. CompressionFilter </ filter-class >
< init-param >
< param-name > pathSpec </ param-name >
< param-value > include </ param-value >
</ init-param >
< init-param >
< param-name > pathList </ param-name >
< param-value > */bigimage2.gif </ param-value >
</ init-param >
< init-param >
< param-name > compressType </ param-name >
< param-value > gzip_first </ param-value >
</ init-param >
</ filter >
< filter-mapping >
< filter-name > CompressionFilter </ filter-name >
< url-pattern > /* </ url-pattern >
</ filter-mapping >
上面的配置表示只对bigimage2.gif的文件进行压缩,其他不用,pathSpec的属性有两种include,exclude,意思已经 很明确了,相反地意思,而pathList得内部实现也是用正则表达式实现的,支持*等用法.这些内部实现你觉得复杂的话就不用管它了,反正人家已经给你 实现好了,你只要说"给我压缩'美女与野兽.JPG'"就可以了
四.控制只在设定的时间范围内访问应用
比如说只允许在工作时间内可以访问应用,其他时间禁止访问,虽然不是很普遍不过这种需求还是有的,如果自己实现还是比较麻烦的,我们用现成的,配置如下:(怎么都是配置阿?对,全部是配置就可以了,难道不好吗?太爽了啊,乖乖龙地动)
< filter-name > AppAvailabilityFilter </ filter-name >
< filter-class > javawebparts.filter. AppAvailabilityFilter </ filter-class >
< init-param >
< param-name > pathSpec </ param-name >
< param-value > include </ param-value >
</ init-param >
< init-param >
< param-name > pathList </ param-name >
< param-value > */AAFTestTarget.jsp </ param-value >
</ init-param >
< init-param >
< param-name > monday </ param-name >
< param-value > 0600-2359 </ param-value >
</ init-param >
< init-param >
< param-name > tuesday </ param-name >
< param-value > 0600-2359 </ param-value >
</ init-param >
< init-param >
< param-name > wednesday </ param-name >
< param-value > 0600-2359 </ param-value >
</ init-param >
< init-param >
< param-name > thursday </ param-name >
< param-value > 0600-2359 </ param-value >
</ init-param >
< init-param >
< param-name > friday </ param-name >
< param-value > 0600-2359 </ param-value >
</ init-param >
< init-param >
< param-name > saturday </ param-name >
< param-value > 0600-2359 </ param-value >
</ init-param >
< init-param >
< param-name > sunday </ param-name >
< param-value > 0600-2359 </ param-value >
</ init-param >
< init-param >
< param-name > redirectTo </ param-name >
< param-value > AAFReject.jsp < /param-value >
</ init-param >
< init-param >
< param-name > bypassCheckClass < /param-name >
< param-value > javawebparts.sampleapp. AAFBypassCheck </ param-value >
</ init-param >
</ filter >
< filter-mapping >
< filter-name > AppAvailabilityFilter </ filter-name >
< url-pattern > /* </ url-pattern >
</ filter-mapping >
上面的配置很明确了吧,表示在访问AAFTestTarget.jsp 文件的时候必须在设定的时间内,其他则无限制,很清楚了哦.
五。统一重定向
redirect或者forward大家都再熟悉不过了,不过这个是基于配置的,不用你写代码,比如,你希望在访问某个目录的时候自动重订向到其他文件,或者直接转到其他网站比如google.com,配置如下:
< filter-name > URLRedirectFilter </ filter-name >
< filter-class > javawebparts.filter.URLRedirectFilter </ filter-class >
< init-param >
< param-name > configFile </ param-name >
< param-value > /WEB-INF/redirect_config.xml </ param-value >
</ filter >
< filter-mapping >
< filter-name > URLRedirectFilter </ filter-name >
< url-pattern > /* </ url-pattern >
</ filter-mapping >
其中redirect_config.xml配置如下:
< redirect from ="*/app/redirect_test/*" to ="http://www.google.com" />
< forward from ="*/app/forward/test.htm" to ="/index.jsp" />
</ config >
很直观吧?凡是访问/app/redirect_test下的所有应用都重订向到google,太简单了,我就不多说了.
六.估算每个请求所花费的时间
这个对性能调整是很有好处的,性能的调整的前提是你了解你的系统的瓶颈在什么地方,更具体的说是你的应用哪些地方花费的资源较多,一个是监控sql 的执行情况,这里推荐jdbmonitor,大家可以去看看,另一种就是本文所说的查看每个请求的执行时间,他会告诉你本请求花费了多少秒,很直观了.
配置如下:
< filter-name > ElapsedTimeFilter </ filter-name >
< filter-class > javawebparts.filter.ElapsedTimeFilter </ filter-class >
< init-param >
< param-name > pathSpec </ param-name >
< param-value > include </ param-value >
</ init-param >
< init-param >
< param-name > pathList </ param-name >
< param-value > * </ param-value >
</ init-param >
</ filter >
< filter-mapping >
< filter-name > ElapsedTimeFilter </ filter-name >
< url-pattern > /* </ url-pattern >
</ filter-mapping >
上面的一个include ,一个pathList的*就代表了所有的应用都过滤,反之,你想暂时取消这个功能就直接把include换成exclude就行了
应用在启动后你直接观察后台日志就可以了,就这么就OK了,还要你做什么呢? 没有.
七.监控session的会话
经常碰到这样的一个情况,用户在登陆系统一段时间后session实效,但是他接着点击里面的连接,结果报异常,因为session里已经取不到数 据了,常常是空指针错误,在每一个页面里都进行这种低级问题的判断是很烦人的,现在我们有新的方式可以一次性解决所有的问题,还是一段简单的配置:
< filter-name > SessionInactivityFilter < /filter-name >
< filter-class > javawebparts.filter. SessionInactivityFilter </ filter-class >
< init-param >
< param-name > forwardTo </ param-name >
< param-value > /login.jsp < /param-value >
</ init-param >
</ filter >
< filter-mapping >
< filter-name > SessionInactivityFilter < /filter-name >
< url-pattern > /* </ url-pattern >
</ filter-mapping >
表示会话失效后直接重定向到登陆界面,让用户重新登陆.
八.控制访问应用的IP
出于安全考虑,过滤某些IP能或不能访问,配置如下:
< filter-name > IPAccessControlFilter </ filter-name >
< filter-class > javawebparts.filter. IPAccessControlFilter </ filter-class >
< init-param >
< param-name > pathSpec </ param-name >
< param-value > include </ param-value >
</ init-param >
< init-param >
< param-name > pathList </ param-name >
< param-value > */IACTestTarget.jsp </ param-value >
</ init-param >
< init-param >
< param-name > addressSpec </ param-name >
< param-value > include </ param-value >
</ init-param >
< init-param >
< param-name > addressList </ param-name >
< param-value > localhost </ param-value >
</ init-param >
< init-param >
< param-name > forwardTo </ param-name >
< param-value > /IACReject.jsp </ param-value > </ init-param >
</ filter >
< filter-mapping >
< filter-name > IPAccessControlFilter </ filter-name >
< url-pattern > /* </ url-pattern >
</ filter-mapping >
以上的配置效果就是只允许是从服务器上访问应用的来源(太苛刻了吧? :))
九.随机显示文字
比如每日一语,随机广告,很实用的,配置如下:
< servlet-name > TextReturnerServlet </ servlet-name >
< servlet-class > javawebparts.servlet. TextReturnerServlet </ servlet-class >
< init-param >
< param-name > order </ param-name >
< param-value > random </ param-value >
</ init-param >
< init-param >
< param-name > itemsFile </ param-name >
< param-value > /WEB-INF/text_returner_items.xml </ param-value >
</ init-param >
</ servlet >
< servlet-mapping >
< servlet-name > TextReturnerServlet </ servlet-name >
< url-
发表评论
-
字符串分割--java中String.split()用法
2013-03-06 14:25 74151在java.lang包中有String.sp ... -
用 HttpServletResponseWrapper 实现 Etag 过滤器
2012-07-09 16:58 3758原文出处:http://blog.chenlb.com/200 ... -
Fitnesse使用
2012-05-05 13:27 23494Fitnesse 的使用 一,介绍 Fitnesse是一种 ... -
Customizing the new FitNesse parser
2012-05-05 13:13 2134FitNesse began its life using ... -
java application中内嵌ActiveX控件
2011-11-14 15:57 5524我这里用的是SWT/JFace开发application,SW ... -
Google Java Developer Tools Downloads
2011-08-09 00:04 2346WindowBuilder Pro原来叫WindowB ... -
Jalita
2011-08-06 00:49 1565Jalita (Java light terminal ada ... -
【转】用Java写字符终端界面
2011-07-29 13:13 2121终端界面GUI开源项目charva。 这个框架让你可以用开发 ... -
[转]mybatis下的分页,支持所有的数据库
2011-07-21 13:21 14841大 家都知道,mybatis的自带分页方法只是逻 ... -
Java framework for text- & console-based forms?
2011-07-21 01:06 1711charva jcurses JNA , ... -
JNA(Java Native Access)学习入门
2011-07-21 01:04 22621Java Native Access 项目 在 ... -
JAVA上加密算法的实现用例
2011-06-25 12:38 4883来源:www.ibm.com ... -
如何将GlassFish作为Windows服务运行
2011-05-18 23:21 2374本文档来自GlassFish官方网站,详细介绍了将 G ... -
JAVA UDP打洞必备知识点---NAT
2011-05-05 12:56 8698一、引言 RFCl631 ... -
Keystore概念,Keytool工具使用
2011-04-28 16:20 2906近来由于项目需要做Single Sign On, 研究了一 ... -
利用Eclipse Profile Plugin监控分析Tomcat性能
2011-04-18 16:14 3702目前新版本的Eclipse在启动应用服务器的时候有一个新的选 ... -
m2eclipse: Eclipse is running in a JRE, but a JDK is required
2011-02-04 23:43 2541Eclipse 安装了Maven插件,启动Eclipse ... -
利用JNative实现Java调用动态库
2010-10-18 00:43 2099由于项目要求,需要用J ... -
RHEL5支持大内存
2010-10-08 16:19 3005安装 RHEL 5 ,硬件为 4G 内存,安装完成 ... -
Windows Server 2003 和 Windows 2000 提供大内存支持
2010-10-08 16:19 1854本文介绍物理地址扩展 ...
相关推荐
**Delphi Web前端开发教程——基于TMS WEB Core框架** Delphi Web前端开发教程是针对想要使用TMS WEB Core框架创建Web应用程序的开发者,无论你是初学者还是高级开发者,本教程都提供了丰富的学习资源。TMS WEB ...
韩啸、王瑞敬、刘健南编著的《ASP.NET Web开发学习实录(附光盘)》重点围绕Web开发,结合精选教学视频,全程推演ASENET 3.5应用开发的整个过程,引导读者深刻理解和掌握以ASP.NET从事Web应用开发所需要的基本知识和...
《Web开发敏捷之道:应用Rails进行敏捷Web开发(第3版)》:Ruby on Rails是一个全套的MVC web框架,它能帮你开发高质量又美观的web应用,而且开发速度快得出乎你想象。你只须集中精力于应用程序本身,Rails就会帮你...
Python Web开发是现代互联网应用构建的重要技术之一,它利用Python语言的强大功能和丰富的库资源,结合Web框架,如Django、Flask等,快速构建高效、可扩展的Web应用程序。"Python Web开发实录源代码"是针对这一主题...
《Python Web开发》这本书是为那些想要学习如何使用Python语言构建Web应用的初学者和开发者设计的。Python作为一门易学且功能强大的编程语言,在Web开发领域有着广泛的应用。本书内容详细,涵盖了一系列用于Web开发...
《Flask Web应用开发实战》是一本专注于使用Python的轻量级Web框架Flask进行Web应用开发的专业书籍。Flask以其简洁、灵活的特性,在Python Web开发领域深受开发者喜爱。这本书详细介绍了如何利用Flask构建功能完备的...
前段时间学习PHP 下了个PHP和MySQL Web开发(原书第4版)高清版,有将近200M,PDF文档不过没有书签,花了一天的时间将书签添加上去了,精确到了三级目录。 我没有权限上传200M的文件,所以放到百度空间了,下载后是...
因此,我将基于提供的标题《Python Web开发实战 董伟明》生成关于Python Web开发实战的相关知识点。 Python是一门广泛应用于Web开发的高级编程语言,其简洁的语法和强大的社区支持使得Python成为许多开发者构建Web...
由于Java Web开发技术大全pdf文件太大120多M,上传资源要求在20M以内,所以大家必须要把Java Web开发技术大全.z01,Java Web开发技术大全.z02,Java Web开发技术大全.z03,Java Web开发技术大全.z04,Java Web开发...
Java web开发技术教程课件—Java Web 开发工具.pdfJava web开发技术教程课件—Java Web 开发工具.pdfJava web开发技术教程课件—Java Web 开发工具.pdfJava web开发技术教程课件—Java Web 开发工具.pdfJava web开发...
Delphi Web 开发是利用Embarcadero Delphi这一强大的集成开发环境(IDE)进行Web应用程序构建的过程。Web Xone是Delphi中的一个框架或工具集,专为开发者提供了构建高性能、可扩展的Web应用程序的能力。它允许程序员...
《Tomcat与Java Web开发技术详解(第2版)》结合最新的Tomcat 6版本,详细介绍了开发Java Web应用的各种技术。主要内容包括:Tomcat和Java Web开发的基础知识、Java Web开发的高级技术、在Java Web应用中运用第三方...
Django Web开发指南 电子书 !
"阿里web前端开发手册" 阿里web前端开发手册是一份详细的前端开发规范,涵盖了项目命名、目录命名、JS、CSS、SCSS、HTML、PNG 文件命名等多个方面的命名规范。下面是本手册中的一些重要知识点: 1. 命名规范: 在...
本书手把手教你从头开始开发一个真正的Web应用,并且展示使用Python做测试驱动开发(TDD)的优势。你将学到如何在开发应用的每一个部分之前先编写和运行测试,然后再编写最少量的代码让测试通过。也就是说,你将学会...
《Tomcat与Java Web开发技术详解(第2版)》是一本深入探讨Java Web应用程序部署和运行环境的权威指南。本书主要围绕Apache Tomcat服务器展开,涵盖了从基础概念到高级特性的全方位讲解,旨在帮助读者掌握Java Web...
JAVA web开发技术教程源码 张娜主编 供同学们参考使用。
大华网络摄像机的WEB二次开发包是一款专为开发者设计的工具,旨在帮助用户通过Web接口自定义和扩展大华网络摄像机的功能。这个开发包包含两种版本的SDK(Software Development Kit),确保开发者可以根据自己的需求...
常用web开发工具 SQL数据库文件.zip常用web开发工具 SQL数据库文件.zip常用web开发工具 SQL数据库文件.zip常用web开发工具 SQL数据库文件.zip常用web开发工具 SQL数据库文件.zip常用web开发工具 SQL数据库文件.zip...
标准的核心内容,来源于社会对Web前端开发职业活动质量的要求,是衡量从业者(包括正在接受教育与培训的准从业者)胜任Web前端开发工作的基本尺度和规范,能够反映当下时期内Web前端开发职业教育的人才培养质量规格。