断网了……
烟灰学程序一年多了……总在想,要是断网了,我怎么学习……
烟灰就怕断网,断网了,就得完蛋……
常用链接
我的随笔
我的评论
我参与的随笔
随笔分类
(22)
Struts2.1学习(2)
(rss)
Swing_UI开发进度(6)
(rss)
程序开发进度(14)
(rss)
随笔档案
(39)
2010年2月 (2)
2010年1月 (5)
2009年12月 (1)
2009年11月 (2)
2009年8月 (2)
2009年7月 (2)
2009年6月 (2)
2009年5月 (1)
2009年4月 (1)
2009年3月 (6)
2009年2月 (11)
2009年1月 (4)
相册
程序图片
搜索
积分与排名
积分 - 28267
排名 - 178
最新评论
1. re: windows server 2008 安装IIS7碰到的问题
啊啊
--放
2. re: 使用Filter进行非法访问拦截
很久的帖子了,非法访问可以用spring来解决@毕业生
--烟灰这名字被人抢了……
3. re: 使用Filter进行非法访问拦截
评论内容较长,点击标题查看
--毕业生
4. re: windows server 2008 安装IIS7碰到的问题
你这个文章可是帮了我大忙啊......
--myskysoft
5. re: Javascript Remote Object Invoker 6
博主很强大!不错!
--不锈钢水箱
6. re: Javascript Remote Object Invoker 6
恭喜了,向你学习!
--海鲜池
7. re: Javascript Remote Object Invoker 6
是大家看法是打开
--凡客诚品官方网站
8. re: Javascript Remote Object Invoker 2
是空间看时间的方式将
--久久书城
9. re: Javascript Remote Object Invoker 3
是看见的开发时间地方
--凡客诚品官方网
10. re: Javascript Remote Object Invoker 5
阿萨就是大海的
--淘宝网减肥药
阅读排行榜
1. 关于AlphaComposite的理解——Swing UI开发进度 (4885)
2. (转)JDBC与JNDI应用比较(2992)
3. 2009-2-6 再也再也不用JBuilder 搞开发了……(1566)
4. 使用Filter进行非法访问拦截(1546)
5. java LookAndFeel原理 ——Swing UI开发进度(1491)
6. 为了好看,自己做!——Swing UI 开发进度(1320)
7. windows server 2008 安装IIS7碰到的问题(1006)
8. 说说LookAndFeel的工作流程——Swing UI开发进度 (929)
9. 新的一个开始!——Swing UI开发进度 (843)
10. Javascript Remote Object Invoker 3(730)
评论排行榜
1. Javascript Remote Object Invoker 6(5)
2. 使用Filter进行非法访问拦截(4)
3. 关于AlphaComposite的理解——Swing UI开发进度 (3)
4. 2009-2-1 今天开始更新,之后会不断更新 又是一个通宵……(2)
5. 2009-2-6 再也再也不用JBuilder 搞开发了……(2)
6. java LookAndFeel原理 ——Swing UI开发进度(2)
7. 说说LookAndFeel的工作流程——Swing UI开发进度 (2)
8. (转)JDBC与JNDI应用比较(2)
9. windows server 2008 安装IIS7碰到的问题(2)
10. Javascript Remote Object Invoker 5(2)
Powered by:
博客园
模板提供:
沪江博客
IT博客
|
首页
|
发新随笔
|
发新文章
|
联系
| |
管理
使用Filter进行非法访问拦截
因为struts(不论2还是1)不支持,或者说我没找到拦截的方法
所以自己写了一个阻断器,用于阻断特定的网页,或者放过特定的网页访问
下面的附上使用指南
interdictor.xml
<?
xml version="1.0" encoding="UTF-8"
?>
<!
DOCTYPE struts PUBLIC
"-//JavaZone//DTD Interdictor Configuration 1.0//EN"
"interdictor.dtd"
>
<
interdictors
>
<!--
该锁将控制是否使用该interdict
并且该值只能使用boolean型值
当该值为true时,就进行全部放过操作
当该值为false时,就进行阻断操作
-->
<
lock-name
>
interdictLock
</
lock-name
>
<!--
配置debug输出
注意,
-->
<
debug
>
True
</
debug
>
<!--
阻断器配置
-->
<
interdictor
>
<!--
设置阻断器,阻断所有以.jsp为后缀的请求
请注意,必须使用.jsp而不是jsp因为当你拦截servlet的时候
你可以输入servlet作为后缀,所以本拦截机制不会给你默认添加.后缀
-->
<
interdict-suffix
>
.jsp
</
interdict-suffix
>
<
exclude-requests
>
<
request
>
homepage.jsp
</
request
>
<
request
>
login.jsp
</
request
>
<
request
>
register.jsp
</
request
>
<
request
>
index.jsp
</
request
>
<!--
<request>error/error.jsp</request>
-->
<
request
>
template/viewNotePlate.jsp
</
request
>
</
exclude-requests
>
<!--
exclude-requests和interdict-requests两个请求关系详细解释:
1.当阻断请求列表存在,而放过列表不存在时,将只阻断阻断请求列表中元素,而放过其余请求
2.当阻断请求列表不存在,而放过请求列表存在时,将只放过放过请求列表中元素,而阻断所有阻断元素
3.当两个列表都存在的时候,将阻断阻断请求列表中元素,并以放过请求列表中元素为更高权限
例如,两个列表中都有error.jsp,那么该请求将被放过
4.当两个列表都不存在时
注意:这里的所有url都是相对地址,都是危机basecontext之后的所有部分
-->
<
result-page
>
/error/error.jsp
</
result-page
>
<!--
阻断之后跳转的页面
这里是用于重定向的url
-->
</
interdictor
>
</
interdictors
>
interdictor.dtd
<!--
interdictor must is no less than one
-->
<!
ELEMENT interdictors (
lock-name?,
debug,
interdictor+
)
>
<!--
interdictor element
-->
<!
ELEMENT interdictor (
interdict-suffix,
interdict-requests?,
exclude-requests?,
result-page
)
>
<!--
the suffix of the request name
-->
<!
ELEMENT interdict-suffix (#PCDATA)
>
<!--
interdict request list
-->
<!
ELEMENT interdict-requests (
request+
)
>
<!--
excluded request list
-->
<!
ELEMENT exclude-requests (
request+
)
>
<!--
request element
-->
<!
ELEMENT request (#PCDATA)
>
<!--
the when interdict it will redirect to
-->
<!
ELEMENT result-page (#PCDATA)
>
<!--
this name is use in session to control interdictor
-->
<!
ELEMENT lock-name (#PCDATA)
>
<!--
if debug is true ,application will print the infomation on the console
-->
<!
ELEMENT debug (#PCDATA)
>
然后是web.xml
<!--
过滤加载器,防止非法.jsp后缀访问
-->
<!--
除了配置之外,添加自己的
-->
<
filter
>
<
filter-name
>
interdictorFilter
</
filter-name
>
<
filter-class
>
com.javazone.interdict.InterdictFilter
</
filter-class
>
<
init-param
>
<
param-name
>
configFileLocation
</
param-name
>
<
param-value
>
Interdictor.xml
</
param-value
>
</
init-param
>
</
filter
>
<
filter-mapping
>
<
filter-name
>
interdictorFilter
</
filter-name
>
<
url-pattern
>
/*
</
url-pattern
>
</
filter-mapping
>
说明:
1.lock-name是用于session级的锁操作,如果你想在程序里使用重定向,而又不希望下一个定位的网页被拦截掉,需要使用到该锁,具体操作如下
session.put(
"
interdictLock
"
, Boolean.TRUE);
2.注意url的书写正确性,否则会出现不可预知的错误
其他的。。。大家一起找bug,如果找到了就告诉我
这里是下载地址:
3.该阻断器filter配置一定要写到所有filter配置前面,否则起不到拦截的作用
http://www.cnitblog.com/Files/zcy860511/javazone.interdictor.rar
posted @
2009-08-08 13:30
烟灰这名字被人抢了…… 阅读(1546) |
评论 (4)
|
编辑
收藏
找了半小时的配置
如果使用Struts的拦截机制去拦截.jsp结尾的东东?
反正网上都用filter干,我觉得太麻烦,不可能Struts和webwork没有,所以我找了半个小时,终于在javaeye的博客上找到了这句话
<!--
为了让.jsp后缀也被Struts2拦截,需要修改默认的后缀拦截,增加对.jsp后缀的拦截
-->
<
constant
name
="struts.action.extension"
value
="action,jsp"
/>
辛苦啊。。
posted @
2009-08-05 00:34
烟灰这名字被人抢了…… 阅读(236) |
评论 (1)
|
编辑
收藏
我放弃了整合
我放弃了整合
不论从修改配置上还是从别的方法上,我只能做到卸载掉Flex Builder的CSS插件,但是,原本jee开发工具集中的css editor依旧不起作用了
我放弃,放弃
posted @
2009-07-30 04:13
烟灰这名字被人抢了…… 阅读(223) |
评论 (1)
|
编辑
收藏
关于Flex Builder 3插件的安装
网上的人都没动脑子,我发现安装的问题需要得到真正的解决
因为是一个完整版本的eclipse,所以必定含有许多不属于flex的插件
那么我们需要删除它们
比如jseclipse,比如其中也带有的wtp等等
只有adobe开头的才是真正的flex builder插件内容,一定要删除掉plugins和features中的非com.adobe开头的包以及文件夹
否则你的eclipse将启动得越来越慢
并且垃圾回收等等功能都将无法使用
posted @
2009-07-30 02:51
烟灰这名字被人抢了…… 阅读(588) |
评论 (1)
|
编辑
收藏
关于Struts2.1.6中的Type Convert
本文章适合初学类型转换的东西
首先是官方说的几个东西
首先是JSP页面的部分代码,当然也可以是HTML,反正是表示层的东西就对了
<
body
>
<
form
action
="convert"
>
用户名:
<
input
type
="user"
/>
</
form
>
</
body
>
然后是struts.xml中的配置,当然,官方说了,这个配置可以再web.xml中
<
struts
>
<
package
name
="test"
extends
="struts-default"
namespace
="/"
>
<!--
namespace默认是/,所以可以不写,不过我有这个习惯
-->
<
action
name
="convert"
class
="test.ConvertAction"
>
<
result
name
="success"
>
/Result.jsp
</
result
>
</
action
>
</
package
>
</
struts
>
然后我们需要一个叫做ConvertAction位于test包中的类
public
class
ConvertAction
implements
Action
{
private
User user
//这个对象的引用必须有setter和getter,因为我是手工硬编码,没有复制,所以就不累述了
public
void
setUser(User value)
{
this
.username
=
value;
}
public
User getUser()
{
this
.username;
}
public
String execute()
{
//
..Action我准备什么都不做
return
SUCCESS;
}
}
我们继续,之后是一个properties文件
ConvertActuin-conversion.properties
这个文件一定要放到ConvertAction所在的包里
命名的就不在这里累述了,因为不论不是李刚的书也好,Struts的指南也好都有讲,唯一区别就是前一个是中文,后一个是英文罢了
之后这个文件里我们需要添加一个属性
#这个TestConverter之后我会给出代码
username=test.TestConverter
package test;
/**
*这个类有几种写法,我也就不累述了
*/
public
class
TestConverter
implements
TypeConverter
{
public
Object convertValue(Map
<
String, Object
>
arg0, Object arg1,
Member arg2, String arg3, Object arg4, Class arg5)
{
return
new User()
;//这里只需要返回一个User对象就可以了,怎么处理是你的喜好
}
}
到此,我们的Converter就配置完了,那么我们可以进行一些测试了,唯一要注意的东西就是你的Action里应该有的username属性,因为这个属性的丢失会导致convertValue的不调用
------------------------------------------------------------------------------------------------------------------------------------
下面我说下我的总结
第一,在JSP也就是表示层必须有一个user属性
第二,在Action中必须有一个user
第三,在properties中必须有user的定义
为什么呢?原理是Struts在设置user时会去寻找properties文件,如果找到就进行转换,否则就直接赋值
posted @
2009-06-25 20:09
烟灰这名字被人抢了…… 阅读(583) |
评论 (0)
|
编辑
收藏
windows server 2008 安装IIS7碰到的问题
作为笔记吧。。。附带IIS 7安装的功能有一个windows 进程激活服务是罪魁祸首
如果在卸载掉IIS 7之后没有顺带卸载掉这个功能,那么,你将永远都装不上IIS 7
最后我将其卸载掉之后,再安装IIS 7就可以装上了,算是一个笔记吧
posted @
2009-06-05 22:12
烟灰这名字被人抢了…… 阅读(1006) |
评论 (2)
|
编辑
收藏
最近写项目研究了一下java com bridge(jacob)
其实对于java com bridge 在目前的应用看来多是对office进行直接操作
不过个人觉得从效率上来说非常不可取
当然可以考虑自己写JNI来实现对Office的操作,不过开发速度上就。。。。
其实poi是一个不错的项目,不过我不明白是不是因为office没开源的缘故,导致poi非常的不完善。。。等吧,或许以后的版本poi会有变化
posted @
2009-05-14 12:25
烟灰这名字被人抢了…… 阅读(559) |
评论 (0)
|
编辑
收藏
VolatileImage 加速绘制你的GUI
首先我要声明的是,在只绘制一次的情况下我们是看不出区别的
但是同一张图片绘制1000次就不同了
protected
void
paintPicture(Graphics2D g2d) {
if
(picture
!=
null
) {
Rectangle r
=
createModelRectangle();
render.setImage(picture);
painter.painted(g2d, r,
this
);
}
}
先讲解一下这段代码,这段代码中的render是一个图片绘制器,其中只有将图片呈现的代码,而这个render将这个方法交给painter调用
然后painter有使用VolatileImage和不使用VolatileImage绘制的方式选择
然后我们添加上测试数据
protected
void
paintPicture(Graphics2D g2d) {
if
(picture
!=
null
) {
Rectangle r
=
createModelRectangle();
render.setImage(picture);
long
a
=
System.currentTimeMillis();
for
(
int
i
=
0
; i
<
1000
; i
++
) {
painter.painted(g2d, r,
this
);
}
System.out.println(System.currentTimeMillis()
-
a);
}
}
窗口大小:500x370
以下是拖动窗口的时间,这些时间是交给SWING进行过优化的,当然,其中大的值比较真实
45
18
1
1
2
2
442
217
241
1
2
窗口大小:不变
不适用加速的绘制方式
62
33
1
1
2317
1143
2
2
很明显,速度上的变化
在JDK帮助中使用硬件加速基本上是不使用硬件加速的5倍能力
posted @
2009-04-11 14:04
烟灰这名字被人抢了…… 阅读(448) |
评论 (0)
|
编辑
收藏
声明,我发现一个逻辑错误 —— 上次的数据库连接问题
当监听关闭了连接之后该连接所创建的所有statement对象等都将失效。。。这是一个考虑的欠缺,以此更正
posted @
2009-03-27 17:16
烟灰这名字被人抢了…… 阅读(135) |
评论 (0)
|
编辑
收藏
基于Proxy的懒人数据库连接工程
不看代码了,我们看内存消耗以及CPU的使用情况
首先是一个使用Proxy委托,进行Connection行为拦截,并在其中建立了守护线程,进行监听,当空闲时间过长将对连接进行关闭,如果用户没有显示的调用close方法,而重新调用方法创建连接就重新建立连接
看下效果
测试使用检测为400毫秒,活动时间4000
ConnectionFactory factory
=
NormalConnectionFactory.getInstance(connStr);
Runtime r
=
Runtime.getRuntime();
long
im;
im
=
r.freeMemory();
Connection conn
=
factory.createConnection();
//
Connection conn1 = factory.createConnection();
//
Connection conn2 = factory.createConnection();
//
Connection conn3 = factory.createConnection();
//
Connection conn4 = factory.createConnection();
System.out.println((im
-
r.freeMemory())
/
1024
);
while
(
true
){
Thread.sleep(
3000
);
}
这是创建一个连接的结果(单位为KB)
886
OK,我们看下多几个连接的结果
1047
由此可以看出建立第一个连接花掉了大部分的内存,因为要加载类
使用一般只建立一个连接使用的内存
628
使用一般连接,建立5个连接
742
由此可以看出,内存的消耗是不可忽视的,但是这样有数据库的优化,因为老板一般不会购买好的数据库。。。so
下面看看cpu
第一是,我看不到CPU占用的情况,因为现在的CPU太强大,一直保持%0,那么我们只能看创建使用的时间
首先是创建300个连接用时
create start
6366
create over
create start
6519
create over
create start
6828
create over
连续的三次测试创建
下面是一般连接用时
create start
6748
create over
create start
6321
create over
create start
5960
create over
不得不说,创建一般连接用时上有一定的优势,但是使用守护线程的情况下,CPU的占用基本可以忽略
总结来说,这样的连接是有优势的
1.我们可以避免Close没有调用而带来的数据库风险
2.我们可以节约数据库的连接,如果配合数据库连接池使用那将对数据库的连接使用的更加合理
OK,等待数据库连接池写完之后,我会将这一块全部发出来
posted @
2009-03-26 22:56
烟灰这名字被人抢了…… 阅读(224) |
评论 (0)
|
编辑
收藏
仅列出标题
共4页:
1
2
3
4