月份:2013年4月

web工程中web.xml启动顺序

先贴上几个配置文件说明一下:
web.xml配置文件

Filter类:

Listerer类

启动后的控制台的打印结果是这样的:
EventListener 初始化
filter 初始化
xnbing,zhangbing

所以可以得到下边的结论:
加载顺序与它们在 web.xml 文件中的先后顺序无关。即不会因为 filter 写在 listener的前面而会先加载 filter。最终得出的结论是:ServletContext-> listener ->filter -> servlet

如果存在这样一种配置节:context-param,它用于向 ServletContext提供键值对,即应用程序上下文信息。我们的 listener, filter 等在初始化时会用到这些上下文中的信息,那么context-param 配置节是不是应该写在 listener 配置节前呢?实际上 context-param配置节可写在任意位置,因此真正的加载顺序为:context-param -> listener-> filter -> servlet
其中, 如果 web.xml 中出现了相同的节点, 则是按照在配置文件中出现的先后顺序来加载的。

可以参考下边两篇文章来看其他具体的细节配置:
http://www.cnblogs.com/JesseV/archive/2009/11/17/1605015.html
http://blog.csdn.net/hongshan50/article/details/7335443

tomcat 6.X配置druid连接池

首先将用到的jar包拷贝到tomcat目录中的lib文件夹中,这里只用到了druid和mysql的驱动包
接着在tomcat的conf/context.xml添加下边的代码

接着在web工程的web.xml中添加下边的代码(我尝试注释了,没对工程产生什么影响,),至于要不要添加:
大家参考下边几个链接:
http://www.cjsdn.net/post/print?bid=2&id=92936
http://baike.baidu.com/view/1002825.htm
http://www.blogjava.net/xzclog/archive/2006/08/10/62796.html
web.xml配置

接着写一个servlet尝试测试下:

PS:连接池不能写成下边这样的格式去获取连接,刚开始尝试在main方法里边写,每次都报空指针的错误,应该是不能获取web应用的一些元素吧

log4j.properties 使用说明

(1) [ 配置日志级别和输出源 ]
log4j.rootLogger = 级别,输出源1,输出源2 … …
日志信息优先级别 : ALL < TRACE < DEBUG < INFO < WARN < ERROR < FATAL < OFF 常用优先级别 : DEBUG < INFO < WARN < ERROR - DEBUG : 程序的调试信息 - INFO : 程序的一般信息,例如,用户的登录、登出,方法执行成功信息等 - WARN : 程序的警告信息 - ERROR : 程序的严重错误信息,例如,程序的执行抛出异常 只有当日志信息的优先级别大于等于配置的日志信息级别,日志信息才会被记录到日志。 日志输出源 : - 日志输出源的个数可以是一个,也可以是多个,多个输出源的时候,输出源与输出源之间用逗号分隔 - 日志输出源的名字可以根据需要,自定义起名 (2)[ 指定输出源辅助类 ] log4j.appender.输出源名称 = Appender.class 常用的 Appender ( 在 log4j-version.jar 的 org.apache.log4j 包下 ) : 1. org.apache.log4j.FileAppender(文件) 2. org.apache.log4j.ConsoleAppender(控制台) 3. org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件) 4. org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件) (3) [ 指定输出源文件存放路径 ] log4j.appender.输出源名称.file = path ( 日志具体存放路径 ) (4) [ 指定输出源文件的格式布局 ] log4j.appender.输出源名称.layout = Layout.class 常用的 Layout ( 在 log4j-version.jar 的 org.apache.log4j 包下 ) : 1. org.apache.log4j.SimpleLayout ( 简单的布局方式,含日志信息的级别和信息 ) 2. org.apache.log4j.PatternLayout ( 可自定义的布局模式 ) 3. org.apache.log4j.HTMLLayout ( 以 HTML 方式布局 ) (5)[ 自定义布局模式,可选 ] log4j.appender.输出源名称.layout.conversionPattern 控制台选项 Threshold=DEBUG:指定日志消息的输出最低层次。 ImmediateFlush=true:默认值是true,意谓着所有的消息都会被立即输出。 Target=System.err:默认情况下是:System.out,指定输出控制台 FileAppender 选项 Threshold=DEBUF:指定日志消息的输出最低层次。 ImmediateFlush=true:默认值是true,意谓着所有的消息都会被立即输出。 File=mylog.txt:指定消息输出到mylog.txt文件。 Append=false:默认值是true,即将消息增加到指定文件中,false指将消息覆盖指定的文件内容。 RollingFileAppender 选项 Threshold=DEBUG:指定日志消息的输出最低层次。 ImmediateFlush=true:默认值是true,意谓着所有的消息都会被立即输出。 File=mylog.txt:指定消息输出到mylog.txt文件。 Append=false:默认值是true,即将消息增加到指定文件中,false指将消息覆盖指定的文件内容。 MaxFileSize=100KB: 后缀可以是KB, MB 或者是 GB. 在日志文件到达该大小时,将会自动滚动,即将原来的内容移到mylog.log.1文件。 MaxBackupIndex=2:指定可以产生的滚动文件的最大数。 log4j.appender.A1.layout.ConversionPattern=%-4r %-5p %d{yyyy-MM-dd HH:mm:ssS} %c %m%n 日志信息格式中几个符号所代表的含义: -X号: X信息输出时左对齐; %p: 输出日志信息优先级,即DEBUG,INFO,WARN,ERROR,FATAL, %d: 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss,SSS},输出类似:2002年10月18日 22:10:28,921 %r: 输出自应用启动到输出该log信息耗费的毫秒数 %c: 输出日志信息所属的类目,通常就是所在类的全名 %t: 输出产生该日志事件的线程名 %l: 输出日志事件的发生位置,相当于%C.%M(%F:%L)的组合,包括类目名、发生的线程,以及在代码中的行数。举例:Testlog4.main (TestLog4.java:10) %x: 输出和当前线程相关联的NDC(嵌套诊断环境),尤其用到像java servlets这样的多客户多线程的应用中。 %%: 输出一个"%"字符 %F: 输出日志消息产生时所在的文件名称 %L: 输出代码中的行号 %m: 输出代码中指定的消息,产生的日志具体信息 %n: 输出一个回车换行符,Windows平台为"\r\n",Unix平台为"\n"输出日志信息换行 可以在%与模式字符之间加上修饰符来控制其最小宽度、最大宽度、和文本的对齐方式。如: 1)%20c:指定输出category的名称,最小的宽度是20,如果category的名称小于20的话,默认的情况下右对齐。 2)%-20c:指定输出category的名称,最小的宽度是20,如果category的名称小于20的话,"-"号指定左对齐。 3)%.30c:指定输出category的名称,最大的宽度是30,如果category的名称大于30的话,就会将左边多出的字符截掉,但小于30的话也不会有空格。 4)%20.30c:如果category的名称小于20就补空格,并且右对齐,如果其名称长于30字符,就从左边较远输出的字符截掉。 二.文件配置Sample1 log4j.rootLogger=DEBUG,A1,R #log4j.rootLogger=INFO,A1,R # ConsoleAppender 输出 log4j.appender.A1=org.apache.log4j.ConsoleAppender log4j.appender.A1.layout=org.apache.log4j.PatternLayout log4j.appender.A1.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss,SSS} [%c]-[%p] %m%n # File 输出 一天一个文件,输出路径可以定制,一般在根路径下 log4j.appender.R=org.apache.log4j.DailyRollingFileAppender log4j.appender.R.File=blog_log.txt log4j.appender.R.MaxFileSize=500KB log4j.appender.R.MaxBackupIndex=10 log4j.appender.R.layout=org.apache.log4j.PatternLayout log4j.appender.R.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} [%t] [%c] [%p] - %m%n 下面给出的Log4J配置文件实现了输出到控制台,文件,回滚文件,发送日志邮件,输出到数据库日志表,自定义标签等全套功能。

