从Java 1.3开始,Java SDK就通过java.util.Timer
类提供了基本的调度功能。这个类允许你调度一个任务(通过java.util.TimerTask
子类定义)按任意周期运行。
扩展Spring——外部属性文件安全(一)
前言
在Spring的开发中,我们在很多情况下会使用占位符引用属性文件的属性值来简化我们的系统及使我们的系统具有更高的灵活性和通用性。这种配置方式有两个明显的好处:
- 减少维护的工作量:资源的配置信息可以多应用共享,在多个应用使用同一资源的情况下,如果资源的地址、用户名等配置信息发生了更改,你只要调整属性文件就可以了;
- 使部署更简单:Spring配置文件主要描述应用程序中的Bean,这些配置信息在开发完成后,应该就固定下来了,在部署应用时,需要根据部署环境调整是就是数据源,邮件服务器的配置信息,将它们的配置信息独立到属性文件中,应用部署人员只需要调整资源属性文件即可,根本不需要关注内容复杂的Spring配置文件。不仅给部署和维护带来了方便,也降低了出错的机率。
Tomcat5.5下的jndi的配置
JNDI是J2EE中一个很重要的标准,通常我们是在J2EE编程中用到,Tomcat中提供了在JSP和Servelt中直接使用JNDI的方法,主要是通过dbcp连接池,下面谈一下我在Tomcat5.5中配置和使用JNDI的方法。
Spring 事务简化配置
在 spring 中, 事务管理一般是通过声明一个 txProxyTemplate, 然后业务 bean 中 parent = “txProxyTemplate”, 这样做未免显得有些繁琐, 并且如果业务 bean 还需要其他拦截器, 配置也不太方便, 下面贴出我的配置, 用 DefaultAdvisorAutoProxyCreator 实现自动代理。
ThreadLocal的设计与使用(原理篇)
在jdk1.2推出时开始支持java.lang.ThreadLocal。在J2SE5.0中的声明为:public class ThreadLocal
Tomcat中使用Favicon
IE7中每个页面都有一个自己的图标,如果不自己制定的话,会变成tomcat的小猫咪。下面说一下怎么改掉这个小猫咪。
在每个页面的
<head></head>
里加入以下两行代码。1
2<link rel="icon" href="{contextPath}/favicon.ico" type="image/x-icon" />
<link rel="shortcut icon" href="{contextPath}/favicon.ico" type="image/x-icon" />这里的
{contextPath}
是你的站点的名字,所以这里是绝对路径,如果我没有记错的话,在jsp中相对路径好像是不好用的。比如,网易的话,就应该是1
2<link rel="icon" href="http://www.163.com/favicon.ico" type="image/x-icon" />
<link rel="shortcut icon" href="http://www.163.com/favicon.ico" type="image/x-icon" />
在WebRoot下面,也就是网站的根目录下面放一个favicon.ico文件,这个文件必须是标准的ico文件。可以通过http://www.chami.com/html-kit/services/favicon/ 这个网站生成一个 ,大小是32x32的,如果你希望可以在IE6里表示出来的话,最好是16X16的,在5K以下,因为我们遇到如果用一个15k的文件,IE不能自动下载,必须手动键入favicon.ico的地址后,它才能表示出来。颜色的话,16色,256色都可以。保险一点就是16色,我用的是256色的。
有的网站说,这个文件必须叫”favicon.ico”,必须放在根目录下,要不然IE认不出来(别的浏览器可以),这个我没有试验过。
这个时候你在你的浏览器里敲入 http://localhost:8080/siteName/favicon.ico 的时候看到的将是一个小红叉。
要想摆脱小红叉就得靠这一步啦,在自己应用的web.xml或者tomcat的Conf下的web.xml中加入一下代码,然后重起tomcat。
1
2
3
4
5
6
7
8<session-config>
<session-timeout>60</session-timeout>
</session-config>
<mime-mapping>
<extension>ico</extension>
<mime-type>image/x-icon</mime-type>
</mime-mapping>
- 如果你还用了什么登陆的过滤,就是filter之类,别忘了把这个文件给解放出来。
- 清空IE的缓存,就清空文件就可以了。然后输入你的网址,当然这个时候你还看不见图标。关掉浏览器,在重新打开,在地址栏里,你就可以看到你的图标了。我们这里所指的浏览器是IE7,因为IE6必须得添加入收藏夹议后才能看到图标,而且只有添加的那个网址能看到,网站的其他页面都没有图标。查了一些资料,也没有解决这个问题。以后有时间在解决吧。
Acegi 组件概览
一、Filter 组件
HttpSessionContextIntegrationFilter
该Filter 负责每次请求从HttpSession中获取Authentication对象,然后把Authentication存于一个新的 ContextHolder对象(其实质上只是一个ThreadLocal对象)中,则让该次请求过程中的任何Filter都可以通过 ContextHolder来共享Authentication,而不需要从HttpSession中取,减少传HttpRequest参数的麻烦。在请求完后把Authentication对象保存到HttpSession中供下次请求使用,最后把刚才生成的ContextHolder对象销毁。这样就达到了让Authentication对象跨越多个请求的目的,注意此filter须在调用其他Acegi filter前使用。
1 | <bean id="httpSessionContextIntegrationFilter" class="org.acegisecurity.context.HttpSessionContextIntegrationFilter"> |
详解spring2.0的scope
如何使用spring的作用域
示例代码如下:
1 | <bean id="role" class="spring.chapter2.maryGame.Role" scope="singleton"/> |
这里的scope就是用来配置spring bean的作用域,它标识bean的作用域。在spring2.0之前bean只有2种作用域即:singleton(单例)、non-singleton(也称prototype), Spring2.0以后,增加了session、request、global session三种专用于Web应用程序上下文的Bean。因此,默认情况下Spring2.0现在有五种类型的Bean。
当然,Spring2.0对Bean的类型的设计进行了重构,并设计出灵活的Bean类型支持,理论上可以有无数多种类型的Bean,用户可以根据自己的需要,增加新的Bean类型,满足实际应用需求。