`

Java Web Parts (JWP)

阅读更多
引言:最近在看一个开源的聊天室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>configFileparam-name>
<param-value>/WEB-INF/app_config.xml< /param-value>context-param>
<context-param>
<param-name>rootElementparam-name>
<param-value>configparam-value> context-param>
<context-param>
<param-name>configClassparam-name>
<param-value>javawebparts.sampleapp. SampleAppConfigBeanparam-value>
context-param>
<context-param>
<param-name>AjaxPartsTaglibConfigparam-name>
<param-value>/WEB-INF/ajax_config.xmlparam-value>
context-param>

<listener>
<listener-class>javawebparts.listener. AppConfigContextListenerlistener-class>
listener>

这种平板型结构的数据这样就已经OK了,还有一种是复杂一点的,有层次结构,比如在Bean中可能还有collection,需要自己实现一下,也不复杂直接调用apache的Digester就可以了(实际上在javawebparts到处都有Digester的影子),需要了解的请参看 用Digester解析xml到bean

二。缓存页面

比如,我想缓存所有的gif图片,但是jpg的不缓存,web.xml中配置如下:

 

<!----><filter>
<filter-name>CacheControlFilterfilter-name>
<filter-class>javawebparts.filter. CacheControlFilterfilter-class>
<init-param>
<param-name>pathSpecparam-name>
<param-value>includeparam-value>
init-param>
<init-param>
<param-name>pathListparam-name>
<param-value>*/header1.gif, *.jpgparam-value>
init-param>
filter>

<filter-mapping>
<filter-name>CacheControlFilterfilter-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>CompressionFilterfilter-name>
<filter-class>javawebparts.filter. CompressionFilterfilter-class>
<init-param>
<param-name>pathSpecparam-name>
<param-value>includeparam-value>
init-param>
<init-param>
<param-name>pathListparam-name>
<param-value>*/bigimage2.gif param-value>
init-param>
<init-param>
<param-name>compressTypeparam-name>
<param-value>gzip_firstparam-value>
init-param>
filter>

<filter-mapping>
<filter-name>CompressionFilterfilter-name>
<url-pattern>/*url-pattern>
filter-mapping>

上面的配置表示只对bigimage2.gif的文件进行压缩,其他不用,pathSpec的属性有两种include,exclude,意思已经很明确了,相反地意思,而pathList得内部实现也是用正则表达式实现的,支持*等用法.这些内部实现你觉得复杂的话就不用管它了,反正人家已经给你实现好了,你只要说"给我压缩'美女与野兽.JPG'"就可以了

四.控制只在设定的时间范围内访问应用

比如说只允许在工作时间内可以访问应用,其他时间禁止访问,虽然不是很普遍不过这种需求还是有的,如果自己实现还是比较麻烦的,我们用现成的,配置如下:(怎么都是配置阿?对,全部是配置就可以了,难道不好吗?太爽了啊,乖乖龙地动)

 

<!----><filter>
<filter-name>AppAvailabilityFilterfilter-name>
<filter-class>javawebparts.filter. AppAvailabilityFilterfilter-class>
<init-param>
<param-name>pathSpecparam-name>
<param-value>includeparam-value>
init-param>
<init-param>
<param-name>pathListparam-name>
<param-value>*/AAFTestTarget.jsp param-value>
init-param>
<init-param>
<param-name>mondayparam-name>
<param-value>0600-2359param-value>
init-param>
<init-param>
<param-name>tuesdayparam-name>
<param-value>0600-2359param-value>
init-param>
<init-param>
<param-name>wednesdayparam-name>
<param-value>0600-2359param-value>
init-param>
<init-param>
<param-name>thursdayparam-name>
<param-value>0600-2359param-value>
init-param>
<init-param>
<param-name>fridayparam-name>
<param-value>0600-2359param-value>
init-param>
<init-param>
<param-name>saturdayparam-name>
<param-value>0600-2359param-value>
init-param>
<init-param>
<param-name>sundayparam-name>
<param-value>0600-2359param-value>
init-param>
<init-param>
<param-name>redirectToparam-name>
<param-value>AAFReject.jsp< /param-value>
init-param>
<init-param>
<param-name>bypassCheckClass< /param-name>
<param-value>javawebparts.sampleapp. AAFBypassCheckparam-value>
init-param>
filter>

<filter-mapping>
<filter-name>AppAvailabilityFilterfilter-name>
<url-pattern>/*url-pattern>
filter-mapping>

上面的配置很明确了吧,表示在访问AAFTestTarget.jsp 文件的时候必须在设定的时间内,其他则无限制,很清楚了哦.

五。统一重定向

redirect或者forward大家都再熟悉不过了,不过这个是基于配置的,不用你写代码,比如,你希望在访问某个目录的时候自动重订向到其他文件,或者直接转到其他网站比如google.com,配置如下:

 

<!----><filter>
<filter-name>URLRedirectFilterfilter-name>
<filter-class>javawebparts.filter.URLRedirectFilter filter-class>
<init-param>
<param-name>configFileparam-name>
<param-value>/WEB-INF/redirect_config.xml param-value>
filter>

<filter-mapping>
<filter-name>URLRedirectFilterfilter-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>ElapsedTimeFilterfilter-name>
<filter-class>javawebparts.filter.ElapsedTimeFilter filter-class>
<init-param>
<param-name>pathSpecparam-name>
<param-value>includeparam-value>
init-param>
<init-param>
<param-name>pathListparam-name>
<param-value>*param-value>
init-param>
filter>

<filter-mapping>
<filter-name>ElapsedTimeFilterfilter-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. SessionInactivityFilterfilter-class>
<init-param>
<param-name>forwardToparam-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>IPAccessControlFilterfilter-name>
<filter-class>javawebparts.filter. IPAccessControlFilterfilter-class>
<init-param>
<param-name>pathSpecparam-name>
<param-value>includeparam-value>
init-param>
<init-param>
<param-name>pathListparam-name>
<param-value>*/IACTestTarget.jsp param-value>
init-param>
<init-param>
<param-name>addressSpecparam-name>
<param-value>includeparam-value>
init-param>
<init-param>
<param-name>addressListparam-name>
<param-value>localhostparam-value>
init-param>
<init-param>
<param-name>forwardToparam-name>
<param-value>/IACReject.jspparam-value> init-param>
filter>

<filter-mapping>
<filter-name>IPAccessControlFilterfilter-name>
<url-pattern>/*url-pattern>
filter-mapping>

以上的配置效果就是只允许是从服务器上访问应用的来源(太苛刻了吧? :))

九.随机显示文字

比如每日一语,随机广告,很实用的,配置如下:


<div style="BORDER-RIGHT: rgb(204,204,204) 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: rgb(204,204,204) 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: rgb(204,204,204) 1px solid; WIDTH: 98%; PADDING-TOP: 4px; BORDER-BOTTOM: rgb(204,204,204) 1px solid; BACKGROUND-COLOR
分享到:
评论

相关推荐

    jwp:下一篇 Java Web 编程

    2014年开发经验项目在本地开发环境启动Tomcat服务器后,可以访问查看问题列表。 ,解释源码的调用顺序和流程,直到出现问题列表。

    jwp-basic-201501:2015 第一学期 Java Web 编程基础

    1. 描述启动Tomcat服务器时初始化Web应用程序的过程。 2、Tomcat服务器启动后访问,说明调用顺序和流程。 7.解释为什么ListController和ShowController在多线程的情况下会出现问题。

    jwp-was-kakao

    Web应用服务器如何进行确定Web应用程序服务器要求。 在完成需求的实现之后,通过“拉取请求”(以下称为PR)请求代码复查到与您的github ID对应的分支。 努力改善代码审查反馈并再次推送。 完成所有反馈后,请执行下...

    jwp-spring:NEXT Spring 状态检查

    2、详细描述服务器启动时父ApplicationContext和子ApplicationContext是如何初始化的。 3.启动服务器后访问并尽可能详细地解释流程,直到显示问题列表。 9、UserService和QnaService中,多线程中哪个source容易出...

    JSPWiki 2.8.4 下载

    JSP(全称JavaServer Pages)是由Sun Microsystems公司倡导和许多公司参与共同创建的一种使软件开发者可以响应客户端请求,而动态生成HTML、XML或其他格式文档的Web网页的技术标准。JSP技术是以Java语言作为脚本语言...

    javaWebProject:jwp

    javaWebProject:jwp

    汇编语言指令大全

    提供汇编大部分的指令,方便开发人员和学习人员快速查找

    TOMCAT快速上手

    Tomcat 中配置一个Web应用 1 conf/server.xml 在&lt;host&gt;&lt;/host&gt;标记中间增加: “/runwit” docBase=“rwjsp”/&gt; 其中/runwit为自定义的web应用名称,rwjsp为目录:webapps/rwjsp 2 创建目录,编写测试文件test.jsp ...

    JWP:耶和华见证人出版物

    JWP 是一个面向耶和华见证人出版物读者的计划。 通过使用该程序,您将始终可以访问最新一期的《守望台》和《觉醒》杂志。 您将能够下载不同语言和不同格式(PDF、EPUB、MOBI、MP3、AAC)的出版物。 还可以从网站...

    Appium iOS驱动程序,由 Apple XCUITest 提供支持_JavaScript_代码_相关文件_下载

    Appium XCUITest Driver 是一个组合解决方案,它允许对 iOS 和 tvOS 原生应用程序和 WebKit Web 视图执行自动黑盒测试。...Web 视图通信仅支持过时的JWP 协议。 更多详情、使用方法,请下载后细读README.md文件

    jwp-basic-2015-reflection:T_T

    2. 描述启动Tomcat服务器时初始化web应用程序的过程。 3、Tomcat服务器启动后,说明访问时的调用顺序和流程。 10.解释为什么ListController和ShowController在多线程的情况下会出现问题。

    jwp-framework:基于框架的学习材料

    1、为什么next.dao.DBInitializer初始化数据库失败?2、详细描述服务器启动时父ApplicationContext和子ApplicationContext是如何初始化的。3.启动服务器后访问并尽可能详细地解释流程,直到显示问题列表。...

    jwp-was:애플리케이션

    애플리케이션 방법 。리케이션요구사항을다。 Request자신의브랜치에Request Request Request Request Request Request Request Request Request Request Request。。。。。...우아한테크코스코드리뷰

    jabdp快速开发平台-其他

    jabdp全名是JAVA敏捷业务开发平台(Java Agile Business Development Platform),是一款引擎模式的web快速开发平台,采用新颖的在线开发部署模式,配置式,低代码,使开发变得更加简单、纯粹,提高了开发的效率。...

    pdf转JPG软件无水印

    pdf转JPG软件无水印官方破解版,支持像素选择等

    jabdp快速开发平台 v1.0

    全名是JAVA敏捷业务开发平台(Java Agile Business Development Platform),是一款引擎模式的web快速开发平台,采用新颖的在线开发部署模式,配置式,低代码,使开发变得更加简单、纯粹,提高了开发的效率。...

    mPro:电影,产品,DVD,网络搜索结果,Watcha

    提供/推荐我所看电影的相关产品信息的Web服务 *它会加载并保存我在Watcher中观看的电影列表(按观看日期,最高星级评定的顺序),提供有关每部电影的相关产品(原始/ DVD /数字等)的信息,并推荐产品。 使用的API ...

    rtmp-player-test:演示 JWPye 纵横比错误

    jwp-方面错误 演示 JWPlayer 纵横比错误。

    TDD-practice-02-2015

    TDD-practice-02-2015 Jwp高级课程,一个练习TDD的项目(与byjo一起)

    wordpress-rest-admin:使用WP REST API和React的WordPress管理区域的前端。 它与自托管WordPress一起使用

    WordPress REST管理员 使用和的WordPress管理...确保您的wordpress中安装了WP REST API和JWP插件 WP REST API 请注意,WordPress(4.7或更高版本)默认情况下已安装了此工具 WP REST API的JWT身份验证 git clone和n

Global site tag (gtag.js) - Google Analytics