贴上一个转载的别人的log4j的配置文件

oracle回收站管理<转>

临时记在记事本上,所以给忘记从哪转来的
——————————————-
oracle10g,在pl/sql中选中删除后会出现类似:BIN$nJ5JuP9cQmqPaArFei384g==$0的表。
1.查看回收站
select * from user_recyclebin;
2.清空回收站
purge recyclebin;
3.清空回收站中的某个表
–如下方式删除会提示:SQL命令未正确结束。
purge table BIN$/UpBuh+LQ9yZGN95BFsk5Q==$0
–正确写法如下:
purge table “BIN$/UpBuh+LQ9yZGN95BFsk5Q==$0”;
–如下方式删除会提示:SQL命令未正确结束。
drop table BIN$/UpBuh+LQ9yZGN95BFsk5Q==$0
–而如下这样写,则会提示:无法对回收站中的对象执行DDL/DML。
drop table “BIN$0iJ7/rWFQrSGdZexvGv3qQ==$0”
4.恢复回收站
FLASHBACK TABLE “BIN$0iJ7/rWFQrSGdZexvGv3qQ==$0” TO BEFORE DROP
这是10g 的新特性
在10g中,如果启用flash drop功能,在drop表时,数据库不会直接删除,而是将其放在回收站中,当空间出现短缺时,才会逐渐回收这部分空间。
bin$表示表放在了回收站,你想要的话还可以找回来
删除的话一个方法是直接删delete tanle bin$…..;
另一种方法就是使用 purge table table_name;
drop table时, 不产生他们,修改你的drop语句

写成 :
DROP TABLE TABLE_NAME PURGE ;
转载:
以前只知道Windows有个回收站,今天听说Oracle也有个回收站!
在Oracle中可能不小心会DROP掉一个表,如果没有定期做备份的话,将会带来很大的麻烦。如果有的情况下,每天的数据都很重要,而定期备份的周期又稍长,情况恐怕也不容乐观!
不过还好Oracle有个回收站,概念就跟Windows里的回收站一模一样。
比如有以下误操作:
DROP TABLE drop_test;
这个时候再用SELECT语句查询此表时,将会提示表或视图不存在。但可以用如下语句查询到这个表还在Oracle回收站中:
SELECT * FROM user_recyclebin WHERE original_name=‘drop_test’;
那么现在就可以用如下语句进行恢复:
FLASHBACK TABLE drop_test TO BEFORE DROP
但是,要注意的是,如果用toad工具进行鼠标操作,即右键drop table时,如果选择了purge选项,那么就是永久性删除,在oracle的回收站也不会存在了,所以在进行表的删除的时候一般不要选择该选项,除非你很肯定该表不再使用。

jsp页面的一些头文件

做个标记记住这些头文件