web开发的瑞士军刀 javawebparts

引言:最近在看一个开源的聊天室AjaxChat 时看到一个被引用的包:javawebparts,处于好奇去看了一下,突然发现这么好的一个常用web组件不去用实在是太可惜了,下面逐一介绍,详细文档大家可以去官方文档看看,最好看它的Demo,很直观。

javawebparts的口号是:不用重新发明轮子 !

header1.gif

对这点我是严重支持啊,在我的身边看到N多所谓的牛人来到项目组作的第一件事就是把以前的项目推倒,重新实现自己的所谓一套先进的东西,靠,你有多先进啊,你的自己"方言"一边自我欣赏,一边还让别人接受,再来一个人又把这个推倒,循环。。。。无语.

所以,用开源吧 ,是不是绕的太远了? :) 让我们言归正传吧.

一。管理你的web配置文件信息

web的配置文件是我们经常要用到的,配置信息我们可以分为两大类,一类是最简单的"平板"型的,比如:

For an XML config file like this:

< config >
< firstName > Frank </ firstName >
</ config >



The following bean could be used:

public   class  MyConfigBean {
private   static  String firstName;
public   void  setFirstName(String inFirstName) {
firstName 
=  inFirstName;
}
public  String getFirstName() {
return  firstName;
}
}

在应用中你不用去自己解析xml了,javawebparts已经帮你做好了,你只要getFirstName()就可以了,是不是很方便?

你所要做的工作就是在web.xml中引用一个listener,配置如下:

 

< context-param >
< 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 >
< 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( " Pragma " " No-cache " );
((HttpServletResponse)response).setHeader(
" Cache-Control " ,
" no-cache,no-store,max-age=0 " );
((HttpServletResponse)response).setDateHeader(
" Expires " 1 );

 

三。图片压缩


是不是对gzip压缩很亲切? 对的,就是传说中可以压缩图片减少网络传输体积的玩意,现在你只要在web.xml中增加以下内容就可以轻松实现了:

 

< filter >
< 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 >
< 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 >
< 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配置如下:

 

< config >
< 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 >
< 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 >
< 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 >
< 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 >
< 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-
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
毕业设计,基于SpringBoot+Vue+MySQL开发的海滨体育馆管理系统,源码+数据库+毕业论文+视频演示 本基于Spring Boot的海滨体育馆管理系统设计目标是实现海滨体育馆的信息化管理,提高管理效率,使得海滨体育馆管理工作规范化、高效化。 本文重点阐述了海滨体育馆管理系统的开发过程,以实际运用为开发背景,基于Spring Boot框架,运用了Java技术和MySQL作为系统数据库进行开发,充分保证系统的安全性和稳定性。本系统界面良好,操作简单方便,通过系统概述、系统分析、系统设计、数据库设计、系统测试这几个部分,详细的说明了系统的开发过程,最后并对整个开发过程进行了总结,实现了海滨体育馆相关信息管理的重要功能。 本系统的使用使管理人员从繁重的工作中解脱出来,实现无纸化办公,能够有效的提高海滨体育馆管理效率。 关键词:海滨体育馆管理,Java技术,MySQL数据库,Spring Boot框架 本基于Spring Boot的海滨体育馆管理系统主要实现了管理员功能模块和学生功能模块两大部分,这两大功能模块分别实现的功能如下: (1)管理员功能模块 管理员登录后可对系统进行全面管理操作,包括个人中心、学生管理、器材管理、器材借出管理、器材归还管理、器材分类管理、校队签到管理、进入登记管理、离开登记管理、活动预约管理、灯光保修管理、体育论坛以及系统管理。 (2)学生功能模块 学生在系统前台可查看系统信息,包括首页、器材、体育论坛以及体育资讯等,没有账号的学生可进行注册操作,注册登录后主要功能模块包括个人中心、器材管理、器材借出管理、器材归还管理、校队签到管理、进入登记管理、离开登记管理、活动预约管理。
毕业设计,基于SpringBoot+Vue+MySQL开发的学科竞赛管理系统,源码+数据库+毕业论文+视频演示 随着国家教育体制的改革,全国各地举办的竞赛活动数目也是逐年增加,面对如此大的数目的竞赛信息,传统竞赛管理方式已经无法满足需求,为了提高效率,竞赛管理系统应运而生。 本学科竞赛管理系统以实际运用为开发背景,基于Spring Boot框架、Vue框架,运用了Java语言和MySQL数据库进行开发设计,充分保证系统的安全性和稳定性。本系统界面良好,操作简单方便,通过系统概述、系统分析、系统设计、数据库设计、系统测试这几个部分,详细的说明了系统的开发过程,最后并对整个开发过程进行了总结,实现了学科竞赛管理的重要功能。 本学科竞赛管理系统运行效果稳定,操作方便、快捷,界面友好,是一个功能全面、实用性好、安全性高,并具有良好的可扩展性、可维护性的学科竞赛管理平台。 关键词:学科竞赛管理,Java语言,MySQL数据库,Vue框架 此学科竞赛管理系统的设计与实现功能分析主要分为管理员功能模块和学生功能模块两大模块,下面详细介绍这两大模块的主要功能: (1)管理员:管理员登陆后可对系统进行全面管理,管理员主要功能模块包括个人中心、学生管理、教师管理、赛项信息管理、赛项报名管理、奖项统计管理、管理员管理以及系统管理,管理员实现了对系统信息的查看、添加、修改和删除的功能。 (2)学生:学生进入本学科竞赛管理系统的设计与实现前台可查看系统信息,包括首页、赛项信息以及新闻资讯等,注册登录后主要功能模块包括个人中心和赛项报名管理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值