﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>语源科技BlogJava-asdtiang-java-groovy-grails</title><link>http://www.blogjava.net/asdtiang/</link><description>asdtiang-java-groovy-grails study</description><language>zh-cn</language><lastBuildDate>Mon, 04 May 2026 21:45:53 GMT</lastBuildDate><pubDate>Mon, 04 May 2026 21:45:53 GMT</pubDate><ttl>60</ttl><item><title>linux shell 编辑基础</title><link>http://www.blogjava.net/asdtiang/archive/2011/05/23/350828.html</link><dc:creator>asdtiang</dc:creator><author>asdtiang</author><pubDate>Mon, 23 May 2011 06:13:00 GMT</pubDate><guid>http://www.blogjava.net/asdtiang/archive/2011/05/23/350828.html</guid><wfw:comment>http://www.blogjava.net/asdtiang/comments/350828.html</wfw:comment><comments>http://www.blogjava.net/asdtiang/archive/2011/05/23/350828.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/asdtiang/comments/commentRss/350828.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/asdtiang/services/trackbacks/350828.html</trackback:ping><description><![CDATA[1.建立和运行<strong><a href="http://www.qunfei.com/linux/linuxshell/">shell</a></strong>程序<br />什么是shell程序呢? 简单的说shell程序就是一个包含若干行<br />shell或者<strong><a href="http://www.qunfei.com/linux/linuxshell/">linux命令</a></strong>的文件.<br />象编写高级语言的程序一样,编写一个shell程序需要一个文本编辑器.如VI等.<br />在文本编辑环境下,依据shell的语法规则,输入一些shell/linux命令行,形成一个完整<br />的程序文件.<br />执行shell程序文件有三种方法<br />(1)#chmod +x file<br />(2)#sh file<br />(3)# . file<br />在编写<strong><a href="http://www.qunfei.com/linux/linuxshell/">shell</a></strong>时,第一行一定要指明系统需要那种shell解释你的shell程序,如:#! /bin/bash,<br />#! /bin/csh,/bin/tcsh,还是#! /bin/pdksh .<br />2.shell中的变量<br />(1)常用系统变量<br />&nbsp;&nbsp;&nbsp;&nbsp; $ #&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :保存程序命令行参数的数目<br />&nbsp;&nbsp;&nbsp;&nbsp; $ ?&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :保存前一个命令的返回码<br />&nbsp;&nbsp;&nbsp;&nbsp; $ 0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :保存程序名<br />&nbsp;&nbsp;&nbsp;&nbsp; $ *&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :以("$1 $2...")的形式保存所有输入的命令行参数<br />&nbsp;&nbsp;&nbsp;&nbsp; $ @&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :以("$1""$2"...)的形式保存所有输入的命令行参数<br />(2)定义变量<br />&nbsp;&nbsp; shell语言是非类型的解释型语言,不象用C++/JAVA语言编程时需要事先声明变量.给一<br />个变量赋值,实际上就是定义了变量.<br />&nbsp;&nbsp; 在<strong><a href="http://www.qunfei.com/linux/">linux</a></strong>支持的所有shell中,都可以用赋值符号(=)为变量赋值.<br />如:<br />abc=9 (bash/pdksh不能在等号两侧留下空格 )<br />set abc = 9 (tcsh/csh)<br />&nbsp;&nbsp; 由于shell程序的变量是无类型的,所以用户可以使用同一个变量时而存放字符时而存放<br />整数.<br />如:<br />name=abc (bash/pdksh)<br />set name = abc (tcsh)<br />在变量赋值之后,只需在变量前面加一个$去引用.<br />如:<br />echo $abc<br />(3)位置变量<br />当运行一个支持多个命令行参数的shell程序时,这些变量的值将分别存放在位置变量里.<br />其中第一个参数存放在位置变量1,第二个参数存放在位置变量2,依次类推...,shell保留<br />这些变量,不允许用户以令外的方式定义他们.同别的变量,用$符号引用他们.<br /><br />3.shell中引号的使用方法<br />shell使用引号(单引号/双引号)和反斜线("\")用于向shell解释器屏蔽一些特殊字符.<br />反引号(")对shell则有特殊意义.<br />如:<br />abc="how are you" (bash/pdksh)<br />set abc = "how are you" (tcsh)<br />这个命令行把三个单词组成的字符串how are you作为一个整体赋值给变量abc.<br />abc1='@LOGNAME,how are you!' (bash/pdksh)<br />set abc1='$LOGNAME,how are you!' (tcsh)<br />abc2="$LOGNAME,how are you!" (bash/pdksh)<br />set abc2="$LOGNAME,how are you!" (tcsh)<br />LOGNAME变量是保存当前用户名的shell变量,假设他的当前值是:wang.执行完两条命令后,<br />abc1的内容是:$LOGNAME, how are you!.而abc2的内容是;wang, how are you!.<br />象单引号一样,反斜线也能屏蔽所有特殊字符.但是他一次只能屏蔽一个字符.而不能屏蔽<br />一组字符.<br />反引号的功能不同于以上的三种符号.他不具有屏蔽特殊字符的功能.但是可以通过他将<br />一个命令的运行结果传递给另外一个命令.<br />如:<br />contents=`ls` (bash/pdksh)<br />set contents = `ls` (tcsh)<br />4.shell程序中的test命令<br />在bash/pdksh中,命令test用于计算一个条件表达式的值.他们经常在条件语句和循环<br />语句中被用来判断某些条件是否满足.<br />test命令的语法格式:<br />test expression<br />或者<br />[expression]<br /><br />在test命令中,可以使用很多shell的内部操作符.这些操作符介绍如下:<br />(1)字符串操作符 用于计算字符串表达式<br />test命令&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp; 含义<br />-----------------------------------------<br />Str1 = str2 | 当str1与str2相同时,返回True<br />Str1! = str2| 当str1与str2不同时,返回True<br />&nbsp;&nbsp;&nbsp;&nbsp; Str&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | 当str不是空字符时,返回True<br />&nbsp;&nbsp;&nbsp; -n str&nbsp;&nbsp;&nbsp; | 当str的长度大于0时,返回True<br />&nbsp;&nbsp;&nbsp; -z str&nbsp;&nbsp;&nbsp; | 当str的长度是0时,返回True<br />-----------------------------------------<br />(2)整数操作符具有和字符操作符类似的功能.只是他们的操作是针对整数<br />test表达式&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp; 含义<br />---------------------------------------------<br />Int1 -eq int2|当int1等于int2时,返回True<br />Int1 -ge int2|当int1大于/等于int2时,返回True<br />Int1 -le int2|当int1小于/等于int2时,返回True<br />Int1 -gt int2|当int1大于int2时,返回True<br />Int1 -ne int2|当int1不等于int2时,返回True<br />-----------------------------------------<br />(3)用于文件操作的操作符,他们能检查:文件是否存在,文件类型等<br />test表达式&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp; 含义<br />------------------------------------------------<br />-d file&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |当file是一个目录时,返回 True<br />-f file&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |当file是一个普通文件时,返回 True<br />-r file&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |当file是一个刻读文件时,返回 True<br />-s file&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |当file文件长度大于0时,返回 True<br />-w file&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |当file是一个可写文件时,返回 True<br />-x file&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |当file是一个可执行文件时,返回 True<br />------------------------------------------------<br />(4)shell的逻辑操作符用于修饰/连接包含整数,字符串,文件操作符的表达式<br />test表达式&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp; 含义<br />----------------------------------------------------------<br />! expr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |当expr的值是False时,返回True<br />Expr1 -a expr2|当expr1,expr2值同为True时,返回True<br />Expr1 -o expr2|当expr1,expr2的值至少有一个为True时,返回True<br />-----------------------------------------------------------<br />注意:<br />tcsh shell 不使用test命令,但是tcsh中的表达式同样能承担相同的功能.tcsh<br />支持的表达式于C中的表达式相同.通常使用在if和while命令中.<br />tcsh表达式&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp; 含义<br />-------------------------------------------------------<br />Int1 &lt;= int2 |当int1小于/等于int2时,返回True<br />Int1 &gt;= int2 |当int1大于/等于int2时,返回True<br />Int1 &lt; int2&nbsp;&nbsp; |当int1小于int2时,返回True<br />Int1 &gt; int2&nbsp;&nbsp; |当int1大于int2时,返回True<br />Str1 == str2 |当str1与str2相同时,返回True<br />Str1 != str2 |当str1与str2不同时,返回True<br />-r file&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |当file是一个可读文件时,返回True<br />-w file&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |当file是一个可写文件时,返回True<br />-x file&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |当file是一个可执行文件时,返回True<br />-e file&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |当file存在时,返回True<br />-o file&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |当file文件的所有者是当前用户时,返回True<br />-z file&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |当file长度为0时,返回True<br />-f file&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |当file是一个普通文件时,返回True<br />-d file&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |当file是一个目录时,返回True<br />Exp1 || exp2 |当exp1和exp2的值至少一个为True时,返回True<br />Exp1 &amp;&amp; exp2 |当exp1和exp2的值同为True时,返回True<br />! exp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |当exp的值为False时,返回True<br /><br />5.条件语句<br />同其他高级语言程序一样,复杂的shell程序中经常使用到分支和循环控制结构,<br />bash,pdksh和tcsh分别都有两种不同形式的条件语句:if语句和case语句.<br />(1)if语句<br />语法格式:<br />bash/pdksh用法:<br />if [expression1]<br />then<br />commands1<br />elif [expression2]<br />commands2<br />else<br />commands3<br />if<br /><br />tcsh用法:<br />if (expression1) then<br />commands1<br />else if (expression2) then<br />commands2<br />else<br />commands3<br />endif<br /><br />含义:当expression1的条件为True时,shell执行then后面的commands1命令;当<br />expression1的条件为false并且expression2的条件满足为True时,shell执行<br />commands2命令;当expression1和expressin2的条件值同为false时,shell执行<br />commands3命令.if语句以他的反写fi结尾.<br /><br />(2)case语句<br />case语句要求shell将一个字符串S与一组字符串模式P1,P2,...,Pn比较,当S与<br />某个模式Pi想匹配时,就执行相应的那一部分程序/命令.shell的case语句中字符<br />模式里可以包含象*这样的通配符.<br />语法格式:<br />bash/pdksh用法:<br />case string1 in<br />str1)<br />commands1;;<br />str2)<br />commands2;;<br />*)<br />commands3;;<br />esac<br /><br />tcsh用法:<br />switch (string1)<br />case str1:<br />statements1<br />breaksw<br />case str2:<br />statements2<br />breaksw<br />default:<br />statements3<br />breaksw<br />endsw<br /><br />含义:shell将字符串string1分别和字符串模式str1和str2比较.如果string1与str1匹配,则<br />shell执行commands1的命令/语句;如果string11和str2匹配,则shell执行commands2的命令/<br />语句.否则shell将执行commands3的那段程序/命令.其中,每个分支的程序/命令都要以两个<br />分号(;;)结束.<br /><br />6.循环语句<br />当需要重复的某些操作时,就要用到循环语句.<br /><br />(1)for语句<br />大家知道在很多编程语言中for语句是最常见.在shell中也不例外.for语句要求shell将包含<br />在这个语句中的一组命令连续执行一定的次数.<br />语法格式:<br />bash/pdksh<br />用法1:<br />for var1 in list<br />do<br />commands<br />done<br />含义:在这个for语句中,对应于list中的每个值,shell将执行一次commands代表的一组命令.<br />在整个循环的每一次执行中,变量var1将依此取list中的不同的值.<br />用法2:<br />for var1<br />do<br />setatements<br />done<br />含义:在这个for语句中,shell针对变量var1中的每一项分别执行一次statements代表的一组<br />命令.当使用这种形式的语句时,shell认为var1变量中包含了所有的位置变量,而位置变量中<br />存放着程序的命令行参数值.也就是说,他等价于下列形式:<br />for var1 in " $@"<br />do<br />statements<br />done<br /><br />tcsh用法:<br />在tcsh中没有for这个单词,与for语句起同样功能的是foreach语句<br />foreach name (list)<br />commands<br />end<br /><br />举例:<br />for file&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;bash/pdksh<br />do<br />tr a-z A-Z&lt;$file&gt;file.caps<br />done<br /><br />#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;tcsh<br />foreach file ( $ * )<br />tr a-z A-Z&lt;$file&gt;$file.caps<br />end<br /><br /><br />(2)while语句<br />while语句是shell提供的另一种循环语句. while语句指定一个表达式和一组命令.这个<br />语句使得shell重复执行一组命令,直到表达式的值为False为止.<br />语法格式:<br />while expression&nbsp;&nbsp;&nbsp;&nbsp; ;bash<br />do<br />statements<br />done<br /><br />while (expression)&nbsp;&nbsp; ;tcsh<br />statements<br />end<br />举例:<br />count=1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;bash<br />while [ -n "$ *"]&nbsp;&nbsp;&nbsp; ***<br />do<br />echo "this is a parameter number $count $1"<br />shift<br />count='expr $count + 1'<br />done<br /><br />set count = 1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;tcsh<br />while ( " $ * " ! = "")<br />echo "this is a parameter number $count $1"<br />shift<br />set count = 'expr $count + 1'<br />end<br /><br />语句中shift命令的功能是将所有的命令行参数依次相左传递.<br /><br />(3)until语句<br />until与while语句具有类似的语法格式和功能,不同的是while中expression的值为True时,<br />shell执行命令组;而until中当expression的值为False时,shell才执行那组命令.<br />语法格式:<br />until expression<br />do<br />commands<br />done<br />举例:<br />count=1<br />until [ -z " $ * "]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ***<br />echo "this is a parameter number $count $1"<br />shift<br />count='expr $count + 1'<br />done<br />情注意上述例子中带***号.在while中的表达式: -n string,他的含义是当string不是空<br />字符串时,表达式的值为True;在until中的表达式: -z string,他的 含义是当string是空<br />字符串时,表达式的值为True.由此可见,两个程序对条件表达式的设置恰好是相反的.<br /><br />(4)shift语句<br />bash和tcsh都支持shift命令.shift将存放在位置变量中的命令行参数,依次向左传递.例如<br />位置变量当前值为:<br />$1=file1 $2=file2 $3=file3<br />执行一次shift命令后,位置变量的值为:<br />$1=file2 $2=file3<br />还可以在shift命令中指定位置变量转移的次数, 如:<br />shift n<br />例子:<br />while [ "$1"]<br />do<br />if [ "$1"="-i"] then<br />infile=" $2"<br />shift 2<br />else if [ "$1"="-o"] then<br />outfile="$2"<br />shift 2<br />else<br />echo "Program $0 does not recognize option $1"<br />fi<br />done<br />tr a-z A-Z&lt;$infile&gt;$outfile<br /><br />(5)select语句<br />select语句是pdksh提供的一个独特的循环语句.他不同于前面介绍的循环语句.他不是<br />反复计算一个条件表达式,并依据表达式的值决定是否执行一组命令.select的功能是自动的<br />生成一个简单的文本菜单.<br />语法格式:<br />select menu [in list_of_items]<br />do<br />commands<br />done<br />含义:当执行一个select语句时,pdksh分别为每个列在list_of_items中的成员建立一个菜单<br />选项.list_of_items既可以是一个包含多个选项的变量,也可以是直接列在程序中的一组选项<br />.如果语句中没有提供list_of_items,select语句将使用位置变量作为list_of_items.<br />举例:<br />select menuitem in pick1 pick2 pick3<br />do<br />echo "are you sure you want to pick $menuitem"<br />read res&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;接收用户的输入,并且将输入的值存放在特定变量里.<br />if [ $res=" y" -o $res=" Y"]<br />then<br />break&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;用于退出while,for,select等循环语句<br />fi<br />done<br />(6)repeat语句<br />repeat语句是tcsh提供的独有的循环语句.使用repeat命令要求shell对一个命令执行一定<br />的次数.<br />语法格式:<br />repeat count command<br />如;<br />foreach num ( $ *)<br />repeat $num echo -n " *"<br />echo " "<br />end<br /><br />7.shell中的函数<br />shell允许用户定义自己的函数.函数是高级语言中的重要结构.shell中的函数于C或者其他<br />语言中定义的函数一样.与从头开始,一行一行地写程序相比,使用函数主要好处是有利于组织<br />整个程序.在bash中,一个函数的语法格式如下:<br />fname (){<br />shell comands<br />}<br />定义好函数后,需要在程序中调用他们.bash中调用函数的格式:<br />fname [parm1 parm2 parm3...]<br />调用函数时,可以向函数传递任意多个参数.函数将这些参数看做是存放他的命令行参数的<br />位置变量.<br />举例:<br />这个程序定义了4个函数:<br />upper ():将传递给他的文件中的字母转换成大写,并存放到同名的结尾为.out的文件中.<br />lower ():将传递给他的文件里的字母转换成小写,并存放到同名的结尾为.out的文件中.<br />print ():输出传递给他的文件的内容.<br />usage_error ():输出程序的帮助信息.<br />程序的主模块是个case条件语句,他根据命令行中第一个参数,决定程序要完成的功能,并调用相应<br />的函数完成这一功能.<br />upper (){<br />shift<br />for i<br />do<br />tr a-a A-Z&lt;$!&gt;$1.out<br />rm $1<br />mv $1.out $1<br />shift<br />done; }<br />lower () {<br />shift<br />for i<br />do<br />tr A-Z a-z&lt;$1&gt;$1.out<br />rm $1<br />mv $1.out $1<br />shift<br />done; }<br />print() {<br />shift<br />for i<br />do<br />lpr $1<br />shift<br />done; }<br />usage_error() {<br />echo " $1 syntax is $1&lt;option&gt;&lt;input files&gt;"<br />echo ""<br />echo " where option is one of the following"<br />echo " p--to print frame files"<br />echo " u--to save as uppercase"<br />echo " l--to save as lowercase";}<br />case $1 in<br />p | -p)print $@;;<br />u | -u)upper $@;;<br />l | -l)lower $@;;<br />*) usage_error $0;;<br />esac<br /><br />------------------------------------------------------------------------------<br />总结<br />利用shell编程是提高系统管理工作效率的重要手段,学好shell跟了解系统基本命令和管理<br />工具的使用方法同样重要!<br /><br />附:<br />A.bash中常用的命令<br />命令&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp; 含义<br />-------------------------------------------------------------------------------<br />Alias&nbsp;&nbsp;&nbsp;&nbsp; |设置命令别名<br />Bg&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |将一个被挂起的进程在后台执行<br />cd&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |改变用户的当前目录<br />exit&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |终止一个shell<br />export&nbsp;&nbsp;&nbsp; |使作为这个命令的参数的变量及其当前值,在当前运行的shell的子进程中可见<br />fc&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |编辑当前的命令行历史列表<br />fg&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |让一个被挂起的进程在前台执行<br />help&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |显示bash内部命令的帮助信息<br />history&nbsp;&nbsp; |显示最近输入的一定数量的命令行<br />kill&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |终止一个进程<br />pwd&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |显示用户当前工作目录<br />unalias&nbsp;&nbsp; |删除命令行别名<br />--------------------------------------------------------------------------------<br /><br />B.bash中常用的系统变量<br />变量&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp; 含义<br />-------------------------------------------------------------------------------<br />EDITOR,FCEDIT |Bash的fc命令的默认文本编辑器<br />HISTFILE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |规定存放最近输入命令行文件的名字<br />HISTSIZE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |规定命令行历史文件的大小<br />HOME&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |当前用户的宿主目录<br />OLDPWD&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |用户使用的前一个目录<br />PATH&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |规定bash寻找可执行文件时搜索的路径<br />PS1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |命令行环境中显示第一级提示符号<br />PS2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |命令行环境中显示第二级提示符号<br />PWD&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |用户当前工作目录<br />SECONDS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |当前运行的bash进程的运行时间(以秒为单位)<img src ="http://www.blogjava.net/asdtiang/aggbug/350828.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/asdtiang/" target="_blank">asdtiang</a> 2011-05-23 14:13 <a href="http://www.blogjava.net/asdtiang/archive/2011/05/23/350828.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>linux if 判断</title><link>http://www.blogjava.net/asdtiang/archive/2011/05/23/350827.html</link><dc:creator>asdtiang</dc:creator><author>asdtiang</author><pubDate>Mon, 23 May 2011 06:12:00 GMT</pubDate><guid>http://www.blogjava.net/asdtiang/archive/2011/05/23/350827.html</guid><wfw:comment>http://www.blogjava.net/asdtiang/comments/350827.html</wfw:comment><comments>http://www.blogjava.net/asdtiang/archive/2011/05/23/350827.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/asdtiang/comments/commentRss/350827.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/asdtiang/services/trackbacks/350827.html</trackback:ping><description><![CDATA[比较两个字符串是否相等的办法是： <br />if [ "$test"x = "test"x ]; then<br />这里的关键有几点：<br />1 使用单个等号<br />2 注意到等号两边各有一个空格：这是unix shell的要求<br />3 注意到"$test"x最后的x，这是特意安排的，因为当$test为空的时候，上面的表达式就变成了x = testx，显然是不相等的。而如果没有这个x，表达式就会报错：[: =: unary operator expected<br /><br />二元比较操作符,比较变量或者比较数字.注意数字与字符串的区别. <br />整数比较 <br />-eq&nbsp; &nbsp;&nbsp; &nbsp; 等于,如:if [ "$a" -eq "$b" ] <br />-ne&nbsp; &nbsp;&nbsp; &nbsp; 不等于,如:if [ "$a" -ne "$b" ] <br />-gt&nbsp; &nbsp;&nbsp; &nbsp; 大于,如:if [ "$a" -gt "$b" ] <br />-ge&nbsp; &nbsp;&nbsp; &nbsp; 大于等于,如:if [ "$a" -ge "$b" ] <br />-lt&nbsp; &nbsp;&nbsp; &nbsp; 小于,如:if [ "$a" -lt "$b" ] <br />-le&nbsp; &nbsp;&nbsp; &nbsp; 小于等于,如:if [ "$a" -le "$b" ] <br />&nbsp; &nbsp;&nbsp; &nbsp; 大于(需要双括号),如:(("$a" &gt; "$b")) <br />&gt;=&nbsp; &nbsp;&nbsp; &nbsp; 大于等于(需要双括号),如:(("$a" &gt;= "$b")) <br />小数据比较可使用AWK<br />字符串比较</strong> <br />=&nbsp; &nbsp;&nbsp; &nbsp; 等于,如:if [ "$a" = "$b" ] <br />==&nbsp; &nbsp;&nbsp; &nbsp; 等于,如:if [ "$a" == "$b" ],与=等价 <br />&nbsp; &nbsp;&nbsp; &nbsp; 注意:==的功能在[[]]和[]中的行为是不同的,如下: <br />&nbsp; &nbsp;&nbsp; &nbsp; 1 [[ $a == z* ]]&nbsp; &nbsp; # 如果$a以"z"开头(模式匹配)那么将为true <br />&nbsp; &nbsp;&nbsp; &nbsp; 2 [[ $a == "z*" ]] # 如果$a等于z*(字符匹配),那么结果为true <br />&nbsp; &nbsp;&nbsp; &nbsp; 3 <br />&nbsp; &nbsp;&nbsp; &nbsp; 4 [ $a == z* ]&nbsp; &nbsp;&nbsp; &nbsp;# File globbing 和word splitting将会发生 <br />&nbsp; &nbsp;&nbsp; &nbsp; 5 [ "$a" == "z*" ] # 如果$a等于z*(字符匹配),那么结果为true <br />&nbsp; &nbsp;&nbsp; &nbsp; 一点解释,关于File globbing是一种关于文件的速记法,比如"*.c"就是,再如~也是. <br />&nbsp; &nbsp;&nbsp; &nbsp; 但是file globbing并不是严格的正则表达式,虽然绝大多数情况下结构比较像. <br />!=&nbsp; &nbsp;&nbsp; &nbsp; 不等于,如:if [ "$a" != "$b" ] <br />&nbsp; &nbsp;&nbsp; &nbsp; 这个操作符将在[[]]结构中使用模式匹配. <br />&nbsp; &nbsp;&nbsp; &nbsp; 大于,在ASCII字母顺序下.如: <br />&nbsp; &nbsp;&nbsp; &nbsp; if [[ "$a" &gt; "$b" ]] <br />&nbsp; &nbsp;&nbsp; &nbsp; if [ "$a" \&gt; "$b" ] <br />&nbsp; &nbsp;&nbsp; &nbsp; 注意:在[]结构中"&gt;"需要被转义. <br />&nbsp; &nbsp;&nbsp; &nbsp; 具体参考Example 26-11来查看这个操作符应用的例子. <br />-z&nbsp; &nbsp;&nbsp; &nbsp; 字符串为"null".就是长度为0. <br />-n&nbsp; &nbsp;&nbsp; &nbsp; 字符串不为"null"<br /><br /><br />数字比较也可以用下面的表式方法：<br />if((${d1}==0))&nbsp;&nbsp;&nbsp;&nbsp; if((${d1&lt;0}))<img src ="http://www.blogjava.net/asdtiang/aggbug/350827.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/asdtiang/" target="_blank">asdtiang</a> 2011-05-23 14:12 <a href="http://www.blogjava.net/asdtiang/archive/2011/05/23/350827.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>linux操作实践要点及常用命令</title><link>http://www.blogjava.net/asdtiang/archive/2011/05/18/350502.html</link><dc:creator>asdtiang</dc:creator><author>asdtiang</author><pubDate>Wed, 18 May 2011 08:32:00 GMT</pubDate><guid>http://www.blogjava.net/asdtiang/archive/2011/05/18/350502.html</guid><wfw:comment>http://www.blogjava.net/asdtiang/comments/350502.html</wfw:comment><comments>http://www.blogjava.net/asdtiang/archive/2011/05/18/350502.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/asdtiang/comments/commentRss/350502.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/asdtiang/services/trackbacks/350502.html</trackback:ping><description><![CDATA[<p>要点</p>
<p>1、没事不要用reboot,</p>
<p>2、reboot前最好备份数据库。（一次reboot机子，启动后mysql没有起来，发现mysql好像崩溃了，原因不详，貌似是因为机子上有两个版本的mysql）</p>
<p>3、不要随意用rm，rm时要保持头脑清晰。（最郁闷的是，写好好久的shell,不小心一下rm了，我都快哭了）</p>
<p>4、尽量用cp,不要用mv。（tomcat会自动加载war包，当时不小心把zip更改成war，项目下的图片是mv过去的，war自动解压，把图片覆盖了，即删除了，郁闷，重先抓图片）</p>
<p>5、开放端口要少。mysql仅请允许本机访问。</p>
<p>常用命令：</p>
<p>一、jdk安装</p>
<p>mv jdk-6u24-linux-i586.bin /usr/java1.6/jdk-6u24-linux-i586.bin<br />&nbsp; cd /usr/java1.6/<br />&nbsp; chmod 755 jdk-6u24-linux-i586.bin <br />&nbsp; ./jdk-6u24-linux-i586.bin<br />&nbsp;不用设置环境变量，直接将tomcat的jdk指定到jdk目录<br />&nbsp;vi setclasspath.sh <br />&nbsp;在开始增加：<br />&nbsp;export JRE_HOME="/usr/java1.6/jdk1.6.0_24/"<br />&nbsp;&nbsp;&nbsp; export JAVA_HOME="/usr/java1.6/jdk1.6.0_24/"<br />&nbsp;启动tomcat,可以正常访问。<br />&nbsp;启动命令，到tocmat目录下的bin<br />&nbsp;执行：<br />&nbsp;./startup.sh start<br />&nbsp;停止命令<br />&nbsp;./shutdown.sh<br />&nbsp;通过以下命令可以查看进程以及端口号。<br />&nbsp;&nbsp;&nbsp; netstat -lpn</p>
<p>二、权限管理</p>
<p>chmod <br />改变一个文件的权限：chmod [mode] file.txt<br />改变一个目录的权限：chmod [mode] dir<br />改变一个目录和其子目录的权限：&nbsp;&nbsp;&nbsp; chmod [mode] dir -R<br />mode = 777 or 752 and so on.<br />mode的三个数字，分别表示owner,group,others所具备的权限。<br />1＝x 执行<br />2＝w 写<br />4＝r 读<br />比如owner具有所有权限，1+2+4=7,又比如 group 具有读和执行权限1+4=5。<br />========================================================<br />chown <br />更改文件或目录的拥有者<br />-R参数表示递归改变<br />[root@linux ~]#chown [-R] 账户名称 文件或目录<br />[root@linux ~]#chown [-R] 账户名称:用户组名称 文件或目录 <br /></p>
<p><br />这个命令最好不要用得太猛了，一次把var全改成了一个非root 用户，结果导致，ssh,mysql启动不起来<br />mysql更改：<font color="#333399">&nbsp;chown -R mysql:mysql&nbsp;&nbsp; /mysqldatadir<br /></font>sshd更改为root可以恢复<br /><br /><br />三、建立一个用户和root权限相同</p>
<p>#useradd -o -u 0 -g 0 -M -d /root -s /bin/bash admin<br /><br />#passwd admin</p>
<p>四、apache中整合tomcat时httpd.conf末尾添加，注，必须开启proxy(module)</p>
<p>&lt;IfModule mod_proxy.c&gt;<br />ProxyRequests On<br />&lt;VirtualHost 127.0.0.1:80&gt;<br />&nbsp;&nbsp;&nbsp; ServerName 127.0.0.1<br />&nbsp;ServerAlias test.com&nbsp; *.test.com<br />&nbsp;&nbsp;&nbsp; ProxyPass&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; / <a href="http://localhost:8090/"><u><font color="#000080">http://localhost:8090/</font></u></a><br />&nbsp;&nbsp;&nbsp; ProxyPassReverse /&nbsp; <a href="http://localhost:8090/"><u><font color="#000080">http://localhost:8090/</font></u></a><br />&nbsp;&nbsp; ProxyPreserveHost On<br />&nbsp;&nbsp; ProxyVia On<br />&lt;/VirtualHost&gt;</p>
<p>四、mysql操作</p>
<p>mysql -u root<br />SET PASSWORD FOR <a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#39;&#114;&#111;&#111;&#116;&#39;&#64;&#39;&#108;&#111;&#99;&#97;&#108;&#104;&#111;&#115;&#116;&#39;" vpos="down"><u><font color="#000080">'root'@'localhost'</font></u></a> = PASSWORD('newpasswd');<br />即把mysql的root密码设置为newpasswd</p>
<p>导入数据，新建用户balidatabase，密码为：bali2010<br /></p>
<p>grant all on mydatabase.*&nbsp; to&nbsp; username identified by 'passwd';<br />#生效用户权限更改<br />flush privileges; </p>
<p>乱码解决：</p>
<p>my.cnf大致更改如下：</p>
<p>[mysqld]<br />datadir=/var/lib/mysql<br />socket=/var/lib/mysql/mysql.sock<br />user=mysql<br /># Disabling symbolic-links is recommended to prevent assorted security risks<br />symbolic-links=0</p>
<p>#使用utf-8<br />character-set-server=utf8</p>
<p>[client]</p>
<p>#使用utf-8<br />default-character-set=utf8</p>
<p>[mysqld_safe]<br />log-error=/var/log/mysqld.log<br />pid-file=/var/run/mysqld/mysqld.pid </p>
<p>tomcat的server.xml更改如下：<br />&nbsp;&lt;Connector port="8090" protocol="HTTP/1.1"<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; connectionTimeout="20000"<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; redirectPort="8443" acceptCount="100" <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; useBodyEncodingForURI="true"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;URIEncoding="utf-8" <br />&nbsp;&nbsp;&nbsp;&nbsp;disableUploadTimeout="true" /&gt;<br />&nbsp;&nbsp;&nbsp; &lt;!-- A "Connector" using the shared thread pool--&gt;<br />&nbsp;<br />&nbsp;<br />在host节点下配置虚拟目录：<br />&lt;Context path="" docBase="appName" /&gt;<br /><br />五、日期设定：</p>
<p>#设置时间<br />&nbsp;date -s 16:54:00<br />&nbsp;date<br />#将时间写入cmos，保证下次启动时时间正常<br />&nbsp;clock -w<br />&nbsp;whereis clock<br />/sbin/clock -w<br /><br /><br />写得比较简陋，自己能看懂。<br /></p><img src ="http://www.blogjava.net/asdtiang/aggbug/350502.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/asdtiang/" target="_blank">asdtiang</a> 2011-05-18 16:32 <a href="http://www.blogjava.net/asdtiang/archive/2011/05/18/350502.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>linux msql自动备份到ftp服务器 gpg加密 </title><link>http://www.blogjava.net/asdtiang/archive/2011/05/18/350484.html</link><dc:creator>asdtiang</dc:creator><author>asdtiang</author><pubDate>Wed, 18 May 2011 07:37:00 GMT</pubDate><guid>http://www.blogjava.net/asdtiang/archive/2011/05/18/350484.html</guid><wfw:comment>http://www.blogjava.net/asdtiang/comments/350484.html</wfw:comment><comments>http://www.blogjava.net/asdtiang/archive/2011/05/18/350484.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/asdtiang/comments/commentRss/350484.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/asdtiang/services/trackbacks/350484.html</trackback:ping><description><![CDATA[<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /><span style="color: #008000">#</span><span style="color: #008000">!/bin/bash</span><span style="color: #008000"><br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: #000000">dateString</span><span style="color: #000000">=</span><span style="color: #000000">`&nbsp;date&nbsp;</span><span style="color: #000000">+</span><span style="color: #800080">%Y%m%d</span><span style="color: #000000">`<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />encryptPasswd</span><span style="color: #000000">=</span><span style="color: #000000; font-weight: bold">"</span><span style="color: #000000; font-weight: bold">加密密码</span><span style="color: #000000; font-weight: bold">"</span><span style="color: #000000"><br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />ftpIp</span><span style="color: #000000">=</span><span style="color: #000000; font-weight: bold">"</span><span style="color: #000000; font-weight: bold">ip地址</span><span style="color: #000000; font-weight: bold">"</span><span style="color: #000000"><br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />ftpUsername</span><span style="color: #000000">=</span><span style="color: #000000; font-weight: bold">"</span><span style="color: #000000; font-weight: bold">ftp用户名</span><span style="color: #000000; font-weight: bold">"</span><span style="color: #000000"><br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />ftpPasswd</span><span style="color: #000000">=</span><span style="color: #000000; font-weight: bold">"</span><span style="color: #000000; font-weight: bold">ftp密码</span><span style="color: #000000; font-weight: bold">"</span><span style="color: #000000"><br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />dbPasswd</span><span style="color: #000000">=</span><span style="color: #000000; font-weight: bold">"</span><span style="color: #000000; font-weight: bold">数据库root密码</span><span style="color: #000000; font-weight: bold">"</span><span style="color: #000000"><br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />lcdDir</span><span style="color: #000000">=</span><span style="color: #000000; font-weight: bold">"</span><span style="color: #000000; font-weight: bold">本地目录</span><span style="color: #000000; font-weight: bold">"</span><span style="color: #000000"><br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />pathAndName</span><span style="color: #000000">=</span><span style="color: #000000">${lcdDir}${dateString}<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /><br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />echo&nbsp;${pathAndName}<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /><br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />mysqldump&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">u&nbsp;root&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">p${dbPasswd}&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">A&nbsp;</span><span style="color: #000000">|</span><span style="color: #000000">&nbsp;gzip&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">c</span><span style="color: #000000">&gt;</span><span style="color: #000000">${pathAndName}</span><span style="color: #000000">.</span><span style="color: #000000">sql</span><span style="color: #000000">.</span><span style="color: #000000">gz<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /><br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />echo&nbsp;${encryptPasswd}&nbsp;</span><span style="color: #000000">|</span><span style="color: #000000">&nbsp;gpg&nbsp;&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">a&nbsp;&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">c&nbsp;&nbsp;</span><span style="color: #000000">--</span><span style="color: #000000">passphrase</span><span style="color: #000000">-</span><span style="color: #000000">fd&nbsp;</span><span style="color: #800000">0</span><span style="color: #000000">&nbsp;${pathAndName}</span><span style="color: #000000">.</span><span style="color: #000000">sql</span><span style="color: #000000">.</span><span style="color: #000000">gz<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /><br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />ftp&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">v&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">n&nbsp;&nbsp;${ftpIp}&nbsp;</span><span style="color: #000000">&lt;&lt;</span><span style="color: #0000ff">EOF</span><span style="color: #000000"><br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />user&nbsp;${ftpUsername}&nbsp;${ftpPasswd}<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />binary<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />lcd&nbsp;${lcdDir}<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />prompt<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />mput&nbsp;${dateString}</span><span style="color: #000000">.</span><span style="color: #000000">sql</span><span style="color: #000000">.</span><span style="color: #000000">gz</span><span style="color: #000000">.</span><span style="color: #000000">asc<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: #0000ff">close</span><span style="color: #000000"><br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />bye<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: #0000ff">EOF</span></div>注：数据库为全部备份，备份为sql后gzip为.gz文件，gpg加密后为.asc文件，最后把asc文件传到ftp服务器<br />命令要求，保证mysqldump,ftp,gpg可用<br /><img src ="http://www.blogjava.net/asdtiang/aggbug/350484.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/asdtiang/" target="_blank">asdtiang</a> 2011-05-18 15:37 <a href="http://www.blogjava.net/asdtiang/archive/2011/05/18/350484.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>linux mysql密码忘记解决办法</title><link>http://www.blogjava.net/asdtiang/archive/2011/05/10/349956.html</link><dc:creator>asdtiang</dc:creator><author>asdtiang</author><pubDate>Tue, 10 May 2011 12:54:00 GMT</pubDate><guid>http://www.blogjava.net/asdtiang/archive/2011/05/10/349956.html</guid><wfw:comment>http://www.blogjava.net/asdtiang/comments/349956.html</wfw:comment><comments>http://www.blogjava.net/asdtiang/archive/2011/05/10/349956.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/asdtiang/comments/commentRss/349956.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/asdtiang/services/trackbacks/349956.html</trackback:ping><description><![CDATA[# /etc/init.d/mysql stop <br />
# mysqld_safe --user=mysql --skip-grant-tables --skip-networking &amp; <br />
# mysql -u root mysql <br />
mysql&gt; UPDATE user SET Password=PASSWORD('newpassword') where USER='root'; <br />
mysql&gt; FLUSH PRIVILEGES; <br />
mysql&gt; quit <br />
# /etc/init.d/mysql restart <br />
# mysql -uroot -p <br />
Enter password: &lt;输入新设的密码newpassword&gt; <br />
mysql&gt; <br /><img src ="http://www.blogjava.net/asdtiang/aggbug/349956.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/asdtiang/" target="_blank">asdtiang</a> 2011-05-10 20:54 <a href="http://www.blogjava.net/asdtiang/archive/2011/05/10/349956.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>linux常用服务简介--转载</title><link>http://www.blogjava.net/asdtiang/archive/2011/05/10/349953.html</link><dc:creator>asdtiang</dc:creator><author>asdtiang</author><pubDate>Tue, 10 May 2011 12:36:00 GMT</pubDate><guid>http://www.blogjava.net/asdtiang/archive/2011/05/10/349953.html</guid><wfw:comment>http://www.blogjava.net/asdtiang/comments/349953.html</wfw:comment><comments>http://www.blogjava.net/asdtiang/archive/2011/05/10/349953.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/asdtiang/comments/commentRss/349953.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/asdtiang/services/trackbacks/349953.html</trackback:ping><description><![CDATA[<p>由于各版本的Linux可能有稍微的差异，在加上所安装的服务不同（这里以CentOS5.0为例）。</p>
<p>1.NetworkManager，NetworkMangerDispatcher:</p>
<p>说明：是一个自动切换网络连接的后台进程。很多笔记本用户都需要启用该功能，它让你能够在无线网络和有线网络之间切换。大多数台式机用户应该关闭该服务。一些 DHCP 用户可能需要开启它。</p>
<p>预设端口：无</p>
<p>是否需要启动：一般不需要启动。</p>
<p>&nbsp;</p>
<p>2.acpid: 配置文件：/proc/acpi/event</p>
<p>说明：Advanced Configuration and Power Interface，为替代传统的APM电源管理标准而推出的新型电源管理标准。</p>
<p>预设端口：无</p>
<p>是否需要启动：如果你需要对电源进行管理，那就需要启动。</p>
<p>&nbsp;</p>
<p>3.anacron: 配置文件：/etc/anacron</p>
<p>预设端口：无</p>
<p>说明：一个自动化运行任务。Red Hat Linux 随带四个自动化任务的工具：cron、 anacron、at、和 batc。当你的Linux主机并不是全天候开机，这个anacron就可以帮你执行在"crontab"设定的时间内没有执行的工作。举例来说，当你的主机在晚上12:00会自动关闭，但是偏偏crontab这个例行性工作是在4:00工作，这个时候例行性工作就不能起作用了。不过利用anacron就能做到。</p>
<p>是否需要启动：如果主机已经24小时开机，而且运行了cron，那么这个守护程序就不需要启动了。</p>
<p>&nbsp;</p>
<p>4.apmd: 配置文件：/etc/sysconfig/apmd</p>
<p>预设端口：无</p>
<p>说明：Advanced Power Management，高级电源管理。传统的电源管理标准。一般系统都会同时支持APM和APMD两种标志，但系统加载时只需加载一个即可。对于笔记本电脑比较有用，可以了解系统的"电池电量"。</p>
<p>是否需要启动：如果我们使用的是台式电脑或一直开机的机型，就不需要使用这个守护程序。</p>
<p>&nbsp;</p>
<p>5.atd: 配置文件：/etc/at.allow，/etc/at.deny</p>
<p>预设端口：无</p>
<p>说明：一个自动化运行任务。</p>
<p>是否需要启动：通常需要启动。不过如果你一直使用cron，那么也可以不启动。</p>
<p>&nbsp;</p>
<p>6.auditd:</p>
<p>说明：auditd（Digital Audit Daemon）数码音频后台服务</p>
<p>是否需要启动：不需要启动。</p>
<p>&nbsp;</p>
<p>7.autofs: 配置文件：/etc/rc.d/init.d/autofs</p>
<p>预设端口：无</p>
<p>说明：实现光盘、软盘的自动加载。</p>
<p>是否需要启动：一般不需要启动。</p>
<p>&nbsp;</p>
<p>8.avahi-daemon,avahi-dnsconfd:</p>
<p>说明：Avahi 是 zeroconf 协议的实现。它可以在没有 DNS 服务的局域网里发现基于 zeroconf 协议的设备和服务。它跟 mDNS 一样。除非你有兼容的设备或使用 zeroconf 协议的服务，否则应该关闭它。</p>
<p>是否需要启动：不需要启动。</p>
<p>&nbsp;</p>
<p>9.bluetooth: 配置文件：/etc/bluetooth/*</p>
<p>说明：蓝牙（Bluetooth）是给无线便携设备使用的（非 wifi, 802.11）。Bluetooth 是用于替换电缆的短程无线技术，支持 723 kbps（不对称）和 432 kbps（对称）的速度，可以传输数据和语音。Bluetooth 设备的传输范围大约 10 米（30 英尺）。</p>
<p>是否需要启动：不需要启动。</p>
<p>&nbsp;</p>
<p>10.cpuspeed:</p>
<p>说明：监测系统空闲百分比，降低或加快CPU时钟速度和电压从而在系统空闲时把能源消耗降为最小，而在系统繁忙时最大化加快系统执行速度。</p>
<p>是否需要启动：需要启动。</p>
<p>&nbsp;</p>
<p>11.crond: 配置文件：/etc/crontab</p>
<p>预设端口：无</p>
<p>说明：用来执行例行性命令的守护程序。</p>
<p>是否需要启动：必须启动。</p>
<p>&nbsp;</p>
<p>12.cups: 配置文件：</p>
<p>CUPS服务器配置文件：/etc/cups/cupsd.conf</p>
<p>CUPS客户端配置文件：/etc/cups/client.conf</p>
<p>CUPS打印机配置文件：/etc/cups/printers.conf</p>
<p>CUPS中类（class）配置文件：/etc/cups/classes.conf</p>
<p>说明：Common UNIX Printing System，公共UNIX打印支持，为Linux提供打印功能。</p>
<p>是否需要启动：如果不安装打印机，就不需要启动。</p>
<p>&nbsp;</p>
<p>13.dc_client:</p>
<p>说明：使用SSL安全套接字的客户端守护进程。</p>
<p>是否需要启动：不需要启动。</p>
<p>&nbsp;</p>
<p>14.dc_server:</p>
<p>说明：使用SSL安全套接字的代理服务器守护进程。</p>
<p>是否需要启动：不需要启动。</p>
<p>&nbsp;</p>
<p>15.dhcdbd:</p>
<p>预设端口：无</p>
<p>说明：这是一个让 DBUS 系统控制 DHCP 的接口。可以保留默认的关闭状态。</p>
<p>是否需要启动：不需要启动。</p>
<p>&nbsp;</p>
<p>16.dund:</p>
<p>说明：dund 支持通过蓝牙拨号连接网络。</p>
<p>是否需要启动：不需要启动。</p>
<p>&nbsp;</p>
<p>17.firstboot:</p>
<p>说明：它执行在安装之后的第一次启动时仅仅需要执行一次的特定任务。它可以被关闭。</p>
<p>是否需要启动：不需要启动。</p>
<p>&nbsp;</p>
<p>18.gpm: 配置文件：/etc/sysconfig/mouse</p>
<p>预设端口：无</p>
<p>说明：General Purpose Mouse Daemon ，gpm为文本模式下的Linux程序如mc(Midnight Commander)提供了鼠标的支持。它也支持控制台下鼠标的拷贝，粘贴操作以及弹出式菜单。</p>
<p>是否需要启动：没必要的话，建议不要启动。</p>
<p>&nbsp;</p>
<p>19.haldaemon:</p>
<p>说明：硬件监控系统，此服务监控硬件改变,为你改变新的或更改过的硬件。</p>
<p>是否需要启动：不需要启动。</p>
<p>&nbsp;</p>
<p>20.hidd:</p>
<p>说明：蓝牙H.I.D服务器，对输入设备（键盘，鼠标）提供支持。</p>
<p>是否需要启动：不需要启动。</p>
<p>&nbsp;</p>
<p>21.httpd: 配置文件：/etc/httpd/httpd.conf,/etc/sysconfig/httpd</p>
<p>预设端口：80，443</p>
<p>说明：提供www服务。</p>
<p>是否需要启动：安装www服务就启动它。</p>
<p>&nbsp;</p>
<p>22.ibmasm:</p>
<p>说明：ibmasm 套件用來與 IBM Advance System Management PCI Adapter（亦稱 RSA I）進行通訊。</p>
<p>是否需要启动：不需要启动。</p>
<p>&nbsp;</p>
<p>23.ip6tables:</p>
<p>说明：支持使用 Netfilter 6 子系统和 ip6tables 命令的 IPv6 防火墙规则，其语法在各方面都和 iptables 相同，只不过 ip6tables 支持128位的地址。</p>
<p>是否需要启动：目前不需要启动。</p>
<p>&nbsp;</p>
<p>24.iptables: 配置文件：/etc/sysconfig/iptables</p>
<p>预设端口：无</p>
<p>说明：是Linux上有名的防火墙，如果连上Internet，一定要开启这个。</p>
<p>是否需要启动：连上Internet的主机务必启动。</p>
<p>&nbsp;</p>
<p>25.irda:</p>
<p>说明：红外线设备界面，以前的无线设备支持。</p>
<p>是否需要启动：不需要启动。</p>
<p>&nbsp;</p>
<p>26.irqbalance:</p>
<p>说明：是在多个处理器系统上分配中断号的服务。单处理器可以关闭。</p>
<p>是否需要启动：多处理器可以启动它。</p>
<p>&nbsp;</p>
<p>27.kudzu: 配置文件：</p>
<p>/etc/sysconfig/hwconf</p>
<p>/etc/sysconfig/kudzu</p>
<p>说明：硬件自动检测程序，会自动检测硬件是否发生变动，并相应进行硬件的添加、删除工作。当系统启动时，kudzu会对当前的硬件进行检测，并且和存储在 /etc/sysconfig/hwconf中的硬件信息进行一一对照，如果某个硬件从系统中被添加或者删除时，那么kudzu就会察觉到，并且通知用户是否进行相关配置，然后修改/etc/sysconfig/hwconf，使硬件资料与系统保持同步。如果/etc/sysconfig/hwconf这个文件不存在，那么kudzu把会从/etc/modprobe.conf，/etc/sysconfig/network-scripts/和 /etc/X11/XF86Config中探测已经存在的硬件。</p>
<p>是否需要启动：如果启动kudzu，则每次启动系统，都会检查新硬件（checking new hardware），会延长系统启动的时间。如果你不打算增加新硬件，那么就可以关闭这个启动服务，以加快系统启动时间。</p>
<p>&nbsp;</p>
<p>28.mcstrans:</p>
<p>说明：主要用于SELinux，如果你不用SELinux，可以关了。</p>
<p>是否需要启动：一般不需要。</p>
<p>&nbsp;</p>
<p>29.mdmonitor:</p>
<p>说明：与RAID设备相关的守护程序。该服务用来监测 Software RAID 或 LVM 的信息。它不是一个关键性的服务，可以关闭它。</p>
<p>是否需要启动：不用Software RAID就不需要启动。</p>
<p>&nbsp;</p>
<p>30.mdmpd:</p>
<p>说明：该服务用来监测 Multi-Path 设备（该类型的存储设备能被一种以上的控制器或方法访问）。</p>
<p>是否需要启动：不需要启动。</p>
<p>&nbsp;</p>
<p>31.messagebus:</p>
<p>说明：事件监控服务，此服务在必要时向所有用户发送广播信息,如服务器将要重启。这是 Linux 的 IPC（Interprocess Communication，进程间通讯）服务。确切地说，它与 DBUS 交互，是重要的系统服务。</p>
<p>是否需要启动：必须启动。</p>
<p>&nbsp;</p>
<p>32. microcode_ctl:</p>
<p>说明：可以编码以及发送新的微代码到kernel以更新Intel IA32系列处理器（Pentium Pro，PII，PIII，Pentium 4，Celeron, Xeon 等等 &#8211; 全部 P6 以及更高,不包括 pentium classics）。</p>
<p>是否需要启动：不需要启动。</p>
<p>&nbsp;</p>
<p>33. netfs:配置文件：/etc/fstab</p>
<p>预设端口：无</p>
<p>说明：这个服务在自动的挂载/etc/fstab里记录的关于网络文件系统，如NFS，SMB等等，如果你的主机本身并没有</p>
<p>安装和卸载NFS、SAMBA和NCP网络文件系统</p>
<p>是否需要启动：不需要启动。</p>
<p>&nbsp;</p>
<p>34. netplugd: 配置文件：</p>
<p>/etc/netplug/netplugd.conf</p>
<p>/etc/netplug.d/netplug</p>
<p>说明：network cable hotplug management daemon，netplugd是一个守护程序，可以监控一个或多个网络接口的状态，当某些事件触发时运行一个外部脚本程序。</p>
<p>是否需要启动：一般不需要启动。</p>
<p>&nbsp;</p>
<p>35. network: 配置文件：</p>
<p>/etc/sysconfig/network</p>
<p>/etc/sysconfig/network-scripts/*</p>
<p>预设端口：无</p>
<p>说明：是用来管理网络的，所以当然要启动，不论你有没有网卡，这个服务也要启动，因为至少network会驱动lo这个网络介面。</p>
<p>是否需要启动：必须启动。</p>
<p>&nbsp;</p>
<p>36. nfs:配置文件：/etc/sysconfig/nfs</p>
<p>预设端口：随机使用port，与protmap服务有关。</p>
<p>说明：NFS为Network File System的缩写，是一个流行的通过TCP/IP网络共享文件的协议。</p>
<p>是否需要启动：一般不需要启动。</p>
<p>&nbsp;</p>
<p>37.nfslock</p>
<p>说明：NFS是一个流行的通过TCP/IP网络共享文件的协议，此服务提供了NFS文件锁定功能。</p>
<p>是否需要启动：不需要启动。</p>
<p>&nbsp;</p>
<p>38.nscd</p>
<p>说明：密码与群查找服务，此服务用于减慢N.I.S/Y.P.nist，ldap和hesiod之类的服务，专门为这些服务提供更长的中断时间。</p>
<p>是否需要启动：不需要启动。</p>
<p>&nbsp;</p>
<p>39. ntpd: 配置文件：</p>
<p>/etc/ntp.conf</p>
<p>/etc/sysconfig/ntpd</p>
<p>预设端口：使用port：123</p>
<p>说明：Network time Protocol daemon，网络时间校正协议。简单的说,NTP是用来使系统和一个精确的时间源保持时间同步的协议。</p>
<p>是否需要启动：一般不需要启动。</p>
<p>&nbsp;</p>
<p>40. oddjobd:</p>
<p>说明：oddjobd为无特权的应用程序提供一组有特权的操作来完成它们的动作。</p>
<p>是否需要启动：不需要启动。</p>
<p>&nbsp;</p>
<p>41. pand:</p>
<p>说明：跟蓝牙有关，pand允许你通过蓝牙连接以太网。</p>
<p>是否需要启动：不需要启动。</p>
<p>&nbsp;</p>
<p>42. pcscd:</p>
<p>说明：该服务提供智能卡（和嵌入在信用卡，识别卡里的小芯片一样大小）和智能卡读卡器支持。</p>
<p>是否需要启动：如果没有读卡设备，那就快关闭它。</p>
<p>&nbsp;</p>
<p>43. portmap:</p>
<p>预设端口：使用port：111</p>
<p>说明：Portmap守护程序为RPC服务，如NIS和NFS提供动态端口的分配。</p>
<p>是否需要启动：如果你启用类似NFS的服务，否则不需要启动。</p>
<p>&nbsp;</p>
<p>44. psacct:</p>
<p>说明：包括几个工具用来监控进程活动的工具，包括ac,lastcomm, accton 和sa。</p>
<p>是否需要启动：不需要启动。</p>
<p>&nbsp;</p>
<p>45. rdisc:</p>
<p>说明：这是一个端口监控程序，用来发现本地子网的路由。</p>
<p>是否需要启动：不需要启动。</p>
<p>&nbsp;</p>
<p>46. readahead_early，readahead_later: 配置文件：</p>
<p>/etc/readahead.early.files</p>
<p>/etc/readahead.files</p>
<p>说明：readahead和readahead_early是最新推出的两个后台运行的守护程序。其作用是在启动系统期间，把启动系统所要用到的文件首先读取到内存中，然后在内存中进行执行，以加快系统的启动速度。而上面两个配置文件就保存着把要读取到内存的文件列表。</p>
<p>&nbsp;</p>
<p>47. restorecond:</p>
<p>说明：用于给 SELinux 监测和重新加载正确的文件上下文（file contexts）。</p>
<p>是否需要启动：如果使用SELinux就开启它。</p>
<p>&nbsp;</p>
<p>48.rpcgssd:</p>
<p>说明：用于NFSv4版本。</p>
<p>是否需要启动：不需要启动。</p>
<p>&nbsp;</p>
<p>49.rpcidmapd:</p>
<p>说明：用于NFSv4版本。</p>
<p>是否需要启动：不需要启动。</p>
<p>&nbsp;</p>
<p>50.rpcsvcgssd:</p>
<p>说明：gestion NFS v4，是Linux 2.6内核新添的功能。</p>
<p>是否需要启动：不需要启动。</p>
<p>&nbsp;</p>
<p>51.saslauthd:</p>
<p>说明：使用SASL的认证守护程序。</p>
<p>&nbsp;</p>
<p>52.sendmail:</p>
<p>说明：邮件服务器，在局域网内传递或支持一个共享的 IMAP 或 POP3 服务。</p>
<p>是否需要启动：不需要启动。</p>
<p>&nbsp;</p>
<p>53.smartd:</p>
<p>说明：Self Monitor Analysis and Reporting Technology System服务用于监测并预测磁盘失败或磁盘问题（前提：磁盘必须支持 SMART）。</p>
<p>是否需要启动：如果是服务器那最好开启它。</p>
<p>&nbsp;</p>
<p>54.smb:配置文件：/etc/samba/*</p>
<p>预设端口：使用port：137~139，445等。</p>
<p>说明：这个服务就是模拟Linux成为windows的网上邻居。</p>
<p>是否需要启动：不需要启动。</p>
<p>&nbsp;</p>
<p>55.spamassassin:</p>
<p>说明：SpamAssassin是一款功能强大的反垃圾邮件系统。</p>
<p>是否需要启动：不需要启动。</p>
<p>&nbsp;</p>
<p>56.squid:</p>
<p>说明：高速缓存工具，用于高速缓存网络页面及DNS登录。</p>
<p>是否需要启动：不需要启动。</p>
<p>&nbsp;</p>
<p>57.sshd: 配置文件：</p>
<p>OpenSSH服务器配置文件：/etc/ssh/sshd_config</p>
<p>OpenSSH客户端配置文件：/etc/ssh/ssh_config</p>
<p>预设端口：22</p>
<p>说明：Secure Shell Protocol，实现安全地远程登录管理主机。</p>
<p>是否需要启动：如果想实现远程管理，就需要启动。</p>
<p>&nbsp;</p>
<p>58.syslog: 配置文件：/etc/syslog.conf</p>
<p>预设端口：无</p>
<p>说明：记录所有的系统行为。</p>
<p>是否需要启动：必须启动。</p>
<p>&nbsp;</p>
<p>59.tux:</p>
<p>说明：TUX是一种有GPL（GNU General Public License ）许可的基于内核的Web服务器。</p>
<p>&nbsp;</p>
<p>60.vncserver:</p>
<p>说明：VNC（Virtual Network Computing，虚拟网络计算），它提供了一种在本地系统上显示远程计算机整个"桌面"的轻量型协议。</p>
<p>是否需要启动：如果要提供远程图形界面的管理就需要启动。</p>
<p>&nbsp;</p>
<p>61.vsftpd: 配置文件：/etc/vsftpd/vsftpd.conf</p>
<p>预设端口：21，20</p>
<p>说明：FTP服务器软件。</p>
<p>是否需要启动：如果要提供FTP服务就启动。</p>
<p>&nbsp;</p>
<p>62.winbind:</p>
<p>说明：Samba名称服务器，Samba网络运行所必需。务将用户与群数据从windows网络映射到Linux工作站中。</p>
<p>是否需要启动：不需要启动。</p>
<p>&nbsp;</p>
<p>63.wpa_supplicant:</p>
<p>说明：提供无线局域网的认证、协商和漫游功能。</p>
<p>是否需要启动：不需要启动。</p>
<p>&nbsp;</p>
<p>64.xfs:</p>
<p>预设端口：TCP 7100</p>
<p>说明：x font server，X Window字型服务器，为本地和远程X服务器提供字型集。</p>
<p>是否需要启动：如果使用run-level为5的图形界面，那么就需要启动。</p>
<p>&nbsp;</p>
<p>65. xinetd 配置文件：/etc/xinetd.conf</p>
<p>预设端口：不一定，要看设定值。</p>
<p>说明：xinetd作为inetd的后续版本，负责管理系统中不频繁使用的服务，这些服务程序在有请求时才由xinetd服务负责启动运行，一旦完成服务请求服务程序结束运行，这样可以有效地减少对系统资源的占用率。通常，xinetd管理的程序有telnet、ftp、rsh和rlogin。关闭 inetd也就关闭了这些由它管理的服务。</p>
<p>是否需要启动：必须启动。</p>
<p>&nbsp;</p>
<p>66.ypbind:</p>
<p>说明：这个进程是NIS的客户端组件，它负责查询客户端用来查询信息的NIS服务器，ypbind进程将NIS客户端绑定到一个NIS域，它必须在所有运行NIS客户端程序的机器上运行。</p>
<p>&nbsp;</p>
<p>67.yum-updatesd: 配置文件：/etc/yum.conf</p>
<p>说明：Yellow Dog UpdaterModified，是一个自动更新、安装和删除RPM软件包的管理程序，它会自动计算软件包的管理程序，并判断哪些软件应该安装，哪些软件则不必安装。</p>
<p>是否需要启动：以系统管理策略而决定是否启动。</p><img src ="http://www.blogjava.net/asdtiang/aggbug/349953.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/asdtiang/" target="_blank">asdtiang</a> 2011-05-10 20:36 <a href="http://www.blogjava.net/asdtiang/archive/2011/05/10/349953.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>java js html编码与解码问题</title><link>http://www.blogjava.net/asdtiang/archive/2011/05/05/349510.html</link><dc:creator>asdtiang</dc:creator><author>asdtiang</author><pubDate>Thu, 05 May 2011 03:07:00 GMT</pubDate><guid>http://www.blogjava.net/asdtiang/archive/2011/05/05/349510.html</guid><wfw:comment>http://www.blogjava.net/asdtiang/comments/349510.html</wfw:comment><comments>http://www.blogjava.net/asdtiang/archive/2011/05/05/349510.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/asdtiang/comments/commentRss/349510.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/asdtiang/services/trackbacks/349510.html</trackback:ping><description><![CDATA[js中编码与解码：<br />
网上转的：http://www.cnblogs.com/hubcarl/archive/2009/04/11/1433707.html<br />
<p>escape(), encodeURI()和encodeURIComponent()是在Javascript中用于编码字符串的三个常用的方法<br />
escape() 方法</p>
<p>escape方法以Unicode格式返回一个包含传入参数内容的string类型的值。 Escape方法会将传入参数中所有的空格、标点符号、重音字符以及其它任何非ASCII字符替换为%xx的编码形式，其中xx与其所表示的字符的16进制数表示形式相同。如空格字符的16进制表示形式为0x20，则此时xx应为20，即escape(&#8216; &#8217;) 返回&#8220;%20&#8221;。</p>
<p>escape和unescape方法能够帮助你编码和解码字符串。escape方法对于ISO Latin字符集中的字符组成的参数，返回其16进制编码。相对应的，unescape方法则能将16进制编码形式的参数转化成为其ASCII码形式。</p>
<p>encodeURI()方法</p>
<p>encodeURI方法返回一个经过编码的URI。如果将encodeURI方法的编码结果传递给decodeURI方法作参数，则能得到原始的未编码的字符串。需要注意到是encodeURI方法不编码如下字符":", "/", ";", "?"。如果想要编码这些字符，请使用encodeURIComponent方法。通过将每个属于特定的字符集合的字符替换为一个、两个或者三个（为什么是&#8220;一个、两个或者三个&#8221;本人也没有搞懂，望高人赐教）使用UTF-8编码来表示这个字符的escape序列来编码一个URI。如 ~!@#$%^&amp;*(){}[]=:/,;?+\''"\\ 将被替换为 ~!@#$%25%5E&amp;*()%7B%7D%5B%5D=:/,;?+''%22%5C</p>
<p>encodeURIComponent()方法</p>
<p>encodeURIComponent方法返回一个编码过的URI。如果将encodeURIComponent方法的编码结果传递给encodeURIComponent方法作参数，则能得到原始的未编码的字符串。因为encodeURIComponent方法会编码所有的字符，所以如果待编码的字符串是用来表示一个路径（如/dir1/dir2/index.htm）时，就一定要小心使用了。&#8216;/&#8217;符号会被其编码之后，将不再是一个有效的路径标识符，所以不能被web服务器正确地识别。当字符串包含一个单独的URI component(指?后面的请求参数)的时候，请使用此方法。通过将每个属于特定的字符集合的字符替换为一个、两个或者三个（为什么是&#8220;一个、两个或者三个&#8221;本人也没有搞懂，望高人赐教）使用UTF-8编码来表示这个字符的escape序列来编码一个URIComponent。</p>
<p>有什么区别？何时使用？<br />
&nbsp; <br />
escape方法并不编码字符+。而我们知道，在用户提交的表单字段中，如果有空格，则会被转化为+字符，而服务器解析的时候则会认为+号代表空格。由于这个缺陷，escape方法并不能正确地处理所有的非ASCII字符，你应当尽量避免使用escape方法，取而代之，你最好选择encodeURIComponent()方法。<br />
escape()不编码的字符：@*/+</p>
<p>相对于使用escape方法，使用encodeURI方法会显得更专业一些。当你需要编码一整个URI的时候，你可以使用此方法，因为URI中的合法字符都不会被编码转换。需要注意到是字符&#8217;也是URI中的合法字符，所以也不会被编码转换。<br />
encodeURI() 不编码的字符： ~!@#$&amp;*()=:/,;?+''</p>
<p>encodeURIComponent方法在编码单个URIComponent（指请求参数）应当是最常用的。需要注意到是字符&#8217;也是URI中的合法字符，所以也不会被编码转换。<br />
encodeURIComponent()不编码的字符： ~!*()''<br />
<br />
下面是自己写的<br />
再看下jdk文档里的编码和解码：<br />
<br />
</p>
<dl>
<dt>
<pre>public class <strong>URLEncoder</strong><dt>extends <a title="java.lang 中的类" href="mk:@MSITStore:D:\API文档\java\JDK_API_1_6_zh_CN.CHM::/java/lang/Object.html">Object</a></dt></pre>
</dt></dl>
<pre></pre>
<p>HTML 格式编码的实用工具类。该类包含了将 String 转换为 <code>application/x-www-form-urlencoded</code> MIME 格式的静态方法。有关 HTML 格式编码的更多信息，请参阅 HTML <a href="http://www.w3.org/TR/html4/">规范</a>。
<p>对 String 编码时，使用以下规则：
<p>
<ul>
    <li>字母数字字符 "<code>a</code>" 到 "<code>z</code>"、"<code>A</code>" 到 "<code>Z</code>" 和 "<code>0</code>" 到 "<code>9</code>" 保持不变。
    <li>特殊字符 "<code>.</code>"、"<code>-</code>"、"<code>*</code>" 和 "<code>_</code>" 保持不变。
    <li>空格字符 "<code>&nbsp;</code>" 转换为一个加号 "<code>+</code>"。
    <li>所有其他字符都是不安全的，因此首先使用一些编码机制将它们转换为一个或多个字节。然后每个字节用一个包含 3 个字符的字符串 "<code>%<em>xy</em></code>" 表示，其中 <em>xy</em> 为该字节的两位十六进制表示形式。推荐的编码机制是 UTF-8。但是，出于兼容性考虑，如果未指定一种编码，则使用相应平台的默认编码。 </li>
</ul>
<p>例如，使用 UTF-8 编码机制，字符串 "The string &#252;@foo-bar" 将转换为 "The+string+%C3%BC%40foo-bar"，因为在 UTF-8 中，字符 &#252; 编码为两个字节，C3 （十六进制）和 BC （十六进制），字符 @ 编码为一个字节 40 （十六进制）。 <br />
<br />
</p>
<dl>
<dt>
<pre>public class <strong>URLDecoder</strong><dt>extends <a title="java.lang 中的类" href="mk:@MSITStore:D:\API文档\java\JDK_API_1_6_zh_CN.CHM::/java/lang/Object.html">Object</a></dt></pre>
</dt></dl>
<pre></pre>
<p>HTML 格式解码的实用工具类。该类包含了将 String 从 <code>application/x-www-form-urlencoded</code> MIME 格式解码的静态方法。
<p>该转换过程正好与 URLEncoder 类使用的过程相反。假定已编码的字符串中的所有字符为下列之一："<code>a</code>" 到 "<code>z</code>"、"<code>A</code>" 到 "<code>Z</code>"、"<code>0</code>" 到 "<code>9</code>" 和 "<code>-</code>"、"<code>_</code>"、"<code>.</code>" 以及 "<code>*</code>"。允许有 "<code>%</code>" 字符，但是将它解释为特殊转义序列的开始。
<p>转换中使用以下规则：
<p>
<ul>
    <li>字母数字字符 "<code>a</code>" 到 "<code>z</code>"、"<code>A</code>" 到 "<code>Z</code>" 和 "<code>0</code>" 到 "<code>9</code>" 保持不变。
    <li>特殊字符 "<code>.</code>"、"<code>-</code>"、"<code>*</code>" 和 "<code>_</code>" 保持不变。
    <li>加号 "<code>+</code>" 转换为空格字符 "<code>&nbsp;</code>"。
    <li>将把 "<code>%<em>xy</em></code>" 格式序列视为一个字节，其中 <em>xy</em> 为 8 位的两位十六进制表示形式。然后，所有连续包含一个或多个这些字节序列的子字符串，将被其编码可生成这些连续字节的字符所代替。可以指定对这些字符进行解码的编码机制，或者如果未指定的话，则使用平台的默认编码机制。 </li>
</ul>
<p>该解码器处理非法字符串有两种可能的方法。一种方法是不管该非法字符，另一种方法是抛出 <tt><a title="java.lang 中的类" href="mk:@MSITStore:D:\API文档\java\JDK_API_1_6_zh_CN.CHM::/java/lang/IllegalArgumentException.html"><code>IllegalArgumentException</code></a></tt> 异常。解码器具体采用哪种方法取决于实现。<br />
<br />
</p>
<p><br />
现在的问题是：服务器返回字符到页面，页面又调用js，这个时候肯定要转义下，这是相对比较简单的需求。<br />
服务器只需借助于apache commons包里的StringEscapeUtils类，在struts2里其实已经集成在xwrok包。<br />
StringEscapeUtils.escapeJavaScript(returnString);<br />
这样就可以搞定这个问题。<br />
另外也可以用js去处理这个问题，不过没有实践，主要是自己js水平有点差，<br />
escapeJavaScript对应的源码如下：<br />
</p>
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;escapeJavaStyleString(Writer&nbsp;out,&nbsp;String&nbsp;str,&nbsp;</span><span style="color: #0000ff">boolean</span><span style="color: #000000">&nbsp;escapeSingleQuote,<br />
<img id="Codehighlighter1_152_2764_Open_Image" onclick="this.style.display='none'; Codehighlighter1_152_2764_Open_Text.style.display='none'; Codehighlighter1_152_2764_Closed_Image.style.display='inline'; Codehighlighter1_152_2764_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" /><img style="display: none" id="Codehighlighter1_152_2764_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_152_2764_Closed_Text.style.display='none'; Codehighlighter1_152_2764_Open_Image.style.display='inline'; Codehighlighter1_152_2764_Open_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">boolean</span><span style="color: #000000">&nbsp;escapeForwardSlash)&nbsp;</span><span style="color: #0000ff">throws</span><span style="color: #000000">&nbsp;IOException&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_152_2764_Closed_Text"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_152_2764_Open_Text"><span style="color: #000000">{<br />
<img id="Codehighlighter1_179_268_Open_Image" onclick="this.style.display='none'; Codehighlighter1_179_268_Open_Text.style.display='none'; Codehighlighter1_179_268_Closed_Image.style.display='inline'; Codehighlighter1_179_268_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" /><img style="display: none" id="Codehighlighter1_179_268_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_179_268_Closed_Text.style.display='none'; Codehighlighter1_179_268_Open_Image.style.display='inline'; Codehighlighter1_179_268_Open_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(out&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">null</span><span style="color: #000000">)&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_179_268_Closed_Text"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_179_268_Open_Text"><span style="color: #000000">{<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">throw</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;IllegalArgumentException(</span><span style="color: #000000">"</span><span style="color: #000000">The&nbsp;Writer&nbsp;must&nbsp;not&nbsp;be&nbsp;null</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img id="Codehighlighter1_295_325_Open_Image" onclick="this.style.display='none'; Codehighlighter1_295_325_Open_Text.style.display='none'; Codehighlighter1_295_325_Closed_Image.style.display='inline'; Codehighlighter1_295_325_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" /><img style="display: none" id="Codehighlighter1_295_325_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_295_325_Closed_Text.style.display='none'; Codehighlighter1_295_325_Open_Image.style.display='inline'; Codehighlighter1_295_325_Open_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(str&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">null</span><span style="color: #000000">)&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_295_325_Closed_Text"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_295_325_Open_Text"><span style="color: #000000">{<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;sz;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sz&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;str.length();<br />
<img id="Codehighlighter1_407_2758_Open_Image" onclick="this.style.display='none'; Codehighlighter1_407_2758_Open_Text.style.display='none'; Codehighlighter1_407_2758_Closed_Image.style.display='inline'; Codehighlighter1_407_2758_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" /><img style="display: none" id="Codehighlighter1_407_2758_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_407_2758_Closed_Text.style.display='none'; Codehighlighter1_407_2758_Open_Image.style.display='inline'; Codehighlighter1_407_2758_Open_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">for</span><span style="color: #000000">&nbsp;(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;i&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">;&nbsp;i&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">&nbsp;sz;&nbsp;i</span><span style="color: #000000">++</span><span style="color: #000000">)&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_407_2758_Closed_Text"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_407_2758_Open_Text"><span style="color: #000000">{<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">char</span><span style="color: #000000">&nbsp;ch&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;str.charAt(i);<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" /><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;handle&nbsp;unicode</span><span style="color: #008000"><br />
<img id="Codehighlighter1_505_565_Open_Image" onclick="this.style.display='none'; Codehighlighter1_505_565_Open_Text.style.display='none'; Codehighlighter1_505_565_Closed_Image.style.display='inline'; Codehighlighter1_505_565_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" /><img style="display: none" id="Codehighlighter1_505_565_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_505_565_Closed_Text.style.display='none'; Codehighlighter1_505_565_Open_Image.style.display='inline'; Codehighlighter1_505_565_Open_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(ch&nbsp;</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0xfff</span><span style="color: #000000">)&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_505_565_Closed_Text"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_505_565_Open_Text"><span style="color: #000000">{<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;out.write(</span><span style="color: #000000">"</span><span style="color: #000000">\\u</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;hex(ch));<br />
<img id="Codehighlighter1_587_648_Open_Image" onclick="this.style.display='none'; Codehighlighter1_587_648_Open_Text.style.display='none'; Codehighlighter1_587_648_Closed_Image.style.display='inline'; Codehighlighter1_587_648_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" /><img style="display: none" id="Codehighlighter1_587_648_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_587_648_Closed_Text.style.display='none'; Codehighlighter1_587_648_Open_Image.style.display='inline'; Codehighlighter1_587_648_Open_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">else</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(ch&nbsp;</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0xff</span><span style="color: #000000">)&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_587_648_Closed_Text"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_587_648_Open_Text"><span style="color: #000000">{<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;out.write(</span><span style="color: #000000">"</span><span style="color: #000000">\\u0</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;hex(ch));<br />
<img id="Codehighlighter1_670_732_Open_Image" onclick="this.style.display='none'; Codehighlighter1_670_732_Open_Text.style.display='none'; Codehighlighter1_670_732_Closed_Image.style.display='inline'; Codehighlighter1_670_732_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" /><img style="display: none" id="Codehighlighter1_670_732_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_670_732_Closed_Text.style.display='none'; Codehighlighter1_670_732_Open_Image.style.display='inline'; Codehighlighter1_670_732_Open_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">else</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(ch&nbsp;</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0x7f</span><span style="color: #000000">)&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_670_732_Closed_Text"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_670_732_Open_Text"><span style="color: #000000">{<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;out.write(</span><span style="color: #000000">"</span><span style="color: #000000">\\u00</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;hex(ch));<br />
<img id="Codehighlighter1_752_1830_Open_Image" onclick="this.style.display='none'; Codehighlighter1_752_1830_Open_Text.style.display='none'; Codehighlighter1_752_1830_Closed_Image.style.display='inline'; Codehighlighter1_752_1830_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" /><img style="display: none" id="Codehighlighter1_752_1830_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_752_1830_Closed_Text.style.display='none'; Codehighlighter1_752_1830_Open_Image.style.display='inline'; Codehighlighter1_752_1830_Open_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">else</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(ch&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">32</span><span style="color: #000000">)&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_752_1830_Closed_Text"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_752_1830_Open_Text"><span style="color: #000000">{<br />
<img id="Codehighlighter1_782_1816_Open_Image" onclick="this.style.display='none'; Codehighlighter1_782_1816_Open_Text.style.display='none'; Codehighlighter1_782_1816_Closed_Image.style.display='inline'; Codehighlighter1_782_1816_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" /><img style="display: none" id="Codehighlighter1_782_1816_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_782_1816_Closed_Text.style.display='none'; Codehighlighter1_782_1816_Open_Image.style.display='inline'; Codehighlighter1_782_1816_Open_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">switch</span><span style="color: #000000">&nbsp;(ch)&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_782_1816_Closed_Text"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_782_1816_Open_Text"><span style="color: #000000">{<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">case</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">'</span><span style="color: #000000">\b</span><span style="color: #000000">'</span><span style="color: #000000">&nbsp;:<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;out.write(</span><span style="color: #000000">'</span><span style="color: #000000">\\</span><span style="color: #000000">'</span><span style="color: #000000">);<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;out.write(</span><span style="color: #000000">'</span><span style="color: #000000">b</span><span style="color: #000000">'</span><span style="color: #000000">);<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">break</span><span style="color: #000000">;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">case</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">'</span><span style="color: #000000">\n</span><span style="color: #000000">'</span><span style="color: #000000">&nbsp;:<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;out.write(</span><span style="color: #000000">'</span><span style="color: #000000">\\</span><span style="color: #000000">'</span><span style="color: #000000">);<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;out.write(</span><span style="color: #000000">'</span><span style="color: #000000">n</span><span style="color: #000000">'</span><span style="color: #000000">);<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">break</span><span style="color: #000000">;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">case</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">'</span><span style="color: #000000">\t</span><span style="color: #000000">'</span><span style="color: #000000">&nbsp;:<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;out.write(</span><span style="color: #000000">'</span><span style="color: #000000">\\</span><span style="color: #000000">'</span><span style="color: #000000">);<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;out.write(</span><span style="color: #000000">'</span><span style="color: #000000">t</span><span style="color: #000000">'</span><span style="color: #000000">);<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">break</span><span style="color: #000000">;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">case</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">'</span><span style="color: #000000">\f</span><span style="color: #000000">'</span><span style="color: #000000">&nbsp;:<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;out.write(</span><span style="color: #000000">'</span><span style="color: #000000">\\</span><span style="color: #000000">'</span><span style="color: #000000">);<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;out.write(</span><span style="color: #000000">'</span><span style="color: #000000">f</span><span style="color: #000000">'</span><span style="color: #000000">);<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">break</span><span style="color: #000000">;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">case</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">'</span><span style="color: #000000">\r</span><span style="color: #000000">'</span><span style="color: #000000">&nbsp;:<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;out.write(</span><span style="color: #000000">'</span><span style="color: #000000">\\</span><span style="color: #000000">'</span><span style="color: #000000">);<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;out.write(</span><span style="color: #000000">'</span><span style="color: #000000">r</span><span style="color: #000000">'</span><span style="color: #000000">);<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">break</span><span style="color: #000000">;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">default</span><span style="color: #000000">&nbsp;:<br />
<img id="Codehighlighter1_1587_1673_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1587_1673_Open_Text.style.display='none'; Codehighlighter1_1587_1673_Closed_Image.style.display='inline'; Codehighlighter1_1587_1673_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" /><img style="display: none" id="Codehighlighter1_1587_1673_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_1587_1673_Closed_Text.style.display='none'; Codehighlighter1_1587_1673_Open_Image.style.display='inline'; Codehighlighter1_1587_1673_Open_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(ch&nbsp;</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0xf</span><span style="color: #000000">)&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_1587_1673_Closed_Text"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_1587_1673_Open_Text"><span style="color: #000000">{<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;out.write(</span><span style="color: #000000">"</span><span style="color: #000000">\\u00</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;hex(ch));<br />
<img id="Codehighlighter1_1680_1767_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1680_1767_Open_Text.style.display='none'; Codehighlighter1_1680_1767_Closed_Image.style.display='inline'; Codehighlighter1_1680_1767_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" /><img style="display: none" id="Codehighlighter1_1680_1767_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_1680_1767_Closed_Text.style.display='none'; Codehighlighter1_1680_1767_Open_Image.style.display='inline'; Codehighlighter1_1680_1767_Open_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">else</span><span style="color: #000000">&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_1680_1767_Closed_Text"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_1680_1767_Open_Text"><span style="color: #000000">{<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;out.write(</span><span style="color: #000000">"</span><span style="color: #000000">\\u000</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;hex(ch));<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">break</span><span style="color: #000000">;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img id="Codehighlighter1_1837_2748_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1837_2748_Open_Text.style.display='none'; Codehighlighter1_1837_2748_Closed_Image.style.display='inline'; Codehighlighter1_1837_2748_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" /><img style="display: none" id="Codehighlighter1_1837_2748_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_1837_2748_Closed_Text.style.display='none'; Codehighlighter1_1837_2748_Open_Image.style.display='inline'; Codehighlighter1_1837_2748_Open_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">else</span><span style="color: #000000">&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_1837_2748_Closed_Text"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_1837_2748_Open_Text"><span style="color: #000000">{<br />
<img id="Codehighlighter1_1867_2734_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1867_2734_Open_Text.style.display='none'; Codehighlighter1_1867_2734_Closed_Image.style.display='inline'; Codehighlighter1_1867_2734_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" /><img style="display: none" id="Codehighlighter1_1867_2734_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_1867_2734_Closed_Text.style.display='none'; Codehighlighter1_1867_2734_Open_Image.style.display='inline'; Codehighlighter1_1867_2734_Open_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">switch</span><span style="color: #000000">&nbsp;(ch)&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_1867_2734_Closed_Text"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_1867_2734_Open_Text"><span style="color: #000000">{<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">case</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">'</span><span style="color: #000000">\</span><span style="color: #000000">''</span><span style="color: #000000">&nbsp;:</span><span style="color: #000000"><br />
<img id="Codehighlighter1_1949_2022_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1949_2022_Open_Text.style.display='none'; Codehighlighter1_1949_2022_Closed_Image.style.display='inline'; Codehighlighter1_1949_2022_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" /><img style="display: none" id="Codehighlighter1_1949_2022_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_1949_2022_Closed_Text.style.display='none'; Codehighlighter1_1949_2022_Open_Image.style.display='inline'; Codehighlighter1_1949_2022_Open_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(escapeSingleQuote)&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_1949_2022_Closed_Text"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_1949_2022_Open_Text"><span style="color: #000000">{<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;out.write(</span><span style="color: #000000">'</span><span style="color: #000000">\\</span><span style="color: #000000">'</span><span style="color: #000000">);<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;out.write(</span><span style="color: #000000">'</span><span style="color: #000000">\</span><span style="color: #000000">''</span><span style="color: #000000">);</span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">break</span><span style="color: #000000">;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">case</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">'</span><span style="color: #000000">"</span><span style="color: #000000">'</span><span style="color: #000000">&nbsp;:<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;out.write(</span><span style="color: #000000">'</span><span style="color: #000000">\\</span><span style="color: #000000">'</span><span style="color: #000000">);<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;out.write(</span><span style="color: #000000">'</span><span style="color: #000000">"</span><span style="color: #000000">'</span><span style="color: #000000">);<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">break</span><span style="color: #000000">;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">case</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">'</span><span style="color: #000000">\\</span><span style="color: #000000">'</span><span style="color: #000000">&nbsp;:<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;out.write(</span><span style="color: #000000">'</span><span style="color: #000000">\\</span><span style="color: #000000">'</span><span style="color: #000000">);<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;out.write(</span><span style="color: #000000">'</span><span style="color: #000000">\\</span><span style="color: #000000">'</span><span style="color: #000000">);<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">break</span><span style="color: #000000">;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">case</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">'</span><span style="color: #000000">/</span><span style="color: #000000">'</span><span style="color: #000000">&nbsp;:<br />
<img id="Codehighlighter1_2472_2545_Open_Image" onclick="this.style.display='none'; Codehighlighter1_2472_2545_Open_Text.style.display='none'; Codehighlighter1_2472_2545_Closed_Image.style.display='inline'; Codehighlighter1_2472_2545_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" /><img style="display: none" id="Codehighlighter1_2472_2545_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_2472_2545_Closed_Text.style.display='none'; Codehighlighter1_2472_2545_Open_Image.style.display='inline'; Codehighlighter1_2472_2545_Open_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(escapeForwardSlash)&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_2472_2545_Closed_Text"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_2472_2545_Open_Text"><span style="color: #000000">{<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;out.write(</span><span style="color: #000000">'</span><span style="color: #000000">\\</span><span style="color: #000000">'</span><span style="color: #000000">);<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;out.write(</span><span style="color: #000000">'</span><span style="color: #000000">/</span><span style="color: #000000">'</span><span style="color: #000000">);<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">break</span><span style="color: #000000">;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">default</span><span style="color: #000000">&nbsp;:<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;out.write(ch);<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">break</span><span style="color: #000000">;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span></div>
<p>可以用js去实现也是一样的，网上也有类似的js代码。<br />
<br />
出现的问题描述：服务器返了string，经过escapeJavaScript处理后到js代码，js代码又要用这些string去输出html.比如img的src为js处理后的字符串，<br />
最后经过测试得出以上语句去处理这些问题：<br />
string=encodeURIComponent(string).replace(<a>/@/g,'%40').replace(/'/g,"&#39;").replace(/"/g,'&#34;'</a>);<br />
转化@是为了获取服务器资源，比如图片地址，可以正常输出。其实输出时后面的转化单引号和双引号是为了保险起见。比如&lt;img src='*****.jpg'/&gt;这时就只需要转化单引号就可以了，这里主要是针对图片的处理来做的，@在其它地方有没有必要转化没有测试，如果要显示图片，得转化。<br />
<br />
出现的问题描述：带特殊字符串的图片名要正常显示出来，得转化下：比如要显示文件名为：~！@#￥%&#8230;&#8230;&amp;*（）——+.jpg的图片，代码如下：<br />
java.net.URLEncoder.encode(photoName,"utf-8")).replace("+", "%20"),转化时因为URLEncoder把空格转化成了+,所以最后得把+替换回去，20是十六进制的，相当于十进制的32，即对应为空格。<br />
经过转化后，图片带特殊字符就能正常显示。<br />
<br />
</p><img src ="http://www.blogjava.net/asdtiang/aggbug/349510.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/asdtiang/" target="_blank">asdtiang</a> 2011-05-05 11:07 <a href="http://www.blogjava.net/asdtiang/archive/2011/05/05/349510.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>grails 学习记--command-controller</title><link>http://www.blogjava.net/asdtiang/archive/2011/04/29/349277.html</link><dc:creator>asdtiang</dc:creator><author>asdtiang</author><pubDate>Fri, 29 Apr 2011 07:00:00 GMT</pubDate><guid>http://www.blogjava.net/asdtiang/archive/2011/04/29/349277.html</guid><wfw:comment>http://www.blogjava.net/asdtiang/comments/349277.html</wfw:comment><comments>http://www.blogjava.net/asdtiang/archive/2011/04/29/349277.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/asdtiang/comments/commentRss/349277.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/asdtiang/services/trackbacks/349277.html</trackback:ping><description><![CDATA[grails 命令：<br />
shell<br />
console&nbsp;&nbsp; //启动一个类似groovy 的console，console里可以访问domain.service等。<br />
<br />
<br />
<br />
controller里的已有变量(自己不常用的记下，其它的查看文档，例如request,reponse)<br />
<h1>actionName </h1>
<p class="paragraph">
<h2>Purpose</h2>
<p class="paragraph">Returns the name of the currently executing action.</p>
<br />
<h1>controllerName </h1>
<p class="paragraph">
<h2>Purpose</h2>
<p class="paragraph">Returns the name of the currently executing controller.</p>
<h1>defaultAction </h1>
<p class="paragraph">
<h2>Purpose</h2>
<p class="paragraph">Allows you to explicitly specify the default action that should be executed if no action is specified in the URI.
<p class="paragraph">
<h2>Examples</h2>
<p class="paragraph"></p>
<div class="code">
<pre>class BookController {
<span class="java-keyword">static</span> defaultAction = <span class="java-quote">"list"</span>
def list = {
[books:Book.list()]
}
}</pre>
</div>
<h1>grailsApplication </h1>
<p class="paragraph">
<h2>Purpose</h2>
<p class="paragraph">An instance of the <a class="api" href="file:///F:/asdtiang/grails-1.3.7/doc/api/org/codehaus/groovy/grails/commons/GrailsApplication.html">org.codehaus.groovy.grails.commons.GrailsApplication</a> class.
<p class="paragraph">
<h2>Examples</h2>
<p class="paragraph"></p>
<div class="code">
<pre>class BookController {
def list = {
def bookClass = grailsApplication.classLoader.loadClass(<span class="java-quote">"Book"</span>)
[book:bookClass.newInstance()]
}
}</pre>
</div>
<p class="paragraph">
<h2>Description</h2>
<p class="paragraph">The <code>GrailsApplication</code> class provides information about the conventions within Grails and access to <a class="api" href="file:///F:/asdtiang/grails-1.3.7/doc/api/org/codehaus/groovy/grails/commons/GrailsApplication.html#getMetadata()">metadata</a>, <a class="api" href="file:///F:/asdtiang/grails-1.3.7/doc/api/org/codehaus/groovy/grails/commons/GrailsApplication.html#getConfig()">config</a> and the <a class="api" href="file:///F:/asdtiang/grails-1.3.7/doc/api/org/codehaus/groovy/grails/commons/GrailsApplication.html#getClassLoader()">ClassLoader</a> </p>
<br />
<br />
<br />
<br />
<br />
<h1>servletContext </h1>
<p class="paragraph">
<h2>Purpose</h2>
<p class="paragraph">The <a class="servletAPI" href="file:///F:/asdtiang/grails-1.3.7/doc/ref/Servlet%20API/servletContext.html">servletContext</a> object is an instance of the Servlet API's <a class="api" href="http://java.sun.com/j2ee/1.4/docs/api/javax/servlet/ServletContext.html">ServletContext</a> class.
<p class="paragraph">
<h2>Examples</h2>
<p class="paragraph"></p>
<div class="code">
<pre>class BookController {
def doSomething = {
def input
<span class="java-keyword">try</span> {
input = servletContext.getResourceAsStream(<span class="java-quote">"/WEB-INF/myscript.groovy"</span>)
def result = <span class="java-keyword">new</span> GroovyShell().evaluate(input.text)
render result
}
<span class="java-keyword">finally</span> {
input.close()
}
<p class="paragraph">	}
}</p>
</pre>
</div>
<p class="paragraph">
<h2>Description</h2>
<p class="paragraph">The Servlet API's <a class="api" href="http://java.sun.com/j2ee/1.4/docs/api/javax/servlet/ServletContext.html">ServletContext</a> is useful for, amongst other things, storing global application attributes, reading local server resources and establishing information about the servlet container.</p>
<br />
<br />
<br />
<br />
<br />
<br />
<h1>withForm //防止重复提交表单</h1>
<p class="paragraph">
<h2>Purpose</h2>
<p class="paragraph">Used to handle duplicate form submissions.
<p class="paragraph">
<h2>Examples</h2>
<p class="paragraph"></p>
<div class="code">
<pre>withForm {
// good request
}.invalidToken {
// bad request
}</pre>
</div>
<p class="paragraph">
<h2>Description</h2>
<p class="paragraph">The <code>withForm</code> method requires the use of the <code>useToken</code> attribute in a <a class="tags" href="file:///F:/asdtiang/grails-1.3.7/doc/ref/Tags/form.html">form</a>
<p class="paragraph"></p>
<div class="code">
<pre><span class="xml-tag">&lt;g:form useToken=<span class="xml-quote">"true"</span> ...&gt;</span></pre>
</div>
<p class="paragraph">Then in your controller code you can use the <code>withForm</code> method to handle valid and invalid requests:
<p class="paragraph"></p>
<div class="code">
<pre>withForm {
// good request
}.invalidToken {
// bad request
}</pre>
</div>
<br />
<br />
<br />
<br />
<br />
<h1>withFormat </h1>
<p class="paragraph">
<h2>Purpose</h2>
<p class="paragraph">Used to execute different responses based on the incoming request <code>Accept</code> header, format parameter or URI extension. See <a class="guide" href="file:///F:/asdtiang/grails-1.3.7/doc/guide/single.html#6.8 Content Negotiation">content negotiation</a> for more information.
<p class="paragraph">
<h2>Examples</h2>
<p class="paragraph"></p>
<div class="code">
<pre><span class="java-keyword">import</span> grails.converters.*
<p class="paragraph">class BookController {
def books
def list = {
<span class="java-keyword">this</span>.books = Book.list()
withFormat {
html bookList:books
js { render <span class="java-quote">"alert('hello')"</span> }
xml { render books as XML }
}
}
}</p>
</pre>
</div>
<p class="paragraph">
<h2>Description</h2>
<p class="paragraph">The <code>withFormat</code> method takes a block within the scope of which you can execute different methods whose names match the content type you want to respond to. For example:
<p class="paragraph"></p>
<div class="code">
<pre>withFormat {
html bookList:books
js { render <span class="java-quote">"alert('hello')"</span> }
xml { render books as XML }
}</pre>
</div>
<p class="paragraph">Here we invoke three methods called <code>html</code>, <code>js</code> and <code>xml</code> that use mime type names configured in <code>grails-app/conf/Config.groovy</code> (See <a class="guide" href="file:///F:/asdtiang/grails-1.3.7/doc/guide/single.html#6.8 Content Negotiation">content negotiation</a> for more information). The call to <code>html</code> accepts a model (a map) which is passed on to the view. Grails will first search for a view called <code>grails-app/views/book/list.html.gsp</code> and if that is not found fallback to <code>grails-app/views/book/list.gsp</code>.
<p class="paragraph">Note that the order of the types is significant if either the request format is "all" or more than one content type has the same "q" rating in the accept header. In the former case, the first type handler in the block is executed ("html" in the short example above). The latter case is more confusing because it only holds if there is more than one content type with the highest "q" rating for which you have a type handler <strong class="bold">and</strong> you have more than one type handler matching that "q" rating. For example, say the request has "text/html" and "application/xml" with a "q" rating of 1.0, then this code: </p>
<div class="code">
<pre>withFormat {
xml { &#8230; }
html { &#8230; }
}</pre>
</div><img src ="http://www.blogjava.net/asdtiang/aggbug/349277.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/asdtiang/" target="_blank">asdtiang</a> 2011-04-29 15:00 <a href="http://www.blogjava.net/asdtiang/archive/2011/04/29/349277.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ehcache如何判断缓存数据是否存在--isKeyInCache</title><link>http://www.blogjava.net/asdtiang/archive/2011/04/22/348808.html</link><dc:creator>asdtiang</dc:creator><author>asdtiang</author><pubDate>Fri, 22 Apr 2011 07:59:00 GMT</pubDate><guid>http://www.blogjava.net/asdtiang/archive/2011/04/22/348808.html</guid><wfw:comment>http://www.blogjava.net/asdtiang/comments/348808.html</wfw:comment><comments>http://www.blogjava.net/asdtiang/archive/2011/04/22/348808.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/asdtiang/comments/commentRss/348808.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/asdtiang/services/trackbacks/348808.html</trackback:ping><description><![CDATA[<pre>boolean <strong>isKeyInCache</strong>(java.lang.Object&nbsp;key)</pre>
<dl>
<dd>An inexpensive check to see if the key exists in the cache.
<p>&nbsp;</p>
<dd>
<dl></dl></dd>
<dd>
<dl>
<dt><strong>Parameters:</strong>
<dd><code>key</code> - the key to check for
<dt><strong>Returns:</strong>
<dd>true if an Element matching the key is found in the cache. No assertions are made about the state of the Element.</dd></dl></dd></dl>
<hr />
这个方法是Ehcache的方法，它只判断key是否存在，并不判断这个缓存元素过期没有，所以当元素加入缓存时key就一直存在，所以就算元素过期，只要key被缓存过一次，这个方法就返回true,<br />
即缓存元素被移除的话，key还存在。<br />
<br />
<br />
程序就不能用这个方法来判断缓存中是否存在这个某个缓存元素。<br />
&nbsp;得用如下方法：<br />
<h3>getQuiet</h3>
<pre><a title="class in net.sf.ehcache" href="file:///F:/asdtiang/ehcache-2.3.1-distribution/ehcache-2.3.1/javadoc/net/sf/ehcache/Element.html">Element</a> <strong>getQuiet</strong>(java.lang.Object&nbsp;key)
throws java.lang.IllegalStateException,
<a title="class in net.sf.ehcache" href="file:///F:/asdtiang/ehcache-2.3.1-distribution/ehcache-2.3.1/javadoc/net/sf/ehcache/CacheException.html">CacheException</a></pre>
<dl>
<dd>Gets an element from the cache, without updating Element statistics. Cache statistics are also not updated.
<p>
<p>&nbsp;</p>
<dd>
<dl></dl></dd>
<dd>
<dl>
<dt><strong>Parameters:</strong>
<dd><code>key</code> - a serializable value
<dt><strong>Returns:</strong>
<dd>the element, or null, if it does not exist.
<dt><strong>Throws:</strong>
<dd><code>java.lang.IllegalStateException</code> - if the cache is not <a href="file:///F:/asdtiang/ehcache-2.3.1-distribution/ehcache-2.3.1/javadoc/net/sf/ehcache/Status.html#STATUS_ALIVE"><code>Status.STATUS_ALIVE</code></a>
<dd><code><a title="class in net.sf.ehcache" href="file:///F:/asdtiang/ehcache-2.3.1-distribution/ehcache-2.3.1/javadoc/net/sf/ehcache/CacheException.html">CacheException</a></code>
<dt><strong>Since:</strong></dt>
<dd>1.2</dd>
<dt><strong>See Also:</strong>
<dd><a href="file:///F:/asdtiang/ehcache-2.3.1-distribution/ehcache-2.3.1/javadoc/net/sf/ehcache/Ehcache.html#isExpired(net.sf.ehcache.Element)"><code>isExpired(net.sf.ehcache.Element)</code></a></dd></dl></dd></dl>
<hr />
<h3>isExpired</h3>
<pre>boolean <strong>isExpired</strong>(<a title="class in net.sf.ehcache" href="file:///F:/asdtiang/ehcache-2.3.1-distribution/ehcache-2.3.1/javadoc/net/sf/ehcache/Element.html">Element</a>&nbsp;element)
throws java.lang.IllegalStateException,
java.lang.NullPointerException</pre>
<dl>
<dd>Checks whether this cache element has expired.
<p>The element is expired if:
<ol>
    <li>the idle time is non-zero and has elapsed, unless the cache is eternal; or
    <li>the time to live is non-zero and has elapsed, unless the cache is eternal; or
    <li>the value of the element is null. </li>
</ol>
<p>&nbsp;</p>
<dd>
<dl></dl></dd>
<dd>
<dl>
<dt><strong>Parameters:</strong>
<dd><code>element</code> - the element to check
<dt><strong>Returns:</strong>
<dd>true if it has expired
<dt><strong>Throws:</strong>
<dd><code>java.lang.IllegalStateException</code> - if the cache is not <a href="file:///F:/asdtiang/ehcache-2.3.1-distribution/ehcache-2.3.1/javadoc/net/sf/ehcache/Status.html#STATUS_ALIVE"><code>Status.STATUS_ALIVE</code></a>
<dd><code>java.lang.NullPointerException</code> - if the element is null</dd></dl></dd></dl>
<hr />
<br />
示例代码：<br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><span style="color: #000000">Element&nbsp;element</span><span style="color: #000000">=</span><span style="color: #000000">cache.getQuiet(key);<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;log.info(</span><span style="color: #000000">"</span><span style="color: #000000">element:</span><span style="color: #000000">"</span><span style="color: #000000">+</span><span style="color: #000000">element);<br />
<img id="Codehighlighter1_88_248_Open_Image" onclick="this.style.display='none'; Codehighlighter1_88_248_Open_Text.style.display='none'; Codehighlighter1_88_248_Closed_Image.style.display='inline'; Codehighlighter1_88_248_Closed_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif"  alt="" /><img style="display: none" id="Codehighlighter1_88_248_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_88_248_Closed_Text.style.display='none'; Codehighlighter1_88_248_Open_Image.style.display='inline'; Codehighlighter1_88_248_Open_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(element</span><span style="color: #000000">!=</span><span style="color: #0000ff">null</span><span style="color: #000000">)</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_88_248_Closed_Text"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_88_248_Open_Text"><span style="color: #000000">{<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;log.info(</span><span style="color: #000000">"</span><span style="color: #000000">cache.isExpired(element):</span><span style="color: #000000">"</span><span style="color: #000000">+</span><span style="color: #000000">cache.isExpired(element));<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;log.info(</span><span style="color: #000000">"</span><span style="color: #000000">cacheName:</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;cacheName&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;key:</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;key&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;isExist:true</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">true</span><span style="color: #000000">;<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img id="Codehighlighter1_256_351_Open_Image" onclick="this.style.display='none'; Codehighlighter1_256_351_Open_Text.style.display='none'; Codehighlighter1_256_351_Closed_Image.style.display='inline'; Codehighlighter1_256_351_Closed_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif"  alt="" /><img style="display: none" id="Codehighlighter1_256_351_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_256_351_Closed_Text.style.display='none'; Codehighlighter1_256_351_Open_Image.style.display='inline'; Codehighlighter1_256_351_Open_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">else</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_256_351_Closed_Text"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_256_351_Open_Text"><span style="color: #000000">{<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;log.info(</span><span style="color: #000000">"</span><span style="color: #000000">cacheName:</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;cacheName&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;key:</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;key&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;isExist:false</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">false</span><span style="color: #000000">;<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span></div>
<br />
<br />
<br /><img src ="http://www.blogjava.net/asdtiang/aggbug/348808.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/asdtiang/" target="_blank">asdtiang</a> 2011-04-22 15:59 <a href="http://www.blogjava.net/asdtiang/archive/2011/04/22/348808.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>grails1.3.7--Failed to install plugin [mail-1.0-SNAPSHOT]. Plugin has missing JAR dependencies--解决</title><link>http://www.blogjava.net/asdtiang/archive/2011/04/21/348736.html</link><dc:creator>asdtiang</dc:creator><author>asdtiang</author><pubDate>Thu, 21 Apr 2011 11:39:00 GMT</pubDate><guid>http://www.blogjava.net/asdtiang/archive/2011/04/21/348736.html</guid><wfw:comment>http://www.blogjava.net/asdtiang/comments/348736.html</wfw:comment><comments>http://www.blogjava.net/asdtiang/archive/2011/04/21/348736.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/asdtiang/comments/commentRss/348736.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/asdtiang/services/trackbacks/348736.html</trackback:ping><description><![CDATA[bug：<a href="http://jira.grails.org/browse/GPMAIL-14"><font color="#000000">地址：</font>http://jira.grails.org/browse/GPMAIL-14</a><br />
解决方案： <a href="https://github.com/gpc/grails-mail/commit/585bb681c030c1be93ca56ad984dc994bb101107">https://github.com/gpc/grails-mail/commit/585bb681c030c1be93ca56ad984dc994bb101107<br />
</a><br />
即在BuildConfig.groovy中更改如下：<br />
&nbsp;&nbsp;
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><img id="Codehighlighter1_15_295_Open_Image" onclick="this.style.display='none'; Codehighlighter1_15_295_Open_Text.style.display='none'; Codehighlighter1_15_295_Closed_Image.style.display='inline'; Codehighlighter1_15_295_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" /><img style="display: none" id="Codehighlighter1_15_295_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_15_295_Closed_Text.style.display='none'; Codehighlighter1_15_295_Open_Image.style.display='inline'; Codehighlighter1_15_295_Open_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" /><span style="color: #000000">&nbsp;&nbsp;dependencies&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_15_295_Closed_Text"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_15_295_Open_Text"><span style="color: #000000">{<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;specify&nbsp;dependencies&nbsp;here&nbsp;under&nbsp;either&nbsp;'build',&nbsp;'compile',&nbsp;'runtime',&nbsp;'test'&nbsp;or&nbsp;'provided'&nbsp;scopes&nbsp;eg.<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" /><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;runtime&nbsp;'mysql:mysql-connector-java:5.1.13'</span><span style="color: #008000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;compile&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">javax.mail:mail:1.4.3</span><span style="color: #000000">"</span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;runtime&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">org.springframework:org.springframework.test:3.0.3.RELEASE</span><span style="color: #000000">"</span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span></div>
再run-app下载，再装插件。<br />
实在不行，就手动装。<br /><img src ="http://www.blogjava.net/asdtiang/aggbug/348736.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/asdtiang/" target="_blank">asdtiang</a> 2011-04-21 19:39 <a href="http://www.blogjava.net/asdtiang/archive/2011/04/21/348736.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>菜单网总体设计目标</title><link>http://www.blogjava.net/asdtiang/archive/2011/04/14/346934.html</link><dc:creator>asdtiang</dc:creator><author>asdtiang</author><pubDate>Thu, 14 Apr 2011 03:36:00 GMT</pubDate><guid>http://www.blogjava.net/asdtiang/archive/2011/04/14/346934.html</guid><wfw:comment>http://www.blogjava.net/asdtiang/comments/346934.html</wfw:comment><comments>http://www.blogjava.net/asdtiang/archive/2011/04/14/346934.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/asdtiang/comments/commentRss/346934.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/asdtiang/services/trackbacks/346934.html</trackback:ping><description><![CDATA[<p>系统开发环境：grails1.3.7<br />
插件大概说明：</p>
spring security,jquery(暂定),calendar,qutarz，Burning Image。<br />
<br />
<br />
主要需求描述：<br />
针对外卖而来的菜单网，网站暂时只提供，外卖方面的服务，对到饭店吃饭的情况不考虑。<br />
<br />
角色定义：管理员，会员，游客，饭店商家<br />
<br />
<br />
<br />
<br />
先写第一期要实现的功能吧。<br />
<br />
暂时不提供充值功能。只提供积分功能。<br />
<br />
商家可以增删查改菜。<br />
<br />
一个菜包含以下主要信息：菜名，图片，简介，性价比，通过网站预定是否积分，积多少分，积分是否可以兑换这个菜，多少积分可以兑换。<br />
<br />
商家活动，打折宣传。<br />
<br />
关于活动和宣传积分实行扣除制。暂时不收钱，只是一个数字而已。<br />
<br />
会员功能：<br />
<br />
基本信息维护，绑定饭店，绑定原因：积分暂不能饭店通用。在线预定，积分查看，使用积分。<br />
<br />
<br />
游客只能浏览网站，提意见等，不能进行会员的功能。<br />
<br />
网站功能：提供以上基本功能。对会员和商家增加诚信度，对商家增加服务指数。<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 会员统计：本月通过网站预定消费总额。暂时不提供历史预定查询功能，<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 只提供月统计。个人觉得历史查询没有什么意思。按菜统计我最爱吃的东西。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;商家统计：本月通过网站预定总额。最受欢迎的菜统计。查看服务统计。<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 会员可以对商家进行提意见，商家可以回复。全部显示出来。<br />
&nbsp;<br />
对每个商家提供一个主页，包括以下信息：饭店简介，饭店地图，饭店外送范围，饭店特色菜，最新活动。后台提供增加栏目，删除栏目，编辑栏目。栏目信息管理等，<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 即功能类似一个企业网，可以编辑本饭店的关键字，描述等，提供在线qq，在线客服功能。<br />
<br />
每个商家有自己外卖送出区域，区域内主要以大厦，大楼为一个点，数据由商家自己维护。<br />
<br />
暂时只做一个城市，设计数据库时考虑全国城市。根据ip返回相应城市。<br />
<br />
项目预计开发时间三个月左右。<br />
<br />
<br />
===============================================<br />
需求需要整理的地方<br />
=================<br />
对餐馆的服务方面，你告诉他们，用户形成习惯后，在网店上直接填写菜单，这样比QQ沟通效率高<br />
<br />
数据结构方面<br />
以&#8220;地区和大厦&#8221;为单位<br />
一个大厦的所有餐馆属于某个大厦<br />
这是对工作族<br />
主要围绕：餐馆们在你网<br />
站上开店，你能给他们提供什么帮助。用餐者在你这上面浏览，你能给他们提供什么服务<br />
<br />
<br />
<br /><img src ="http://www.blogjava.net/asdtiang/aggbug/346934.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/asdtiang/" target="_blank">asdtiang</a> 2011-04-14 11:36 <a href="http://www.blogjava.net/asdtiang/archive/2011/04/14/346934.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>英语学习讲座听记</title><link>http://www.blogjava.net/asdtiang/archive/2011/03/20/346647.html</link><dc:creator>asdtiang</dc:creator><author>asdtiang</author><pubDate>Sun, 20 Mar 2011 14:05:00 GMT</pubDate><guid>http://www.blogjava.net/asdtiang/archive/2011/03/20/346647.html</guid><wfw:comment>http://www.blogjava.net/asdtiang/comments/346647.html</wfw:comment><comments>http://www.blogjava.net/asdtiang/archive/2011/03/20/346647.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/asdtiang/comments/commentRss/346647.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/asdtiang/services/trackbacks/346647.html</trackback:ping><description><![CDATA[<p>一起来就冲动去了国书馆，上午看了会uml的书，感觉很好，中午出来，好不容易找了个地方吃饭。本来想回去继续看的。结果存包的地方没位了，郁闷啊，在音乐厅下面才找到。一出来就想看下那个遗址展览的，就走上去了，看了有人在哪里发门票，一看，原来要票啊，去拿了张，走了进去，一看，原来是搞雅思教育的讲座。无赖，听吧，还抽iphone4，试下，万一中了，我就high了，英语学习的确有用。下面主要记下听后总结，以便以后学习使用。<br />
<br />
总体来说，雅思考试主要讲求实用性，那个什么口试，注意以下几点：<br />
<br />
注意语法<br />
使用长句（背就可以）<br />
汗，忘记了。<br />
<br />
英语的几个阶段：说英语，冒单词，说句子，能和说英语的人交流。<br />
<br />
英语单词都是有来源，讲求学习技巧，不是死记硬背。<br />
<br />
英式英语比较贵族化，声音是逐步上升的，美式英语比较讲求平等，所以比较平衡。<br />
<br />
讲英语时应该注意口腔夸张，就如那个李阳的学习法。<br />
<br />
先听，不要听什么bbc，因为口语当中不管用。后说，最后在写。<br />
<br />
<br />
<br />
<br />
</p><img src ="http://www.blogjava.net/asdtiang/aggbug/346647.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/asdtiang/" target="_blank">asdtiang</a> 2011-03-20 22:05 <a href="http://www.blogjava.net/asdtiang/archive/2011/03/20/346647.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>java单例模式学习笔记</title><link>http://www.blogjava.net/asdtiang/archive/2011/03/15/346289.html</link><dc:creator>asdtiang</dc:creator><author>asdtiang</author><pubDate>Tue, 15 Mar 2011 04:54:00 GMT</pubDate><guid>http://www.blogjava.net/asdtiang/archive/2011/03/15/346289.html</guid><wfw:comment>http://www.blogjava.net/asdtiang/comments/346289.html</wfw:comment><comments>http://www.blogjava.net/asdtiang/archive/2011/03/15/346289.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.blogjava.net/asdtiang/comments/commentRss/346289.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/asdtiang/services/trackbacks/346289.html</trackback:ping><description><![CDATA[&nbsp;Singleton 模式的宗旨在于确保某个类只有一个实例，别且为之提供一个全局访问点。为了防止其他工作人员实例化我们的类，<br />
<br />
可以为该类创建唯一一个构造器，并将构造器的可见设置为私有。值得注意的是，如果我们创建了其他的非私有的构造器，或者根本没有为该类提<br />
<br />
供构造器，那么其他人员还是能实例化我们的类。&nbsp;如果不希望提前创建单例对象，我们可以等到第一次使用该单例对象的时候在创建它，即<br />
<br />
滞后初始化。滞后初始化单例对象有两个理由：<br />
1.也许在静态初始化时间，你没有关于如何初始化单例对象的足够信息。<br />
<br />
2.选择滞后初始化单例的目的也许为了等待资源，诸如数据库连接，尤其是在某些特定会话中不需要这个单例的应用程序中。<br />
&nbsp;&nbsp;<br />
如果在多线程环境中对单例采用滞后初始化，那么我们必须小心防止多个线程同时初始化该<br />
<p>通常单例模式在Java语言中，有两种构建方式：</p>
<ul>
    <li>懒汉方式:指全局的单例实例在第一次被使用时构建。延迟初始化。
    <li>饿汉方式:指全局的单例实例在类装载时构建。 急切初始化。 </li>
</ul>
<p>1，饿汉式单例类<br />
</p>
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><img id="Codehighlighter1_24_279_Open_Image" onclick="this.style.display='none'; Codehighlighter1_24_279_Open_Text.style.display='none'; Codehighlighter1_24_279_Closed_Image.style.display='inline'; Codehighlighter1_24_279_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" /><img style="display: none" id="Codehighlighter1_24_279_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_24_279_Closed_Text.style.display='none'; Codehighlighter1_24_279_Open_Image.style.display='inline'; Codehighlighter1_24_279_Open_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" /><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;Singleton1&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_24_279_Closed_Text"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_24_279_Open_Text"><span style="color: #000000">{<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img id="Codehighlighter1_50_53_Open_Image" onclick="this.style.display='none'; Codehighlighter1_50_53_Open_Text.style.display='none'; Codehighlighter1_50_53_Closed_Image.style.display='inline'; Codehighlighter1_50_53_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" /><img style="display: none" id="Codehighlighter1_50_53_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_50_53_Closed_Text.style.display='none'; Codehighlighter1_50_53_Open_Image.style.display='inline'; Codehighlighter1_50_53_Open_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;Singleton1()&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_50_53_Closed_Text"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_50_53_Open_Text"><span style="color: #000000">{<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;在自己内部定义自己一个实例.<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;注意这是private&nbsp;只供内部调用</span><span style="color: #008000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" /></span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;Singleton1&nbsp;instance&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;Singleton1();<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" /><br />
<img id="Codehighlighter1_156_213_Open_Image" onclick="this.style.display='none'; Codehighlighter1_156_213_Open_Text.style.display='none'; Codehighlighter1_156_213_Closed_Image.style.display='inline'; Codehighlighter1_156_213_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" /><img style="display: none" id="Codehighlighter1_156_213_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_156_213_Closed_Text.style.display='none'; Codehighlighter1_156_213_Open_Image.style.display='inline'; Codehighlighter1_156_213_Open_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_156_213_Closed_Text">/**&nbsp;*/</span><span id="Codehighlighter1_156_213_Open_Text"><span style="color: #008000">/**</span><span style="color: #008000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp;这里提供了一个供外部访问本class的静态方法，可以直接访问　　<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080">@return</span><span style="color: #008000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">*/</span></span><span style="color: #000000"><br />
<img id="Codehighlighter1_255_277_Open_Image" onclick="this.style.display='none'; Codehighlighter1_255_277_Open_Text.style.display='none'; Codehighlighter1_255_277_Closed_Image.style.display='inline'; Codehighlighter1_255_277_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" /><img style="display: none" id="Codehighlighter1_255_277_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_255_277_Closed_Text.style.display='none'; Codehighlighter1_255_277_Open_Image.style.display='inline'; Codehighlighter1_255_277_Open_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;Singleton1&nbsp;getInstance()&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_255_277_Closed_Text"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_255_277_Open_Text"><span style="color: #000000">{<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;instance;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" />}</span></span></div>
<p><br />
<br />
<br />
2，懒汉式单例类</p>
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><img id="Codehighlighter1_24_286_Open_Image" onclick="this.style.display='none'; Codehighlighter1_24_286_Open_Text.style.display='none'; Codehighlighter1_24_286_Closed_Image.style.display='inline'; Codehighlighter1_24_286_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" /><img style="display: none" id="Codehighlighter1_24_286_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_24_286_Closed_Text.style.display='none'; Codehighlighter1_24_286_Open_Image.style.display='inline'; Codehighlighter1_24_286_Open_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" /><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;Singleton2&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_24_286_Closed_Text"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_24_286_Open_Text"><span style="color: #000000">{<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" /><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;Singleton2&nbsp;instance&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">null</span><span style="color: #000000">;<br />
<img id="Codehighlighter1_75_162_Open_Image" onclick="this.style.display='none'; Codehighlighter1_75_162_Open_Text.style.display='none'; Codehighlighter1_75_162_Closed_Image.style.display='inline'; Codehighlighter1_75_162_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" /><img style="display: none" id="Codehighlighter1_75_162_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_75_162_Closed_Text.style.display='none'; Codehighlighter1_75_162_Open_Image.style.display='inline'; Codehighlighter1_75_162_Open_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_75_162_Closed_Text">/**&nbsp;*/</span><span id="Codehighlighter1_75_162_Open_Text"><span style="color: #008000">/**</span><span style="color: #008000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;这个方法比上面有所改进，不用每次都进行生成对象，只是第一次　　　<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;使用时生成实例，提高了效率！<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080">@return</span><span style="color: #008000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">*/</span></span><span style="color: #000000"><br />
<img id="Codehighlighter1_205_284_Open_Image" onclick="this.style.display='none'; Codehighlighter1_205_284_Open_Text.style.display='none'; Codehighlighter1_205_284_Closed_Image.style.display='inline'; Codehighlighter1_205_284_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" /><img style="display: none" id="Codehighlighter1_205_284_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_205_284_Closed_Text.style.display='none'; Codehighlighter1_205_284_Open_Image.style.display='inline'; Codehighlighter1_205_284_Open_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;&nbsp;Singleton2&nbsp;getInstance()&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_205_284_Closed_Text"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_205_284_Open_Text"><span style="color: #000000">{&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(instance&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">null</span><span style="color: #000000">)<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;instance&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;Singleton2();<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;instance;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" />}</span></span></div>
<br />
<br />
<br />
下面主要多线程问题，在懒汉单例中，单线程是没有问题的，但多线程时就会有可能出现两个或者以上的Singletion2实例的情况。<br />
<br />
例如：线程1在判断instance==null为真，扫行new操作时，在执行new操作之前，判断为真之后，线程2正好执行判断操作，这时instance还为null.因此，线程2也会执行new操作。以此类推，在高并发下面，就可能存在两个或者以上的Singletion2的实例。显然，这是不正确的。<br />
<br />
因此改变代码如下：<br />
<br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><img id="Codehighlighter1_24_324_Open_Image" onclick="this.style.display='none'; Codehighlighter1_24_324_Open_Text.style.display='none'; Codehighlighter1_24_324_Closed_Image.style.display='inline'; Codehighlighter1_24_324_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" /><img style="display: none" id="Codehighlighter1_24_324_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_24_324_Closed_Text.style.display='none'; Codehighlighter1_24_324_Open_Image.style.display='inline'; Codehighlighter1_24_324_Open_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" /><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;Singleton3&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_24_324_Closed_Text"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_24_324_Open_Text"><span style="color: #000000">{<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" /><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;Singleton3&nbsp;instance&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">null</span><span style="color: #000000">;<br />
<img id="Codehighlighter1_75_186_Open_Image" onclick="this.style.display='none'; Codehighlighter1_75_186_Open_Text.style.display='none'; Codehighlighter1_75_186_Closed_Image.style.display='inline'; Codehighlighter1_75_186_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" /><img style="display: none" id="Codehighlighter1_75_186_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_75_186_Closed_Text.style.display='none'; Codehighlighter1_75_186_Open_Image.style.display='inline'; Codehighlighter1_75_186_Open_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_75_186_Closed_Text">/**&nbsp;*/</span><span id="Codehighlighter1_75_186_Open_Text"><span style="color: #008000">/**</span><span style="color: #008000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;这个方法比上面有所改进，不用每次都进行生成对象，只是第一次　　　<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;使用时生成实例，提高了效率！<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;为了多线程不出错，加入了同步标志<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080">@return</span><span style="color: #008000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">*/</span></span><span style="color: #000000"><br />
<img id="Codehighlighter1_242_321_Open_Image" onclick="this.style.display='none'; Codehighlighter1_242_321_Open_Text.style.display='none'; Codehighlighter1_242_321_Closed_Image.style.display='inline'; Codehighlighter1_242_321_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" /><img style="display: none" id="Codehighlighter1_242_321_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_242_321_Closed_Text.style.display='none'; Codehighlighter1_242_321_Open_Image.style.display='inline'; Codehighlighter1_242_321_Open_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">synchronized</span><span style="color: #000000">&nbsp;&nbsp;Singleton3&nbsp;getInstance()&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_242_321_Closed_Text"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_242_321_Open_Text"><span style="color: #000000">{&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(instance&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">null</span><span style="color: #000000">)<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;instance&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;Singleton3();<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;instance;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" /><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" />}</span></span></div>
<br />
<br />
但这样又产生了一个问题，每次获取实例时方法都是同步的，显然性能很受影响的，所以继续更改代码如下：<br />
<br />
先记一下：<font size="3"><span><strong>volatile</strong></span></font>（网上抄的）<br />
<span id="zoom" class="a14c">&nbsp;
<p><font size="3"><span><strong>volatile, 用更低的代价替代同步</strong><br />
<br />
</span><font size="2"></font></font><strong><font size="3"><font size="2"><span>为什么</span></font></font></strong><font size="3"><font size="2"><strong><span>使用volatile比同步代价更低?</span></strong><br />
同步的代价, 主要由其覆盖范围决定, 如果可以降低同步的覆盖范围, 则可以大幅提升程序性能.&nbsp;<br />
<br />
而volatile的覆盖范围仅仅变量级别的. 因此它的同步代价很低.<br />
<br />
<span><strong>volatile原理是什么?</strong><br />
</span>volatile的语义, 其实是告诉处理器, 不要将我放入工作内存, 请直接在主存操作我.(工作内存详见java内存模型)<br />
<br />
因此, 当多核或多线程在访问该变量时, 都将直接</font></font><font size="3"><font size="2">操作</font></font><font size="3"><font size="2">主存, 这从本质上, 做到了变量共享.<br />
<br />
<span><strong>volatile的有什么优势?</strong><br />
</span>1, 更大的程序吞吐量<br />
2, 更少的代码实现多线程<br />
3, 程序的伸缩性较好<br />
</font></font><font size="3"><font size="2">4, 比较好理解, 无需太高的学习成本<br />
<br />
<span><strong>volatile有什么劣势?</strong><br />
</span>1, 容易出问题<br />
2, 比较难设计<br />
</font></font><font size="3"><font size="2"></font></font><font size="3"><font size="2"><br />
</font></font></p>
<hr />
<strong><br />
</strong></span>volatile使用jdk要求1.5版本及1.5以上。<br />
<br />
<br />
改进后的代码如下（又叫双重加锁）：<br />
<br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><img id="Codehighlighter1_24_353_Open_Image" onclick="this.style.display='none'; Codehighlighter1_24_353_Open_Text.style.display='none'; Codehighlighter1_24_353_Closed_Image.style.display='inline'; Codehighlighter1_24_353_Closed_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif"  alt="" /><img style="display: none" id="Codehighlighter1_24_353_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_24_353_Closed_Text.style.display='none'; Codehighlighter1_24_353_Open_Image.style.display='inline'; Codehighlighter1_24_353_Open_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif"  alt="" /><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;Singleton4&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_24_353_Closed_Text"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_24_353_Open_Text"><span style="color: #000000">{<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">volatile</span><span style="color: #000000">&nbsp;Singleton4&nbsp;instance;<br />
<img id="Codehighlighter1_75_115_Open_Image" onclick="this.style.display='none'; Codehighlighter1_75_115_Open_Text.style.display='none'; Codehighlighter1_75_115_Closed_Image.style.display='inline'; Codehighlighter1_75_115_Closed_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif"  alt="" /><img style="display: none" id="Codehighlighter1_75_115_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_75_115_Closed_Text.style.display='none'; Codehighlighter1_75_115_Open_Image.style.display='inline'; Codehighlighter1_75_115_Open_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_75_115_Closed_Text">/**&nbsp;*/</span><span id="Codehighlighter1_75_115_Open_Text"><span style="color: #008000">/**</span><span style="color: #008000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;双重加锁实现多线程运用和性能优化<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080">@return</span><span style="color: #008000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">*/</span></span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;Singleton4&nbsp;getInstance()<br />
<img id="Codehighlighter1_158_351_Open_Image" onclick="this.style.display='none'; Codehighlighter1_158_351_Open_Text.style.display='none'; Codehighlighter1_158_351_Closed_Image.style.display='inline'; Codehighlighter1_158_351_Closed_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif"  alt="" /><img style="display: none" id="Codehighlighter1_158_351_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_158_351_Closed_Text.style.display='none'; Codehighlighter1_158_351_Open_Image.style.display='inline'; Codehighlighter1_158_351_Open_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_158_351_Closed_Text"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_158_351_Open_Text"><span style="color: #000000">{<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(instance&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">null</span><span style="color: #000000">)<br />
<img id="Codehighlighter1_188_328_Open_Image" onclick="this.style.display='none'; Codehighlighter1_188_328_Open_Text.style.display='none'; Codehighlighter1_188_328_Closed_Image.style.display='inline'; Codehighlighter1_188_328_Closed_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif"  alt="" /><img style="display: none" id="Codehighlighter1_188_328_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_188_328_Closed_Text.style.display='none'; Codehighlighter1_188_328_Open_Image.style.display='inline'; Codehighlighter1_188_328_Open_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_188_328_Closed_Text"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_188_328_Open_Text"><span style="color: #000000">{<br />
<img id="Codehighlighter1_226_323_Open_Image" onclick="this.style.display='none'; Codehighlighter1_226_323_Open_Text.style.display='none'; Codehighlighter1_226_323_Closed_Image.style.display='inline'; Codehighlighter1_226_323_Closed_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif"  alt="" /><img style="display: none" id="Codehighlighter1_226_323_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_226_323_Closed_Text.style.display='none'; Codehighlighter1_226_323_Open_Image.style.display='inline'; Codehighlighter1_226_323_Open_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">synchronized</span><span style="color: #000000">(Singleton4.</span><span style="color: #0000ff">class</span><span style="color: #000000">)&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_226_323_Closed_Text"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_226_323_Open_Text"><span style="color: #000000">{&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">1</span><span style="color: #008000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(instance&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">null</span><span style="color: #000000">)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">2</span><span style="color: #008000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;instance&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;Singleton4();&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">3</span><span style="color: #008000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;instance;<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif"  alt="" />}</span></span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span></div>
<br />
<br />
参考自第联网和head first设计模式。<br />
<br />
<br />
<br />
<br />
<br />
<br />
<img src ="http://www.blogjava.net/asdtiang/aggbug/346289.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/asdtiang/" target="_blank">asdtiang</a> 2011-03-15 12:54 <a href="http://www.blogjava.net/asdtiang/archive/2011/03/15/346289.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>s2sh整合ehcache页面部分缓存</title><link>http://www.blogjava.net/asdtiang/archive/2011/03/12/346136.html</link><dc:creator>asdtiang</dc:creator><author>asdtiang</author><pubDate>Sat, 12 Mar 2011 14:25:00 GMT</pubDate><guid>http://www.blogjava.net/asdtiang/archive/2011/03/12/346136.html</guid><wfw:comment>http://www.blogjava.net/asdtiang/comments/346136.html</wfw:comment><comments>http://www.blogjava.net/asdtiang/archive/2011/03/12/346136.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/asdtiang/comments/commentRss/346136.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/asdtiang/services/trackbacks/346136.html</trackback:ping><description><![CDATA[<p>首先看web.xml配置：</p>
<p>增加以下配置：</p>
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><span style="color: #008000">&lt;!--</span><span style="color: #008000">ehcache&nbsp;web&nbsp;page&nbsp;cache&nbsp;</span><span style="color: #008000">--&gt;</span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">filter</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">filter-name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">fragmentCache</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">filter-name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">filter-class</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">net.sf.ehcache.constructs.web.filter.SimplePageFragmentCachingFilter<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">filter-class</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">init-param</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">param-name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">suppressStackTraces</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">param-name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">param-value</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">false</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">param-value</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">init-param</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">init-param</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">param-name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">cacheName</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">param-name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">param-value</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">fragmentCache</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">param-value</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">init-param</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">filter</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">&lt;!--</span><span style="color: #008000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;This&nbsp;is&nbsp;a&nbsp;filter&nbsp;chain.&nbsp;They&nbsp;are&nbsp;executed&nbsp;in&nbsp;the&nbsp;order&nbsp;below.&nbsp;Do&nbsp;not<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;change&nbsp;the&nbsp;order.<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">--&gt;</span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">filter-mapping</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">filter-name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">fragmentCache</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">filter-name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">url-pattern</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">/WEB-INF/pages/tour/tourDetailBody.jsp</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">url-pattern</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">dispatcher</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">INCLUDE</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">dispatcher</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">filter-mapping</span><span style="color: #0000ff">&gt;</span></div>
<br />
<br />
<p style="color: red">注意，那个&lt;dispatcher&gt;INCLUDE&lt;/dispatcher&gt;，不能少，少了缓存不能用。</p>
<p><br />
配置中对应&lt;jsp:include page="/WEB-INF/pages/tour/tourDetailBody.jsp"/&gt;</p>
<p>2.4版本的servlet规范在部属描述符中新增加了一个&lt;dispatcher&gt;元素，这个元素有四个可能的值：即REQUEST,FORWARD,INCLUDE和ERROR，可以在一个&lt;filter-mapping&gt;元素中加入任意数目的&lt;dispatcher&gt;，使得filter将会作用于直接从客户端过来的request，通过forward过来的request，通过include过来的request和通过&lt;error-page&gt;过来的request。如果没有指定任何&lt; dispatcher &gt;元素，默认值是REQUEST。</p>
<p>&nbsp;</p>
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><span style="color: #0000ff">&lt;?</span><span style="color: #ff00ff">xml&nbsp;version="1.0"&nbsp;encoding="UTF-8"</span><span style="color: #0000ff">?&gt;</span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">ehcache&nbsp;</span><span style="color: #ff0000">xmlns:xsi</span><span style="color: #0000ff">="http://www.w3.org/2001/XMLSchema-instance"</span><span style="color: #ff0000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;xsi:noNamespaceSchemaLocation</span><span style="color: #0000ff">="../../main/config/ehcache.xsd"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">diskStore&nbsp;</span><span style="color: #ff0000">path</span><span style="color: #0000ff">="java.io.tmpdir"</span><span style="color: #ff0000">&nbsp;</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">defaultCache&nbsp;<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #ff0000">maxElementsInMemory</span><span style="color: #0000ff">="10"</span><span style="color: #ff0000">&nbsp;<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;eternal</span><span style="color: #0000ff">="false"</span><span style="color: #ff0000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;timeToIdleSeconds</span><span style="color: #0000ff">="5"</span><span style="color: #ff0000">&nbsp;<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;timeToLiveSeconds</span><span style="color: #0000ff">="10"</span><span style="color: #ff0000">&nbsp;<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;overflowToDisk</span><span style="color: #0000ff">="true"</span><span style="color: #ff0000">&nbsp;</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">&lt;!--</span><span style="color: #008000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;maxElementsInMemory="10"内存中的最大页面对象&nbsp;<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;eternal="false"<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;timeToIdleSeconds="120"&nbsp;timeToIdleSeconds&nbsp;，多长时间不访问该缓存，那么ehcache就会清除该缓存。&nbsp;<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;timeToLiveSeconds="240"&nbsp;timeToLiveSeconds，缓存的存活时间，从开始创建的时间算起。<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;overflowToDisk="true"&nbsp;是否写入硬盘<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">--&gt;</span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">&lt;!--</span><span style="color: #008000">&nbsp;Page&nbsp;and&nbsp;Page&nbsp;Fragment&nbsp;Caches&nbsp;</span><span style="color: #008000">--&gt;</span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">cache&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="fragmentCache"</span><span style="color: #ff0000">&nbsp;<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;maxElementsInMemory</span><span style="color: #0000ff">="10"</span><span style="color: #ff0000">&nbsp;<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;eternal</span><span style="color: #0000ff">="false"</span><span style="color: #ff0000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;timeToIdleSeconds</span><span style="color: #0000ff">="10000"</span><span style="color: #ff0000">&nbsp;<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;timeToLiveSeconds</span><span style="color: #0000ff">="10000"</span><span style="color: #ff0000">&nbsp;<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;overflowToDisk</span><span style="color: #0000ff">="true"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">cache</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">ehcache</span><span style="color: #0000ff">&gt;</span></div>
<br />
<br />
<p>数据的更新问题：</p>
<p>和页面缓存一样的，根据配置文件中的cacheName获取Ehcache,再根据获取的key进行remove操作。</p>
<p>action中的问题：当页面请求发生时，会调用action方法，这时我们因为先方法，应该先查询cache中是否有缓存fragment存在，如果有，直接返回成功页面，如果没有则执行剩下的代</p>
<br />
<img src ="http://www.blogjava.net/asdtiang/aggbug/346136.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/asdtiang/" target="_blank">asdtiang</a> 2011-03-12 22:25 <a href="http://www.blogjava.net/asdtiang/archive/2011/03/12/346136.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>s2sh项目整合ehcache页面缓存</title><link>http://www.blogjava.net/asdtiang/archive/2011/03/08/345946.html</link><dc:creator>asdtiang</dc:creator><author>asdtiang</author><pubDate>Tue, 08 Mar 2011 07:23:00 GMT</pubDate><guid>http://www.blogjava.net/asdtiang/archive/2011/03/08/345946.html</guid><wfw:comment>http://www.blogjava.net/asdtiang/comments/345946.html</wfw:comment><comments>http://www.blogjava.net/asdtiang/archive/2011/03/08/345946.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/asdtiang/comments/commentRss/345946.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/asdtiang/services/trackbacks/345946.html</trackback:ping><description><![CDATA[网上用ehcache做对象缓存和数据库缓存的比较多。但仔细一想，直接做页面缓存显然更好，直接点不用绕路。<br />
本人用的是s2sh开发网站，整合了urlrewrite.其实最后页面路径配置时也是用的struts2的路径。<br />
网上的比较多的就是直接给出配置文件。<br />
<br />
首先网上查了下，ehcache和oscache，上相应的官网查看，发现oscache到07年以后就没更新过，不知道是改名字了，还是其它原因，最后采用了ehcache做页面缓存<br />
<br />
配置可以参考官方页面：<a href="http://ehcache.org/documentation/web_caching.html">http://ehcache.org/documentation/web_caching.html<br />
<br />
</a>web里面配置如下：<br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">filter</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">filter-name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">CachePage1CachingFilter</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">filter-name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">filter-class</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">net.sf.ehcache.constructs.web.filter.SimplePageCachingFilter<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">filter-class</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">init-param</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">param-name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">suppressStackTraces</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">param-name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">param-value</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">false</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">param-value</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">init-param</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">init-param</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">param-name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">cacheName</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">param-name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">param-value</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">CachePage1CachingFilter</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">param-value</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">init-param</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">filter</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">filter</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">filter-name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">SimplePageFragmentCachingFilter</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">filter-name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">filter-class</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">net.sf.ehcache.constructs.web.filter.SimplePageFragmentCachingFilter<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">filter-class</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">init-param</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">param-name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">suppressStackTraces</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">param-name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">param-value</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">false</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">param-value</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">init-param</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">init-param</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">param-name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">cacheName</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">param-name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">param-value</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">SimplePageFragmentCachingFilter</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">param-value</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">init-param</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">filter</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">filter</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">filter-name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">SimpleCachingHeadersPageCachingFilter</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">filter-name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">filter-class</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">net.sf.ehcache.constructs.web.filter.SimpleCachingHeadersPageCachingFilter<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">filter-class</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">init-param</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">param-name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">suppressStackTraces</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">param-name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">param-value</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">false</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">param-value</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">init-param</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">init-param</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">param-name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">cacheName</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">param-name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">param-value</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">CachedPage2Cache</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">param-value</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">init-param</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">filter</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;</span><span style="color: #008000">&lt;!--</span><span style="color: #008000">&nbsp;This&nbsp;is&nbsp;a&nbsp;filter&nbsp;chain.&nbsp;They&nbsp;are&nbsp;executed&nbsp;in&nbsp;the&nbsp;order&nbsp;below.<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;Do&nbsp;not&nbsp;change&nbsp;the&nbsp;order.&nbsp;</span><span style="color: #008000">--&gt;</span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">filter-mapping</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">filter-name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">CachePage1CachingFilter</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">filter-name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">url-pattern</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">/CachedPage.jsp</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">url-pattern</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">dispatcher</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">REQUEST</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">dispatcher</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">dispatcher</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">INCLUDE</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">dispatcher</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">dispatcher</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">FORWARD</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">dispatcher</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">filter-mapping</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">filter-mapping</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">filter-name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">SimplePageFragmentCachingFilter</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">filter-name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">url-pattern</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">/include/Footer.jsp</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">url-pattern</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">filter-mapping</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">filter-mapping</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">filter-name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">SimplePageFragmentCachingFilter</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">filter-name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">url-pattern</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">/fragment/CachedFragment.jsp</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">url-pattern</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">filter-mapping</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">filter-mapping</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">filter-name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">SimpleCachingHeadersPageCachingFilter</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">filter-name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">url-pattern</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">/CachedPage2.jsp</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">url-pattern</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">filter-mapping</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span></div>
ehcache.xml文件要放在src下面。<br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><span style="color: #0000ff">&lt;</span><span style="color: #800000">Ehcache&nbsp;</span><span style="color: #ff0000">xmlns:xsi</span><span style="color: #0000ff">="http://www.w3.org/2001/XMLSchema-instance"</span><span style="color: #ff0000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xsi:noNamespaceSchemaLocation</span><span style="color: #0000ff">="../../main/config/ehcache.xsd"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">diskStore&nbsp;</span><span style="color: #ff0000">path</span><span style="color: #0000ff">="java.io.tmpdir"</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">defaultCache<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #ff0000">maxElementsInMemory</span><span style="color: #0000ff">="10"</span><span style="color: #ff0000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;eternal</span><span style="color: #0000ff">="false"</span><span style="color: #ff0000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;timeToIdleSeconds</span><span style="color: #0000ff">="5"</span><span style="color: #ff0000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;timeToLiveSeconds</span><span style="color: #0000ff">="10"</span><span style="color: #ff0000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;overflowToDisk</span><span style="color: #0000ff">="true"</span><span style="color: #ff0000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">&lt;!--</span><span style="color: #008000">&nbsp;Page&nbsp;and&nbsp;Page&nbsp;Fragment&nbsp;Caches&nbsp;</span><span style="color: #008000">--&gt;</span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">cache&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="CachePage1CachingFilter"</span><span style="color: #ff0000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;maxElementsInMemory</span><span style="color: #0000ff">="10"</span><span style="color: #ff0000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;eternal</span><span style="color: #0000ff">="false"</span><span style="color: #ff0000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;timeToIdleSeconds</span><span style="color: #0000ff">="10000"</span><span style="color: #ff0000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;timeToLiveSeconds</span><span style="color: #0000ff">="10000"</span><span style="color: #ff0000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;overflowToDisk</span><span style="color: #0000ff">="true"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">cache</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">cache&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="CachedPage2Cache"</span><span style="color: #ff0000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;maxElementsInMemory</span><span style="color: #0000ff">="10"</span><span style="color: #ff0000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;eternal</span><span style="color: #0000ff">="false"</span><span style="color: #ff0000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;timeToLiveSeconds</span><span style="color: #0000ff">="3600"</span><span style="color: #ff0000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;overflowToDisk</span><span style="color: #0000ff">="true"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">cache</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">cache&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="SimplePageFragmentCachingFilter"</span><span style="color: #ff0000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;maxElementsInMemory</span><span style="color: #0000ff">="10"</span><span style="color: #ff0000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;eternal</span><span style="color: #0000ff">="false"</span><span style="color: #ff0000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;timeToIdleSeconds</span><span style="color: #0000ff">="10000"</span><span style="color: #ff0000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;timeToLiveSeconds</span><span style="color: #0000ff">="10000"</span><span style="color: #ff0000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;overflowToDisk</span><span style="color: #0000ff">="true"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">cache</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">cache&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="SimpleCachingHeadersTimeoutPageCachingFilter"</span><span style="color: #ff0000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;maxElementsInMemory</span><span style="color: #0000ff">="10"</span><span style="color: #ff0000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;eternal</span><span style="color: #0000ff">="false"</span><span style="color: #ff0000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;timeToIdleSeconds</span><span style="color: #0000ff">="10000"</span><span style="color: #ff0000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;timeToLiveSeconds</span><span style="color: #0000ff">="10000"</span><span style="color: #ff0000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;overflowToDisk</span><span style="color: #0000ff">="true"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">cache</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">ehcache</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span></div>
<br />
现在的问题是有些页面要更新，在内存或者硬盘上的数据需要更新，而且是实时的。应该怎么办，网上多的也是对象的操作，基本没有缓存页面的操作。<br />
首先说下缓存页面的大概方法。<br />
ehcache.xml里面对应web.xml，name都一样的，比如一个具体路径，show.action?showId=1,配置如下：<br />
&nbsp;&lt;filter-mapping&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;filter-name&gt;show&lt;/filter-name&gt;<br />
&nbsp;&nbsp;&nbsp;&lt;url-pattern&gt;/show.action&lt;/url-pattern&gt;<br />
&nbsp; &lt;/filter-mapping&gt;<br />
取前面的部分就可以了。对应ehcache.xml配置：<br />
<p>&lt;!--</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; maxElementsInMemory="10"内存中的最大页面对象<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; eternal="false"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; timeToIdleSeconds="120"&nbsp;&nbsp; timeToIdleSeconds ，多长时间不访问该缓存，那么ehcache 就会清除该缓存。&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; timeToLiveSeconds="240" timeToLiveSeconds ，缓存的存活时间，从开始创建的时间算起。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; overflowToDisk="true"&nbsp;&nbsp;&nbsp;&nbsp; 是否写入硬盘</p>
<p><br />
--&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;!-- Page and Page Fragment Caches --&gt;</p>
<p>&nbsp;&nbsp;&nbsp; &lt;cache name="show"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; maxElementsInMemory="10"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; eternal="false"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; timeToIdleSeconds="30"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; timeToLiveSeconds="60"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; overflowToDisk="true"&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;/cache&gt;<br />
<br />
这里只有一个cache,在ehcache即对应一个Ehcache对象,由CacheManager（单例模式实现）去管理，在CacheManager里用配置文件中的name可以获取Ehcache对象的实例。<br />
代码如下:<br />
Ehcache cache = CacheManager.getInstance().getEhcache(cacheName);<br />
<br />
展示页面有很多，比如一个商家一个展示页面，即show.action?showId=1后面的数字是可变的，在ehcache里面是用map去存储的，比如show.action?showId=1对应的key为：<br />
GET/show.actionshowId=1<br />
GET为访问方式，把问号去掉了，ehcache内部也是这样存储的（类似map），这样保证了请求的页面在内存中的唯一性，获取也快。<br />
既然key都知道了，删除就好了，直接 查看api文档Ehcache里有很多remove方法。示例代码如下：<br />
Ehcache cache = CacheManager.getInstance().getEhcache(cacheName);<br />
&nbsp;&nbsp;if (null == cache) {<br />
&nbsp;&nbsp;&nbsp;return;<br />
&nbsp;&nbsp;}<br />
&nbsp;&nbsp;cache.remove(key);<br />
<br />
key的获取就不用多说了吧，当更新一个页面的数据时，肯定知道数据的id，直接字符串处理下就可以获取key了，这里注意下就是，代码编写时，一般url里都有项目的名字，正式发布时，肯定没有，而前者在ehcache里生成key里有项目的名字，即：<br />
GET/projetName/show.actionshowId=1<br />
所以最好用spring注入值，到时改也方便。<br />
<br />
更详细的，请查看api文档和测试下，官方文档给的都是对象的，页面缓存的给的比较少，我也是查看源码才得出上面代码。<br />
记一下，希望帮助有需求的人。<br />
</p>
<br />
<img src ="http://www.blogjava.net/asdtiang/aggbug/345946.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/asdtiang/" target="_blank">asdtiang</a> 2011-03-08 15:23 <a href="http://www.blogjava.net/asdtiang/archive/2011/03/08/345946.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>struts2中实现html 301 302转向</title><link>http://www.blogjava.net/asdtiang/archive/2011/02/23/344892.html</link><dc:creator>asdtiang</dc:creator><author>asdtiang</author><pubDate>Wed, 23 Feb 2011 02:11:00 GMT</pubDate><guid>http://www.blogjava.net/asdtiang/archive/2011/02/23/344892.html</guid><wfw:comment>http://www.blogjava.net/asdtiang/comments/344892.html</wfw:comment><comments>http://www.blogjava.net/asdtiang/archive/2011/02/23/344892.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/asdtiang/comments/commentRss/344892.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/asdtiang/services/trackbacks/344892.html</trackback:ping><description><![CDATA[首先网上copy下什么是301，及302<br />
301转向(或叫301重定向，301跳转)是当用户或搜索引擎向网站服务器发出浏览请求时，服务器返回的HTTP数据流中头信息(header)中的状态码的一种，表示本网页永久性转移到另一个地址。<br />
<br />
其它常见的状态码还包括，200表示一切正常，404网页找不到，302暂时转向，等等。<br />
<br />
为什么要做网址转向？<br />
<br />
你拥有不同TLD的多个域名：<br />
<br />
company.com　　<br />
company.net<br />
company.org<br />
company.com.cn<br />
company.cn<br />
等等。<br />
这些域名全部指向一个网站。如用company.com为主域名，其它域名就可以转向到company.com。<br />
<br />
或者你注册了公司全称域名longcompanyname.com，但太长&nbsp;&nbsp;，你也注册了缩写域名方便用户记住lcn.com，其中一个做主域名，另一个就可以转向到主域名。<br />
<br />
为什么要用301转向？<br />
<br />
网址转向方法主要包括：301转向，302转向，JavaScript转向，PHP/ASP/CGI转向，META&nbsp;&nbsp;REFRESH网页META刷新，等。302转向可能会有URL规范化问题。其它方法都是常用的作弊手法，当然不是说不可以正当地用，方法本身没有错，但被作弊者用多了，搜索引擎对这些可疑的转向都很敏感。何必冒险呢。<br />
<br />
当网页A用301重定向转到网页B时，搜索引擎可以肯定网页A永久的改变位置，或者说实际上不存在了，搜索引擎就会把网页B当作唯一有效目标。好处是，第一，没有网址规范化问题，第二，也很重要的，网页A的PR网页级别会传到网页B。<br />
<br />
很多时候其它网站会链接到<br />
<br />
http://domainname.com<br />
http://www.domainname.com/index.html<br />
http://domainname.com/index.html<br />
<br />
而不是你希望的<br />
<br />
http://www.domainname.com<br />
<br />
这样链接的PR也会传递到所有URL，如果你用301转向把前三个URL转到<br />
http://www.domainname.com<br />
PR也就集中在网页http://www.domainname.com了。<br />
<br />
怎样判断网站有网址规范化问题？<br />
<br />
英语中有句话，东西没坏就别修理。很多网站没做301转向排名也没影响，那就别动它。<br />
<br />
如果你觉得网站排名没有预想的好，可以看看是否有网址规范化问题：<br />
<br />
1)&nbsp;&nbsp;查一下这些URL是否都有差不多的PR值和网页快照：<br />
<br />
http://domainname.com<br />
http://www.domainname.com/index.html<br />
http://domainname.com/index.html<br />
http://www.domainname.com<br />
<br />
如果是，那可能有问题。<br />
<br />
2)搜一下site:domain.com看是否结果中有多个主页版本。<br />
<br />
3)你的网站是否在Google有大量网页被标为&#8220;&nbsp;&nbsp;补充材料&#8221;(Supplemental&nbsp;&nbsp;Result)。一般认为被归为&#8220;&nbsp;&nbsp;补充材料&#8221;是网址规范化问题的征兆。<br />
<br />
怎样做301转向<br />
<br />
如果你用的是Unix/Linux主机，可以用文件(Unix/Linux中用于目录特定指令如密码，转向，错误处理等的文件)。<br />
<br />
比如把/old.htm转到http://www.domain.com/new.htm，可以用这个指令：<br />
<br />
redirect&nbsp;&nbsp;301&nbsp;&nbsp;/old.htm&nbsp;&nbsp;http://www.domain.com/new.htm<br />
<br />
或<br />
<br />
redirect&nbsp;&nbsp;permanent&nbsp;&nbsp;/old.htm&nbsp;&nbsp;http://www.domain.com/new.htm<br />
<br />
如果要把所有http://domain.com形式的URL用301重定向转到&nbsp;&nbsp;http://www.domain.com，包括：<br />
<br />
http://domain.com/about.htm<br />
转到&nbsp;&nbsp;http://www.domain.com/about.htm<br />
<br />
及<br />
<br />
http://domain.com/dir/index.htm<br />
转到&nbsp;&nbsp;http://www.domain.com/dir/index.htm<br />
<br />
等等，还要用到mod_rewrite：<br />
<br />
Options&nbsp;&nbsp;+FollowSymLinks<br />
RewriteEngine&nbsp;&nbsp;on<br />
RewriteCond&nbsp;&nbsp;%{HTTP_HOST}&nbsp;&nbsp;^domain.com&nbsp;&nbsp;[NC]<br />
RewriteRule&nbsp;&nbsp;^(.*)$&nbsp;&nbsp;http://www.bfzz.com/$1&nbsp;&nbsp;[L,R=301]<br />
<br />
如果你用的是&nbsp;&nbsp;Windows主机，应该在控制面板做301转向设定。<br />
<br />
据我所知，HTML无法做301转向。在HTML里只能做JS或META&nbsp;&nbsp;REFRESH，但不是301转向。HTML一被读取，就已经返回200&nbsp;&nbsp;OK状态码了。<br />
<br />
下面是struts2中实现301或者302<br />
<br />
其实很easy:<br />
<br />
action的result配置如下：status可以指定状态码。<br />
&lt;result name="to_first" type="httpheader"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;param name="status"&gt;301&lt;/param&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;param name="headers.Location"&gt;${object}/l/${city.cityUrl}-${country.countryUrl}/${cityId}/0/0&lt;/param&gt;<br />
&nbsp;&nbsp;&lt;/result&gt;<br />
<br />
另外type=<span class="code-quote">"redirectAction"时，默认为302跳转。用fireBug可以看得很清楚</span>
<pre class="code-java">&lt;action name=<span class="code-quote">"Logon"</span> class=<span class="code-quote">"tutorial.Logon"</span>&gt;
&lt;result type=<span class="code-quote">"redirectAction"</span>&gt;Menu&lt;/result&gt;
&lt;/action&gt;</pre>
<br />
<img src ="http://www.blogjava.net/asdtiang/aggbug/344892.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/asdtiang/" target="_blank">asdtiang</a> 2011-02-23 10:11 <a href="http://www.blogjava.net/asdtiang/archive/2011/02/23/344892.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>面向对象UML中类关系--转载编辑</title><link>http://www.blogjava.net/asdtiang/archive/2011/02/16/344455.html</link><dc:creator>asdtiang</dc:creator><author>asdtiang</author><pubDate>Wed, 16 Feb 2011 07:56:00 GMT</pubDate><guid>http://www.blogjava.net/asdtiang/archive/2011/02/16/344455.html</guid><wfw:comment>http://www.blogjava.net/asdtiang/comments/344455.html</wfw:comment><comments>http://www.blogjava.net/asdtiang/archive/2011/02/16/344455.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/asdtiang/comments/commentRss/344455.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/asdtiang/services/trackbacks/344455.html</trackback:ping><description><![CDATA[原文地址：<a href="http://www.uml.org.cn/oobject/200911174.asp">http://www.uml.org.cn/oobject/200911174.asp</a><br />
<br />
<br />
<br />
<p>如果你确定两件对象之间是is-a的关系，那么此时你应该使用继承；比如菱形、圆形和方形都是形状的一种，那么他们都应该从形状类继承而不是聚合。<br />
如果你确定两件对象之间是has-a的关系，那么此时你应该使用聚合；比如电脑是由显示器、CPU、硬盘等组成的，那么你应该把显示器、CPU、硬盘这些类聚合成电脑类，而不是从电脑类继承。</p>
<div> <span style="color: red;"> <font color="#005880">类间的关系
</font></span> </div>
<p> 网上关于此类的讨论非常多，发现对于该问题的理解各有各的说法，而各个说法中又相去甚远。通过浏览这些讨论以及对《O'Reilly
- UML 2.0 In A Nutshell (2007)》的参考，发表一下自己的看法</p>
<p> 类间关系有很多种，在大的类别上可以分为两种：纵向关系、横向关系。</p>
<p>纵向关系就是继承关系，它的概念非常明确，也成为OO的三个重要特征之一，这里不过多的讨论。</p>
<p>横向关系较为微妙，按照UML的建议大体上可以分为四种：</p>
<ol>
    <li><span style="color: red;">
    <li>依赖&nbsp;&nbsp;&nbsp; （Dependency）uses a<br />
    </li>
    <li>关联&nbsp;&nbsp;&nbsp; （Association）has a <br />
    </li>
    <li>聚合&nbsp;&nbsp;&nbsp; （Aggregation）owns a<br />
    </li>
    <li>组合&nbsp;&nbsp;&nbsp; （Composition）is a part of&nbsp; </li>
    </span></li>
    <li></li>
</ol>
<p>它们的强弱关系是没有异议的：依赖 &lt; 关联 &lt; 聚合 &lt; 组合</p>
<p>然而它们四个之间的差别却又不那么好拿捏，需要好好体会。</p>
<ol>
    <li><span style="color: #0000ff;"><strong>依赖</strong></span>：
    <ul>
        <li>UML表示法：虚线 + 箭头 <br />
        <img alt="" src="http://www.uml.org.cn/oobject/images/1dfge.gif" border="0" height="58" width="321" />
        </li>
        <li>关系：" ... uses a ..." </li>
        <li> 此关系最为简单，也最好理解，所谓依赖就是某个对象的功能依赖于另外的某个对象，而被依赖的对象只是作为一种工具在使用，而并不持有对它的引用。
        </li>
        <li>典型的例子很多，比如：<br />
        class Human<br />
        {<br />
        &nbsp;&nbsp;&nbsp; public void&nbsp;breath()<br />
        &nbsp;&nbsp;&nbsp; {<br />
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Air
        freshAir&nbsp;= new Air();<br />
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; freshAir.releasePower();<br />
        &nbsp;&nbsp;&nbsp; }<br />
        &nbsp;&nbsp;&nbsp; public static void main()<br />
        &nbsp;&nbsp;&nbsp; {<br />
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Human
        me&nbsp;= new Human();<br />
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while(true)<br />
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;me.breath();<br />
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
        &nbsp;&nbsp;&nbsp; }<br />
        }<br />
        <br />
        class Air<br />
        {<br />
        &nbsp;&nbsp;&nbsp; public void releasePower()<br />
        &nbsp;&nbsp;&nbsp; {<br />
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //do
        sth.<br />
        &nbsp;&nbsp;&nbsp; }<br />
        }<br />
        &nbsp;<img style="left: 569px; top: 888px;" alt="" src="http://www.uml.org.cn/oobject/images/5qwer.gif" border="0" height="211" width="474" />
        </li>
        <li> 释义：一个人自创生就需要不停的呼吸，而人的呼吸功能之所以能维持生命就在于吸进来的气体发挥了作用，所以说空气只不过是人类的一个工具，而人并不持有对它的引用。
        </li>
    </ul>
    </li>
    <li><span style="color: #0000ff;"><strong>关联</strong></span>：
    <ul>
        <li>UML表示法：实线 + 箭头 <br />
        <img alt="" src="http://www.uml.org.cn/oobject/images/2wertf.gif" border="0" height="58" width="321" />
        </li>
        <li>关系：" ... has a ..." </li>
        <li>
        所谓关联就是某个对象会长期的持有另一个对象的引用，而二者的关联往往也是相互的。关联的两个对象彼此间没有任何强制性的约束，只要二者同意，可以随时解
        除关系或是进行关联，它们在生命期问题上没有任何约定。被关联的对象还可以再被别的对象关联，所以关联是可以共享的。
        </li>
        <li>典型的例子很多，比如：<br />
        class Human<br />
        {<br />
        &nbsp;&nbsp;&nbsp;&nbsp;ArrayList friends = new
        ArrayList();<br />
        &nbsp;&nbsp;&nbsp; public void&nbsp;makeFriend(Human
        human)<br />
        &nbsp;&nbsp;&nbsp; {<br />
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; friends.add(human);<br />
        &nbsp;&nbsp;&nbsp; }<br />
        &nbsp;&nbsp;&nbsp; public static void main()<br />
        &nbsp;&nbsp;&nbsp; {<br />
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Human
        me&nbsp;= new Human();<br />
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while(true)<br />
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;me.makeFriend(mySchool.getStudent());<br />
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
        &nbsp;&nbsp;&nbsp; }<br />
        } <br />
        <img style="left: 561px; top: 1604px;" alt="" src="http://www.uml.org.cn/oobject/images/6weds.gif" border="0" height="141" width="366" />
        </li>
        <li> 释义：人从生至死都在不断的交朋友，然而没有理由认为朋友的生死与我的生死有必然的联系，故他们的生命期没有关联，我的朋友又可以是别人的朋友，所以朋友可以共享。
        </li>
    </ul>
    </li>
    <li><span style="color: #0000ff;"><strong>聚合</strong></span>：&nbsp;&nbsp;
    <ul>
        <li>UML表示法：空心菱形 + 实线 + 箭头 <br />
        <img alt="" src="http://www.uml.org.cn/oobject/images/3dwses.gif" border="0" height="58" width="321" />
        </li>
        <li>关系：" ... owns a ..." </li>
        <li> 聚合是强版本的关联。它暗含着一种所属关系以及生命期关系。被聚合的对象还可以再被别的对象关联，所以被聚合对象是可以共享的。虽然是共享的，聚合代表的是一种更亲密的关系。
        </li>
        <li>典型的例子很多，比如：<br />
        class Human<br />
        {<br />
        &nbsp;&nbsp;&nbsp;&nbsp;Home myHome;<br />
        &nbsp;&nbsp;&nbsp; public void&nbsp;goHome()<br />
        &nbsp;&nbsp;&nbsp; {<br />
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//在回家的路上<br />
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; myHome.openDoor();<br />
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //看电视<br />
        &nbsp;&nbsp;&nbsp; }<br />
        &nbsp;&nbsp;&nbsp; public static void main()<br />
        &nbsp;&nbsp;&nbsp; {<br />
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Human
        me&nbsp;= new Human();<br />
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while(true)<br />
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
        //上学<br />
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
        //吃饭<br />
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;me.goHome();<br />
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
        &nbsp;&nbsp;&nbsp; }<br />
        }<br />
        &nbsp;<img style="left: 477px; top: 2185px;" alt="" src="http://www.uml.org.cn/oobject/images/7swedww.gif" border="0" height="221" width="566" />
        </li>
        <li> 释义：我的家和我之间具有着一种强烈的所属关系，我的家是可以分享的，而这里的分享又可以有两种。其一是聚合间的分享，这正如你和你媳妇儿都对这个家有着同样的强烈关联；其二是聚合与关联的分享，如果你的朋友来家里吃个便饭，估计你不会给他配一把钥匙。
        </li>
    </ul>
    </li>
    <li><span style="color: #0000ff;"><strong>组合</strong></span>：
    <ul>
        <li>UML表示法：实心菱形 + 实线 + 箭头 <br />
        <img alt="" src="http://www.uml.org.cn/oobject/images/4weswsw.gif" border="0" height="58" width="321" />
        </li>
        <li>关系：" ... is a&nbsp;part of &nbsp;..."
        </li>
        <li> 组合是关系当中的最强版本，它直接要求包含对象对被包含对象的拥有以及包含对象与被包含对象生命期的关系。被包含的对象还可以再被别的对象关联，所以被包含对象是可以共享的，然而绝不存在两个包含对象对同一个被包含对象的共享。
        </li>
        <li>典型的例子很多，比如：<br />
        class Human<br />
        {<br />
        &nbsp;&nbsp;&nbsp;&nbsp;Heart myHeart = new Heart();<br />
        &nbsp;&nbsp;&nbsp;&nbsp;public static void main()<br />
        &nbsp;&nbsp;&nbsp; {<br />
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Human
        me&nbsp;= new Human();<br />
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while(true)<br />
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;myHeart.beat();<br />
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
        &nbsp;&nbsp;&nbsp; }<br />
        }<br />
        <img style="left: 321px; top: 2728px;" alt="" src="http://www.uml.org.cn/oobject/images/8ferfe.gif" border="0" height="215" width="578" />
        </li>
        <li>
        释义：组合关系就是整体与部分的关系，部分属于整体，整体不存在，部分一定不存在，然而部分不存在整体是可以存在的，说的更明确一些就是部分必须创生于整
        体创生之后，而销毁于整体销毁之前。部分在这个生命期内可以被其它对象关联甚至聚合，但有一点必须注意，一旦部分所属于的整体销毁了，那么与之关联的对象
        中的引用就会成为空引用，这一点可以利用程序来保障。心脏的生命期与人的生命期是一致的，如果换个部分就不那么一定，比如阑尾，很多人在创生后的某个时间
        对其厌倦便提前销毁了它，可它和人类的关系不可辩驳的属于组合。<br />
        在UML中存在一种特例，就是允许被包含对象在包含对象销毁前转移给新的对象，这虽然不自然，但它给需要心脏移植的患者带来了福音。
        </li>
    </ul>
    </li>
</ol>
也可以这样分：<br />
<ul>
    <li> 依赖(dependency)是一种使用关系，他描述一个事物的规约变化可能影响到使用它的另一个事物。个人认为在参数或者方法体中使用到另外的类就是对该类有依赖的关系。use
    a <br />
    <img alt="" src="http://www.uml.org.cn/oobject/images/dependency.jpg" /> </li>
    <li>泛化(dependency)用于描述子类到父类之间的关系。 Is a kind of <br />
    <img alt="" src="http://www.uml.org.cn/oobject/images/generalization.jpg" /> </li>
    <li>关联(association)是一种结构关系，他描述一个对象与另一个对象相联系。 Has a
    <ul>
        <li>双向关联(association)通过A对象可以找到B对象，B对象同样可以找到A对象的关联为双向关联。
        <br />
        <img alt="" src="http://www.uml.org.cn/oobject/images/association.jpg" /> </li>
        <li> 单向关联(direction-association)通过A对象可以找到B对象，但通过B对象不能找到A对象的关联为单向关联。
        <br />
        <img alt="" src="http://www.uml.org.cn/oobject/images/directed-association.jpg" />
        </li>
        <li>聚合(aggreation)A对象是B对象的一个组成部份，但A对象同时可能是C对象的组成部分这种关联为聚合。
        <br />
        <img alt="" src="http://www.uml.org.cn/oobject/images/aggregation.jpg" /> </li>
        <li>组合(composition)A对象是B对象的一个组成部份，除非B对象将A对象转交给其他对象，否则A对象只能是B对象的组成部分，这种关联为组合。
        <br />
        <img alt="" src="http://www.uml.org.cn/oobject/images/composition.jpg" /></li>
    </ul>
    </li>
</ul>
这篇文章写的也很好，理解起来比较容易点：<br />
http://www.uml.org.cn/oobject/201006243.asp<br />
<img src ="http://www.blogjava.net/asdtiang/aggbug/344455.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/asdtiang/" target="_blank">asdtiang</a> 2011-02-16 15:56 <a href="http://www.blogjava.net/asdtiang/archive/2011/02/16/344455.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>grails 中render xml json 使用记录</title><link>http://www.blogjava.net/asdtiang/archive/2011/01/10/342522.html</link><dc:creator>asdtiang</dc:creator><author>asdtiang</author><pubDate>Mon, 10 Jan 2011 04:24:00 GMT</pubDate><guid>http://www.blogjava.net/asdtiang/archive/2011/01/10/342522.html</guid><wfw:comment>http://www.blogjava.net/asdtiang/comments/342522.html</wfw:comment><comments>http://www.blogjava.net/asdtiang/archive/2011/01/10/342522.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/asdtiang/comments/commentRss/342522.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/asdtiang/services/trackbacks/342522.html</trackback:ping><description><![CDATA[只有使用了，才知道方便和强大啊，这主要还是依赖于groovy的MarkupBuilder，详见：<a href="http://groovy.codehaus.org/Creating+XML+using+Groovy%27s+MarkupBuilder">http://groovy.codehaus.org/Creating+XML+using+Groovy%27s+MarkupBuilder</a><br />
只有理解了它，在grials里使用render xml才能如鱼得水啊。其实很简单<br />
<br />
def xml = <span class="code-keyword">new</span> MarkupBuilder(writer)<br />
xml.records() {<br />
&nbsp; car(name:'HSV Maloo', make:'Holden', year:2006) {<br />
&nbsp;&nbsp;&nbsp; country('Australia')<br />
&nbsp;&nbsp;&nbsp; record(type:'speed', 'Production Pickup Truck with speed of 271kph')<br />
&nbsp; }<br />
&nbsp; }<br />
对应的xml文档：<br />
&nbsp;&lt;records&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;car name='HSV Maloo' make='Holden' year='2006'&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;country&gt;Australia&lt;/country&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;record type='speed'&gt;Production Pickup Truck with speed of 271kph&lt;/record&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/car&gt;<br />
&lt;/records&gt;<br />
只要分清对应关系就可以了。属性和属性值，节点，节点的值怎么画到groovy里。<br />
下面是controller里的返回xml代码：<br />
def tests=TestAjaxPage.findAll()<br />
&nbsp;&nbsp;render(contentType:"text/xml") {<br />
&nbsp;&nbsp;&nbsp;tests1 {<br />
&nbsp;&nbsp;&nbsp;&nbsp;for(b in tests) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;test(title:b.title,dateCreated:b.dateCreated){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;h b.content<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} <br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;}<br />
<br />
对应的返回文档为：<br />
<br />
&lt;tests1&gt;<br />
&lt;test title="社区技术需求test" dateCreated="2011-01-07 15:53:32.922"&gt;<br />
&lt;h&gt;haha&lt;/h&gt;<br />
&lt;/test&gt;<br />
&lt;/tests1&gt;<br />
<br />
这其实对于b/s,再混用c/s的程序中交换数据还是很有用的，so easy<br />
<br />
<br />
render json就要麻烦点了，主要是1.1版本和1.3.6版本写法不一样：<br />
先写1.1的吧：<br />
render(contentType:"text/json") {&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;max&nbsp;"max"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;resultList{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Book.getAll().each{oneitem-&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Book(<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;id:oneitem.id,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;name:oneitem.name,&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
1.3.6的写法如下：<br />
def tests=TestAjaxPage.findAll()<br />
&nbsp;&nbsp;render(contentType:"text/json") {<br />
&nbsp;&nbsp;&nbsp;max&nbsp; (max1:"max")<br />
&nbsp;&nbsp;&nbsp;tests1= array{<br />
&nbsp;&nbsp;&nbsp;&nbsp;tests.each {one-&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TestAjaxPage(<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;id:one.id,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;content:one.content,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;title:one.title,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dateCreated:one.dateCreated<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;)<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;}<br />
返回数据：{"max":{"max1":"max"},"tests1":[{"id":1,"content":"qewrqwe","title":"qwereqwr","dateCreated":"2011-01-07T10:11:52Z"}]}<br />
最后var e=originalRequest.responseText.evalJSON();就是在js里调用下.evalJSON()，就可以看做对象访问数据。<br />
<br />
版本不同，我手里一致用1.1的中文文档，做的时候自己用的1.3.6，郁闷了好久，出不来。最后看1.3.6的文档才发现写法不一样呢<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<img src ="http://www.blogjava.net/asdtiang/aggbug/342522.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/asdtiang/" target="_blank">asdtiang</a> 2011-01-10 12:24 <a href="http://www.blogjava.net/asdtiang/archive/2011/01/10/342522.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>grails acegi 在线用户统计</title><link>http://www.blogjava.net/asdtiang/archive/2011/01/10/342669.html</link><dc:creator>asdtiang</dc:creator><author>asdtiang</author><pubDate>Mon, 10 Jan 2011 04:03:00 GMT</pubDate><guid>http://www.blogjava.net/asdtiang/archive/2011/01/10/342669.html</guid><wfw:comment>http://www.blogjava.net/asdtiang/comments/342669.html</wfw:comment><comments>http://www.blogjava.net/asdtiang/archive/2011/01/10/342669.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/asdtiang/comments/commentRss/342669.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/asdtiang/services/trackbacks/342669.html</trackback:ping><description><![CDATA[主要参考文档：<a href="http://grails.1312388.n4.nabble.com/Information-about-all-logged-in-users-with-Acegi-or-SpringSecurity-in-Grails-td1372911.html">http://grails.1312388.n4.nabble.com/Information-about-all-logged-in-users-with-Acegi-or-SpringSecurity-in-Grails-td1372911.html</a><br />
<br />
根据文档，基本操作翻译如下：（注意只统计在线用户，也就是登录的用户）<br />
<br />
在SecurityConfig中设置&nbsp;useHttpSessionEventPublisher 为true,<br />
// HttpSessionEventPublisher<br />
&nbsp;useHttpSessionEventPublisher = true<br />
这样不用更改web.xml文件<br />
<br />
resources.groovy:文件增加以下bean：<br />
<span>&nbsp;&nbsp;&nbsp;beans = { </span><br />
<br />
<span>&nbsp; &nbsp; &nbsp; <strong class="highlight">sessionRegistry</strong>(org.springframework.security.concurrent.<strong class="highlight">SessionRegistryImpl</strong>) </span><br />
<br />
<span>&nbsp; &nbsp; &nbsp; sessionController(org.springframework.security.concurrent.ConcurrentSessionControllerImpl) { </span><br />
<span>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;maximumSessions = -1&nbsp;//表示同一个账户可以多次登录，但只计一个在线用户</span><br />
<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong class="highlight">sessionRegistry</strong> = ref('<strong class="highlight">sessionRegistry</strong>') </span><br />
<span>&nbsp; &nbsp; &nbsp; } </span><br />
<span>&nbsp; &nbsp;} <br />
</span><br />
BootStap对应增加以下内容：<br />
class BootStrap { <br />
<br />
<span>&nbsp; &nbsp; &nbsp; def authenticationManager </span><br />
<span>&nbsp; &nbsp; &nbsp; def sessionController </span><br />
<br />
<span>&nbsp; &nbsp; &nbsp; def init = { servletContext -&gt; </span><br />
<span>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;authenticationManager.sessionController = sessionController </span><br />
<span>&nbsp; &nbsp; &nbsp; }&nbsp;</span><br />
<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; def destroy = {} </span><br />
<span>&nbsp; &nbsp;} <br />
<br />
<br />
测试<br />
<p>class OnlineController {<br />
&nbsp;def sessionRegistry<br />
&nbsp;def test={<br />
&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;render sessionRegistry.getAllPrincipals().length<br />
&nbsp;&nbsp;}</p>
<p>}<br />
主要类的文档：<br />
ConcurrentSessionControllerImpl：<br />
<a href="http://static.springsource.org/spring-security/site/docs/2.0.x/apidocs/org/springframework/security/concurrent/ConcurrentSessionControllerImpl.html">http://static.springsource.org/spring-security/site/docs/2.0.x/apidocs/org/springframework/security/concurrent/ConcurrentSessionControllerImpl.html<br />
</a>SessionRegistryImpl：<br />
<a href="http://static.springsource.org/spring-security/site/docs/2.0.x/apidocs/org/springframework/security/concurrent/SessionRegistryImpl.html">http://static.springsource.org/spring-security/site/docs/2.0.x/apidocs/org/springframework/security/concurrent/SessionRegistryImpl.html</a><br />
</p>
<br />
</span><br />
<br />
<br />
<br />
<br />
<img src ="http://www.blogjava.net/asdtiang/aggbug/342669.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/asdtiang/" target="_blank">asdtiang</a> 2011-01-10 12:03 <a href="http://www.blogjava.net/asdtiang/archive/2011/01/10/342669.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>grails acegi ajax登录</title><link>http://www.blogjava.net/asdtiang/archive/2011/01/07/342512.html</link><dc:creator>asdtiang</dc:creator><author>asdtiang</author><pubDate>Fri, 07 Jan 2011 06:47:00 GMT</pubDate><guid>http://www.blogjava.net/asdtiang/archive/2011/01/07/342512.html</guid><wfw:comment>http://www.blogjava.net/asdtiang/comments/342512.html</wfw:comment><comments>http://www.blogjava.net/asdtiang/archive/2011/01/07/342512.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/asdtiang/comments/commentRss/342512.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/asdtiang/services/trackbacks/342512.html</trackback:ping><description><![CDATA[js代码如下：<br />
<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #000000">&lt;</span><span style="color: #000000">script&nbsp;type</span><span style="color: #000000">=</span><span style="color: #000000">'text</span><span style="color: #000000">/</span><span style="color: #000000">javascript'</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #008000">//</span><span style="color: #008000">///ajax登录js</span><span style="color: #008000"><br />
<img id="Codehighlighter1_68_113_Open_Image" onclick="this.style.display='none'; Codehighlighter1_68_113_Open_Text.style.display='none'; Codehighlighter1_68_113_Closed_Image.style.display='inline'; Codehighlighter1_68_113_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_68_113_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_68_113_Closed_Text.style.display='none'; Codehighlighter1_68_113_Open_Image.style.display='inline'; Codehighlighter1_68_113_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">function</span><span style="color: #000000">&nbsp;showLogin()&nbsp;</span><span id="Codehighlighter1_68_113_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_68_113_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$('ajaxLogin').style.display&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;'block';<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img id="Codehighlighter1_148_223_Open_Image" onclick="this.style.display='none'; Codehighlighter1_148_223_Open_Text.style.display='none'; Codehighlighter1_148_223_Closed_Image.style.display='inline'; Codehighlighter1_148_223_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_148_223_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_148_223_Closed_Text.style.display='none'; Codehighlighter1_148_223_Open_Image.style.display='inline'; Codehighlighter1_148_223_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">function</span><span style="color: #000000">&nbsp;onSuccessfulLogin(url)&nbsp;</span><span id="Codehighlighter1_148_223_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_148_223_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">alert(url);</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;document.form1.action</span><span style="color: #000000">=</span><span style="color: #000000">url;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;document.form1.submit();<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img id="Codehighlighter1_247_903_Open_Image" onclick="this.style.display='none'; Codehighlighter1_247_903_Open_Text.style.display='none'; Codehighlighter1_247_903_Closed_Image.style.display='inline'; Codehighlighter1_247_903_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_247_903_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_247_903_Closed_Text.style.display='none'; Codehighlighter1_247_903_Open_Image.style.display='inline'; Codehighlighter1_247_903_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">function</span><span style="color: #000000">&nbsp;authAjax()&nbsp;</span><span id="Codehighlighter1_247_903_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_247_903_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;form&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;document.ajaxLoginForm;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;params&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;Form.serialize(form)<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;'</span><span style="color: #000000">&amp;</span><span style="color: #000000">spring</span><span style="color: #000000">-</span><span style="color: #000000">security</span><span style="color: #000000">-</span><span style="color: #000000">redirect</span><span style="color: #000000">=/</span><span style="color: #000000">login</span><span style="color: #000000">/</span><span style="color: #000000">ajaxSuccess';<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">Form.disable(form);</span><span style="color: #008000"><br />
<img id="Codehighlighter1_432_898_Open_Image" onclick="this.style.display='none'; Codehighlighter1_432_898_Open_Text.style.display='none'; Codehighlighter1_432_898_Closed_Image.style.display='inline'; Codehighlighter1_432_898_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_432_898_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_432_898_Closed_Text.style.display='none'; Codehighlighter1_432_898_Open_Image.style.display='inline'; Codehighlighter1_432_898_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;Ajax.Request(form.action,&nbsp;</span><span id="Codehighlighter1_432_898_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_432_898_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;method&nbsp;:&nbsp;'POST',<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;postBody&nbsp;:&nbsp;params,<br />
<img id="Codehighlighter1_510_894_Open_Image" onclick="this.style.display='none'; Codehighlighter1_510_894_Open_Text.style.display='none'; Codehighlighter1_510_894_Closed_Image.style.display='inline'; Codehighlighter1_510_894_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_510_894_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_510_894_Closed_Text.style.display='none'; Codehighlighter1_510_894_Open_Image.style.display='inline'; Codehighlighter1_510_894_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;onSuccess&nbsp;:&nbsp;</span><span style="color: #0000ff">function</span><span style="color: #000000">(response)&nbsp;</span><span id="Codehighlighter1_510_894_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_510_894_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;responseText&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;response.responseText&nbsp;</span><span style="color: #000000">||</span><span style="color: #000000">&nbsp;'[]';<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;json&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;responseText.evalJSON();<br />
<img id="Codehighlighter1_628_688_Open_Image" onclick="this.style.display='none'; Codehighlighter1_628_688_Open_Text.style.display='none'; Codehighlighter1_628_688_Closed_Image.style.display='inline'; Codehighlighter1_628_688_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_628_688_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_628_688_Closed_Text.style.display='none'; Codehighlighter1_628_688_Open_Image.style.display='inline'; Codehighlighter1_628_688_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(json.success)&nbsp;</span><span id="Codehighlighter1_628_688_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_628_688_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">alert("ok");</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;onSuccessfulLogin(json.url);<br />
<img id="Codehighlighter1_711_783_Open_Image" onclick="this.style.display='none'; Codehighlighter1_711_783_Open_Text.style.display='none'; Codehighlighter1_711_783_Closed_Image.style.display='inline'; Codehighlighter1_711_783_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_711_783_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_711_783_Closed_Text.style.display='none'; Codehighlighter1_711_783_Open_Image.style.display='inline'; Codehighlighter1_711_783_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">else</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(json.error)&nbsp;</span><span id="Codehighlighter1_711_783_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_711_783_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert(json.error);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Form.enable(document.ajaxLoginForm);<br />
<img id="Codehighlighter1_790_889_Open_Image" onclick="this.style.display='none'; Codehighlighter1_790_889_Open_Text.style.display='none'; Codehighlighter1_790_889_Closed_Image.style.display='inline'; Codehighlighter1_790_889_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_790_889_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_790_889_Closed_Text.style.display='none'; Codehighlighter1_790_889_Open_Image.style.display='inline'; Codehighlighter1_790_889_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">else</span><span style="color: #000000">&nbsp;</span><span id="Codehighlighter1_790_889_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_790_889_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Element.update('loginMessage',&nbsp;responseText);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Form.enable(document.ajaxLoginForm);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000">);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #000000">&lt;/</span><span style="color: #000000">script</span><span style="color: #000000">&gt;</span></div>
<br />
login代码示例：<br />
<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img id="Codehighlighter1_18_211_Open_Image" onclick="this.style.display='none'; Codehighlighter1_18_211_Open_Text.style.display='none'; Codehighlighter1_18_211_Closed_Image.style.display='inline'; Codehighlighter1_18_211_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_18_211_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_18_211_Closed_Text.style.display='none'; Codehighlighter1_18_211_Open_Image.style.display='inline'; Codehighlighter1_18_211_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" /><span style="color: #000000">def&nbsp;ajaxSuccess&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span id="Codehighlighter1_18_211_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_18_211_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nocache(response)<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;def&nbsp;config&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;authenticateService.securityConfig.security<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;def&nbsp;postUrl&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">${request.contextPath}${config.defaultTargetUrl}</span><span style="color: #000000">"</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;render&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">{success:&nbsp;true,url:'${postUrl}'}</span><span style="color: #000000">"//这里返回的是json<br />
</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img id="Codehighlighter1_231_716_Open_Image" onclick="this.style.display='none'; Codehighlighter1_231_716_Open_Text.style.display='none'; Codehighlighter1_231_716_Closed_Image.style.display='inline'; Codehighlighter1_231_716_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_231_716_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_231_716_Closed_Text.style.display='none'; Codehighlighter1_231_716_Open_Image.style.display='inline'; Codehighlighter1_231_716_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" />def&nbsp;authfail&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span id="Codehighlighter1_231_716_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_231_716_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;def&nbsp;username&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;session[AuthenticationProcessingFilter.SPRING_SECURITY_LAST_USERNAME_KEY]<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;def&nbsp;msg&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">''</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;def&nbsp;exception&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;session[AbstractProcessingFilter.SPRING_SECURITY_LAST_EXCEPTION_KEY]<br />
<img id="Codehighlighter1_444_583_Open_Image" onclick="this.style.display='none'; Codehighlighter1_444_583_Open_Text.style.display='none'; Codehighlighter1_444_583_Closed_Image.style.display='inline'; Codehighlighter1_444_583_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_444_583_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_444_583_Closed_Text.style.display='none'; Codehighlighter1_444_583_Open_Image.style.display='inline'; Codehighlighter1_444_583_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(exception)&nbsp;</span><span id="Codehighlighter1_444_583_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_444_583_Open_Text"><span style="color: #000000">{<br />
<img id="Codehighlighter1_493_529_Open_Image" onclick="this.style.display='none'; Codehighlighter1_493_529_Open_Text.style.display='none'; Codehighlighter1_493_529_Closed_Image.style.display='inline'; Codehighlighter1_493_529_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_493_529_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_493_529_Closed_Text.style.display='none'; Codehighlighter1_493_529_Open_Image.style.display='inline'; Codehighlighter1_493_529_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(exception&nbsp;</span><span style="color: #0000ff">instanceof</span><span style="color: #000000">&nbsp;DisabledException)&nbsp;</span><span id="Codehighlighter1_493_529_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_493_529_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;msg&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">[$username]&nbsp;用户被禁用.</span><span style="color: #000000">"</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img id="Codehighlighter1_539_579_Open_Image" onclick="this.style.display='none'; Codehighlighter1_539_579_Open_Text.style.display='none'; Codehighlighter1_539_579_Closed_Image.style.display='inline'; Codehighlighter1_539_579_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_539_579_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_539_579_Closed_Text.style.display='none'; Codehighlighter1_539_579_Open_Image.style.display='inline'; Codehighlighter1_539_579_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">else</span><span style="color: #000000">&nbsp;</span><span id="Codehighlighter1_539_579_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_539_579_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;msg&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">[$username]&nbsp;错误的用户名或密码.</span><span style="color: #000000">"</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img id="Codehighlighter1_602_636_Open_Image" onclick="this.style.display='none'; Codehighlighter1_602_636_Open_Text.style.display='none'; Codehighlighter1_602_636_Closed_Image.style.display='inline'; Codehighlighter1_602_636_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_602_636_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_602_636_Closed_Text.style.display='none'; Codehighlighter1_602_636_Open_Image.style.display='inline'; Codehighlighter1_602_636_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(isAjax())&nbsp;</span><span id="Codehighlighter1_602_636_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_602_636_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;render&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">{error:&nbsp;'${msg}'}</span><span style="color: #000000">"</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img id="Codehighlighter1_645_713_Open_Image" onclick="this.style.display='none'; Codehighlighter1_645_713_Open_Text.style.display='none'; Codehighlighter1_645_713_Closed_Image.style.display='inline'; Codehighlighter1_645_713_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_645_713_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_645_713_Closed_Text.style.display='none'; Codehighlighter1_645_713_Open_Image.style.display='inline'; Codehighlighter1_645_713_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">else</span><span style="color: #000000">&nbsp;</span><span id="Codehighlighter1_645_713_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_645_713_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;flash.message&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;msg<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;redirect&nbsp;action:&nbsp;auth,&nbsp;params:&nbsp;params<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span></div>
<br />
<br />
页面：<br />
&nbsp;
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&lt;</span><span style="font-size: 10pt; background: silver; color: #3f7f7f; font-family: 'Courier New'">form</span><span style="font-size: 10pt; font-family: 'Courier New'"> <span style="color: #7f007f">id</span><span style="color: black">=</span><em><span style="color: #2a00ff">"form1"</span></em> <span style="color: #7f007f">name</span><span style="color: black">=</span><em><span style="color: #2a00ff">"form1"</span></em> <span style="color: #7f007f">target</span><span style="color: black">=</span><em><span style="color: #2a00ff">"_blank"</span></em><span style="color: teal">&gt;&lt;/</span><span style="background: silver; color: #3f7f7f">form</span><span style="color: teal">&gt;</span></span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&lt;</span><span style="font-size: 10pt; color: #3f7f7f; font-family: 'Courier New'">form</span><span style="font-size: 10pt; font-family: 'Courier New'"> <span style="color: #7f007f">action</span><span style="color: black">=</span><em><span style="color: #2a00ff">'</span></em><span style="color: black">${request.contextPath}</span><em><span style="color: #2a00ff">/j_spring_security_check'</span></em></span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; <span style="color: #7f007f">method</span><span style="color: black">=</span><em><span style="color: #2a00ff">'POST'</span></em> <span style="color: #7f007f">id</span><span style="color: black">=</span><em><span style="color: #2a00ff">'ajaxLoginForm'</span></em> <span style="color: #7f007f">name</span><span style="color: black">=</span><em><span style="color: #2a00ff">'ajaxLoginForm'</span></em> <span style="color: #7f007f">target</span><span style="color: black">=</span><em><span style="color: #2a00ff">"_blank"</span></em><span style="color: teal">&gt;</span></span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 宋体">用户名</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&lt;</span><span style="font-size: 10pt; color: #3f7f7f; font-family: 'Courier New'">input</span><span style="font-size: 10pt; font-family: 'Courier New'"> <span style="color: #7f007f">id</span><span style="color: black">=</span><em><span style="color: #2a00ff">"j_username"</span></em> <span style="color: #7f007f">name</span><span style="color: black">=</span><em><span style="color: #2a00ff">"j_username"</span></em> <span style="color: #7f007f">type</span><span style="color: black">=</span><em><span style="color: #2a00ff">"text"</span></em> <span style="color: teal">/&gt;</span><span style="color: black">&nbsp;&nbsp;&nbsp; </span></span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 宋体">密</span><span style="font-size: 10pt; color: #2a00ff; font-family: 'Courier New'">&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;</span><span style="font-size: 10pt; color: black; font-family: 宋体">码</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&lt;</span><span style="font-size: 10pt; color: #3f7f7f; font-family: 'Courier New'">input</span><span style="font-size: 10pt; font-family: 'Courier New'"> <span style="color: #7f007f">name</span><span style="color: black">=</span><em><span style="color: #2a00ff">"j_password"</span></em> <span style="color: #7f007f">id</span><span style="color: black">=</span><em><span style="color: #2a00ff">"j_password"</span></em> <span style="color: #7f007f">type</span><span style="color: black">=</span><em><span style="color: #2a00ff">"password"</span></em> <span style="color: teal">/&gt;&lt;</span><span style="color: #3f7f7f">input</span> <span style="color: #7f007f">onclick</span><span style="color: black">=</span><span style="color: #2a00ff">'authAjax(); return false;'</span><span style="color: #7f007f">type</span><span style="color: black">=</span><em><span style="color: #2a00ff">"image"</span></em> <span style="color: #7f007f">src</span><span style="color: black">=</span><em><span style="color: #2a00ff">"login.jpg"</span></em> <span style="color: teal">/&gt;</span></span></p>
<p><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&lt;/</span><span style="font-size: 10pt; color: #3f7f7f; font-family: 'Courier New'">form</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&gt;<br />
<br />
<br />
暂时想不起来为什么用两个form呢，最后引入js:&lt;g:javascript library="prototype" /&gt;</span></p>
<img src ="http://www.blogjava.net/asdtiang/aggbug/342512.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/asdtiang/" target="_blank">asdtiang</a> 2011-01-07 14:47 <a href="http://www.blogjava.net/asdtiang/archive/2011/01/07/342512.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>json和xml在传输数据上的区别</title><link>http://www.blogjava.net/asdtiang/archive/2011/01/07/342507.html</link><dc:creator>asdtiang</dc:creator><author>asdtiang</author><pubDate>Fri, 07 Jan 2011 06:06:00 GMT</pubDate><guid>http://www.blogjava.net/asdtiang/archive/2011/01/07/342507.html</guid><wfw:comment>http://www.blogjava.net/asdtiang/comments/342507.html</wfw:comment><comments>http://www.blogjava.net/asdtiang/archive/2011/01/07/342507.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/asdtiang/comments/commentRss/342507.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/asdtiang/services/trackbacks/342507.html</trackback:ping><description><![CDATA[先记一下，当跨域访问时，只有css和js不会弹出安全提示，json是基于js的，xml不是，所以用json不会弹出提示框，xml会弹出提示框。
<img src ="http://www.blogjava.net/asdtiang/aggbug/342507.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/asdtiang/" target="_blank">asdtiang</a> 2011-01-07 14:06 <a href="http://www.blogjava.net/asdtiang/archive/2011/01/07/342507.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>grails searchable highlight显示查询结果</title><link>http://www.blogjava.net/asdtiang/archive/2010/12/22/341336.html</link><dc:creator>asdtiang</dc:creator><author>asdtiang</author><pubDate>Wed, 22 Dec 2010 09:46:00 GMT</pubDate><guid>http://www.blogjava.net/asdtiang/archive/2010/12/22/341336.html</guid><wfw:comment>http://www.blogjava.net/asdtiang/comments/341336.html</wfw:comment><comments>http://www.blogjava.net/asdtiang/archive/2010/12/22/341336.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/asdtiang/comments/commentRss/341336.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/asdtiang/services/trackbacks/341336.html</trackback:ping><description><![CDATA[查不到中文的结果，所以这里记一下<br />
以前用lucene时，还比较好控制，用searchable还不太适应。<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img id="Codehighlighter1_12_335_Open_Image" onclick="this.style.display='none'; Codehighlighter1_12_335_Open_Text.style.display='none'; Codehighlighter1_12_335_Closed_Image.style.display='inline'; Codehighlighter1_12_335_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_12_335_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_12_335_Closed_Text.style.display='none'; Codehighlighter1_12_335_Open_Image.style.display='inline'; Codehighlighter1_12_335_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" /><span style="color: #000000">def&nbsp;index&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span id="Codehighlighter1_12_335_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_12_335_Open_Text"><span style="color: #000000">{<br />
<img id="Codehighlighter1_45_78_Open_Image" onclick="this.style.display='none'; Codehighlighter1_45_78_Open_Text.style.display='none'; Codehighlighter1_45_78_Closed_Image.style.display='inline'; Codehighlighter1_45_78_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_45_78_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_45_78_Closed_Text.style.display='none'; Codehighlighter1_45_78_Open_Image.style.display='inline'; Codehighlighter1_45_78_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(</span><span style="color: #000000">!</span><span style="color: #000000">params.q</span><span style="color: #000000">?</span><span style="color: #000000">.trim())&nbsp;</span><span id="Codehighlighter1_45_78_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_45_78_Open_Text"><span style="color: #000000">{<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;[:]<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img id="Codehighlighter1_92_232_Open_Image" onclick="this.style.display='none'; Codehighlighter1_92_232_Open_Text.style.display='none'; Codehighlighter1_92_232_Closed_Image.style.display='inline'; Codehighlighter1_92_232_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_92_232_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_92_232_Closed_Text.style.display='none'; Codehighlighter1_92_232_Open_Image.style.display='inline'; Codehighlighter1_92_232_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">try</span><span style="color: #000000">&nbsp;</span><span id="Codehighlighter1_92_232_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_92_232_Open_Text"><span style="color: #000000">{<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;params.withHighlighter</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;songHighlighter<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;[searchResult:&nbsp;searchableService.search(params.q,&nbsp;params)]<br />
<img id="Codehighlighter1_277_329_Open_Image" onclick="this.style.display='none'; Codehighlighter1_277_329_Open_Text.style.display='none'; Codehighlighter1_277_329_Closed_Image.style.display='inline'; Codehighlighter1_277_329_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_277_329_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_277_329_Closed_Text.style.display='none'; Codehighlighter1_277_329_Open_Image.style.display='inline'; Codehighlighter1_277_329_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">catch</span><span style="color: #000000">&nbsp;(SearchEngineQueryParseException&nbsp;ex)&nbsp;</span><span id="Codehighlighter1_277_329_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_277_329_Open_Text"><span style="color: #000000">{<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;[parseException:&nbsp;</span><span style="color: #0000ff">true</span><span style="color: #000000">]<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;This&nbsp;closure&nbsp;does&nbsp;the&nbsp;per-hit&nbsp;highlighting<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;sr&nbsp;is&nbsp;the&nbsp;actual&nbsp;Map&nbsp;returned&nbsp;by&nbsp;search,&nbsp;so&nbsp;use&nbsp;that&nbsp;for&nbsp;storage</span><span style="color: #008000"><br />
<img id="Codehighlighter1_478_686_Open_Image" onclick="this.style.display='none'; Codehighlighter1_478_686_Open_Text.style.display='none'; Codehighlighter1_478_686_Closed_Image.style.display='inline'; Codehighlighter1_478_686_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_478_686_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_478_686_Closed_Text.style.display='none'; Codehighlighter1_478_686_Open_Image.style.display='inline'; Codehighlighter1_478_686_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;def&nbsp;songHighlighter&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span id="Codehighlighter1_478_686_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_478_686_Open_Text"><span style="color: #000000">{&nbsp;highlighter,&nbsp;index,&nbsp;sr&nbsp;</span><span style="color: #000000">-&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;lazy-init&nbsp;the&nbsp;storage</span><span style="color: #008000"><br />
<img id="Codehighlighter1_559_592_Open_Image" onclick="this.style.display='none'; Codehighlighter1_559_592_Open_Text.style.display='none'; Codehighlighter1_559_592_Closed_Image.style.display='inline'; Codehighlighter1_559_592_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_559_592_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_559_592_Closed_Text.style.display='none'; Codehighlighter1_559_592_Open_Image.style.display='inline'; Codehighlighter1_559_592_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(</span><span style="color: #000000">!</span><span style="color: #000000">sr.highlights)&nbsp;</span><span id="Codehighlighter1_559_592_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_559_592_Open_Text"><span style="color: #000000">{<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sr.highlights&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;[]<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">content为domain的属性</span><span style="color: #008000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;sr.highlights[index]&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;highlighter.fragment(</span><span style="color: #000000">"</span><span style="color: #000000">content</span><span style="color: #000000">"</span><span style="color: #000000">)&nbsp;&nbsp;&nbsp;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;Do&nbsp;the&nbsp;search,&nbsp;passing&nbsp;he&nbsp;highlighter&nbsp;option</span></div>
<br />
页面更改：<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">g:each&nbsp;</span><span style="color: #ff0000">var</span><span style="color: #0000ff">="result"</span><span style="color: #ff0000">&nbsp;in</span><span style="color: #0000ff">="${searchResult.results}"</span><span style="color: #ff0000">&nbsp;status</span><span style="color: #0000ff">="index"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">div&nbsp;</span><span style="color: #ff0000">class</span><span style="color: #0000ff">="result"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">g:set&nbsp;</span><span style="color: #ff0000">var</span><span style="color: #0000ff">="className"</span><span style="color: #ff0000">&nbsp;value</span><span style="color: #0000ff">="${ClassUtils.getShortName(result.getClass())}"</span><span style="color: #ff0000">&nbsp;</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">g:set&nbsp;</span><span style="color: #ff0000">var</span><span style="color: #0000ff">="link"</span><span style="color: #ff0000">&nbsp;value</span><span style="color: #0000ff">="${createLink(controller:&nbsp;className[0].toLowerCase()&nbsp;+&nbsp;className[1..-1],&nbsp;action:&nbsp;'show',&nbsp;id:&nbsp;result.id)}"</span><span style="color: #ff0000">&nbsp;</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">div&nbsp;</span><span style="color: #ff0000">class</span><span style="color: #0000ff">="name"</span><span style="color: #0000ff">&gt;&lt;</span><span style="color: #800000">a&nbsp;</span><span style="color: #ff0000">href</span><span style="color: #0000ff">="${link}"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">${result.title}</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">a</span><span style="color: #0000ff">&gt;&lt;/</span><span style="color: #800000">div</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">div&nbsp;</span><span style="color: #ff0000">class</span><span style="color: #0000ff">="desc"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">${searchResult.highlights[index]}</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">div</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">div&nbsp;</span><span style="color: #ff0000">class</span><span style="color: #0000ff">="displayLink"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">${link}</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">div</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">div</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">g:each</span><span style="color: #0000ff">&gt;</span></div>
查询结果示例，直接输出的searchResults<br />
<br />
{total=3, hits=org.compass.core.impl.DefaultCompassDetachedHits@4eb331, max=10, scores=[0.34462962, 0.34462962, 0.19071755], results=[asdf, asdf, 中国（拼音：Zhōnggu&#243;），是中华人民共和国的简称。古代华夏族建国于黄河流域一带，以为居天下之中，故称。还有一种解释古代中国人认为天圆地方，中国位于正中，故称中国，后成为专称。清朝，作为官方正式称呼，现代主要指中华人民共和国（英译为：The People's Republic of China，简称China）。 陆地面积960万平方千米，东部和南部大陆海岸线1.8万多千米，内海和边海的水域面积约470多万平方千米。海域分布有大小岛屿7600个。首都北京。中国具有五千年的文明史，是世界四大文明古国之一。因其文化传播的广泛性、独特性和成熟性而对周边国家和民族的文化产生深远影响，同时不断吸收各个民族的文明成果，是世界上少数最早产生文明并延续至今的国家之一。 ], offset=0, highlights=[null, null, <strong>中</strong>国（拼音：Zhōnggu&#243;），是<strong>中</strong>华人民共和国的简称。古代华夏族建国于黄河流域一带，以为居天下之<strong>中</strong>，故称。还有一种解释古代<strong>中</strong>国人认为天圆地方，<strong>中</strong>国位于正<strong>中</strong>，故称<strong>中</strong>国，后成为专称。清朝，作为官方正式]} <br />
<br />
<br />
查询结果高亮显示css为b,<br />
只要在css里加上b{color : red;}，就显示为红色了。<br />
<br />
从结果可以看出，要了highlights就没有必要要results,信息重复，但each里用了，要下班了，明天研究下吧<br />
<br />
刚到公司，想起来了，当时在domain类下重写了toString()方法，不重写results里就没有那么多内容了。<br />
<br />
<img src ="http://www.blogjava.net/asdtiang/aggbug/341336.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/asdtiang/" target="_blank">asdtiang</a> 2010-12-22 17:46 <a href="http://www.blogjava.net/asdtiang/archive/2010/12/22/341336.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>转载：java keytool使用</title><link>http://www.blogjava.net/asdtiang/archive/2010/12/22/341310.html</link><dc:creator>asdtiang</dc:creator><author>asdtiang</author><pubDate>Wed, 22 Dec 2010 06:00:00 GMT</pubDate><guid>http://www.blogjava.net/asdtiang/archive/2010/12/22/341310.html</guid><wfw:comment>http://www.blogjava.net/asdtiang/comments/341310.html</wfw:comment><comments>http://www.blogjava.net/asdtiang/archive/2010/12/22/341310.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/asdtiang/comments/commentRss/341310.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/asdtiang/services/trackbacks/341310.html</trackback:ping><description><![CDATA[<p><span style="font-size: small">Keytool是一个Java数据证书的管理工具 ,Keytool将密钥（key）和证书（certificates）存在一个称为keystore的文件中在keystore里，包含两种数据： <br />
密钥实体（Key entity）——密钥（secret key）又或者是私钥和配对公钥（采用非对称加密） <br />
可信任的证书实体（trusted certificate entries）——只包含公钥 </span></p>
<p><span style="font-size: small"><br />
ailas(别名)每个keystore都关联这一个独一无二的alias，这个alias通常不区分大小写 </span></p>
<p>&nbsp;</p>
<p><span style="font-size: small"><span style="color: #ff0000">JDK中keytool常用命令:</span> <br />
<br />
-genkey&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在用户主目录中创建一个默认文件".keystore",还会产生一个mykey的别名，mykey中包含用户的公钥、私钥和证书<br />
(在没有指定生成位置的情况下,keystore会存在用户系统默认目录，如：对于window xp系统，会生成在系统的C:\Documents and Settings\UserName\文件名为&#8220;.keystore&#8221;)<br />
-alias&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 产生别名<br />
-keystore&nbsp;&nbsp;&nbsp; 指定密钥库的名称(产生的各类信息将不在.keystore文件中)<br />
-keyalg&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 指定密钥的算法 (如 RSA&nbsp; DSA（如果不指定默认采用DSA）)<br />
-validity&nbsp;&nbsp;&nbsp; 指定创建的证书有效期多少天<br />
-keysize&nbsp;&nbsp;&nbsp;&nbsp; 指定密钥长度<br />
-storepass&nbsp;&nbsp; 指定密钥库的密码(获取keystore信息所需的密码)<br />
-keypass&nbsp;&nbsp;&nbsp;&nbsp; 指定别名条目的密码(私钥的密码)<br />
-dname&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 指定证书拥有者信息 例如：&nbsp; "CN=名字与姓氏,OU=组织单位名称,O=组织名称,L=城市或区域名称,ST=州或省份名称,C=单位的两字母国家代码"<br />
-list&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 显示密钥库中的证书信息&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; keytool -list -v -keystore 指定keystore -storepass 密码<br />
-v&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 显示密钥库中的证书详细信息<br />
-export&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 将别名指定的证书导出到文件&nbsp; keytool -export -alias 需要导出的别名 -keystore 指定keystore -file 指定导出的证书位置及证书名称 -storepass 密码<br />
-file&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 参数指定导出到文件的文件名<br />
-delete&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 删除密钥库中某条目&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; keytool -delete -alias 指定需删除的别&nbsp; -keystore 指定keystore&nbsp; -storepass 密码<br />
-printcert&nbsp;&nbsp; 查看导出的证书信息&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; keytool -printcert -file yushan.crt<br />
-keypasswd&nbsp;&nbsp; 修改密钥库中指定条目口令&nbsp;&nbsp;&nbsp; keytool -keypasswd -alias 需修改的别名 -keypass 旧密码 -new&nbsp; 新密码&nbsp; -storepass keystore密码&nbsp; -keystore sage<br />
-storepasswd 修改keystore口令&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; keytool -storepasswd -keystore e:\yushan.keystore(需修改口令的keystore) -storepass 123456(原始密码) -new yushan(新密码)<br />
-import&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 将已签名数字证书导入密钥库&nbsp; keytool -import -alias 指定导入条目的别名 -keystore 指定keystore -file 需导入的证书</span> </p>
<p>&nbsp;</p>
<p><span style="font-size: small">下面是各选项的缺省值。&nbsp;<br />
-alias&nbsp;"mykey"<br />
<br />
-keyalg&nbsp;"DSA"<br />
<br />
-keysize&nbsp;1024<br />
<br />
-validity&nbsp;90<br />
<br />
-keystore&nbsp;用户宿主目录中名为&nbsp;.keystore&nbsp;的文件<br />
<br />
-file&nbsp;读时为标准输入，写时为标准输出</span> <span style="font-size: small"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
<br />
<br />
<span style="color: #ff0000">1、keystore的生成：</span> <br />
<br />
分阶段生成：<br />
&nbsp;&nbsp;&nbsp;&nbsp; keytool <span style="color: #ff0000">-genkey</span> -alias yushan(别名) -keypass yushan(别名密码) -keyalg RSA(算法) -keysize 1024(密钥长度) -validity 365(有效期，天单位) -keystore&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
<br />
e:\yushan.keystore(指定生成证书的位置和证书名称) -storepass 123456(获取keystore信息的密码)；回车输入相关信息即可；<br />
&nbsp;&nbsp;&nbsp;&nbsp; <br />
一次性生成：<br />
&nbsp;&nbsp;&nbsp;&nbsp; keytool -genkey -alias yushan -keypass yushan -keyalg RSA -keysize 1024 -validity 365 -keystore&nbsp; e:\yushan.keystore -storepass 123456 -dname "CN=(名字与<br />
<br />
姓氏), OU=(组织单位名称), O=(组织名称), L=(城市或区域名称), ST=(州或省份名称), C=(单位的两字母国家代码)";(中英文即可)<br />
<br />
<span style="color: #ff0000">2、keystore信息的查看：</span> <br />
&nbsp;&nbsp; keytool<span style="color: #ff0000"> -list&nbsp; -v</span> -keystore e:\keytool\yushan.keystore -storepass 123456<br />
&nbsp;&nbsp; 显示内容：<br />
---------------------------------------------------------------------<br />
&nbsp;&nbsp; Keystore 类型： JKS<br />
Keystore 提供者： SUN<br />
<br />
您的 keystore 包含 1 输入<br />
<br />
别名名称： yushan<br />
创建日期： 2009-7-29<br />
项类型: PrivateKeyEntry<br />
认证链长度： 1<br />
认证 [1]:<br />
所有者:CN=yushan, OU=xx公司, O=xx协会, L=湘潭, ST=湖南, C=中国<br />
签发人:CN=yushan, OU=xx公司, O=xx协会, L=湘潭, ST=湖南, C=中国<br />
序列号:4a6f29ed<br />
有效期: Wed Jul 29 00:40:13 CST 2009 至Thu Jul 29 00:40:13 CST 2010<br />
证书指纹:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MD5:A3:D7:D9:74:C3:50:7D:10:C9:C2:47:B0:33:90:45:C3<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SHA1:2B:FC:9E:3A:DF:C6:C4:FB:87:B8:A0:C6:99:43:E9:4C:4A:E1:18:E8<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 签名算法名称:SHA1withRSA<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 版本: 3<br />
--------------------------------------------------------------------</span> </p>
<p>&nbsp;</p>
<p><span style="font-size: small">缺省情况下，-list&nbsp;命令打印证书的&nbsp;MD5&nbsp;指纹。而如果指定了&nbsp;-v&nbsp;选项，将以可读格式打印证书，如果指定了&nbsp;-rfc&nbsp;选项，将以可打印的编码格式输出证书。</span> </p>
<p><span style="font-size: small"><br />
</span></p>
<p><span style="font-size: small">keytool <span style="color: #ff0000">-list&nbsp; -rfc</span> -keystore e:\yushan.keystore -storepass 123456</span> </p>
<p><span style="font-size: small">显示：</span> </p>
<p>-------------------------------------------------------------------------------------------------------</p>
<p>Keystore 类型： JKS<br />
Keystore 提供者： SUN<br />
<br />
您的 keystore 包含 1 输入<br />
<br />
别名名称： yushan<br />
创建日期： 2009-7-29<br />
项类型: PrivateKeyEntry<br />
认证链长度： 1<br />
认证 [1]:<br />
-----BEGIN CERTIFICATE-----<br />
MIICSzCCAbSgAwIBAgIESm8p7TANBgkqhkiG9w0BAQUFADBqMQ8wDQYDVQQGDAbkuK3lm70xDzAN<br />
BgNVBAgMBua5luWNlzEPMA0GA1UEBwwG5rmY5r2tMREwDwYDVQQKDAh4eOWNj+S8mjERMA8GA1UE<br />
CwwIeHjlhazlj7gxDzANBgNVBAMTBnl1c2hhbjAeFw0wOTA3MjgxNjQwMTNaFw0xMDA3MjgxNjQw<br />
MTNaMGoxDzANBgNVBAYMBuS4reWbvTEPMA0GA1UECAwG5rmW5Y2XMQ8wDQYDVQQHDAbmuZjmva0x<br />
ETAPBgNVBAoMCHh45Y2P5LyaMREwDwYDVQQLDAh4eOWFrOWPuDEPMA0GA1UEAxMGeXVzaGFuMIGf<br />
MA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCJoru1RQczRzTnBWxefVNspQBykS220rS8Y/oX3mZa<br />
hjL4wLfOURzUuxxuVQR2jx7QI+XKME+DHQj9r6aAcLBCi/T1jwF8mVYxtpRuTzE/6KEZdhowEe70<br />
liWLVE+hytLBHZ03Zhwcd6q5HUMu27du3MPQvqiwzTY7MrwIvQQ8iQIDAQABMA0GCSqGSIb3DQEB<br />
BQUAA4GBAGoQQ1/FnTfkpQh+Ni6h3fZdn3sR8ZzDMbOAIYVLAhBb85XDJ8QZTarHbZMJcIdHxAl1<br />
i08ct3E8U87V9t8GZFWVC4BFg/+zeFEv76SFpVE56iX7P1jpsu78z0m69hHlds77VJTdyfMSvtXv<br />
sYHP3fxfzx9WyhipBwd8VPK/NgEP<br />
-----END CERTIFICATE-----</p>
<p>-------------------------------------------------------------------------------------------------------<br />
<span style="font-size: small"><br />
<span style="color: #ff0000">3、证书的导出：</span> <br />
<br />
keytool <span style="color: #ff0000">-export</span> -alias yushan -keystore e:\yushan.keystore -file e:\yushan.crt(指定导出的证书位置及证书名称) -storepass 123456<br />
<br />
<span style="color: #ff0000">4、查看导出的证书信息</span> <br />
&nbsp;&nbsp; keytool -printcert -file yushan.crt<br />
&nbsp;&nbsp; 显示：（在windows下可以双击yushan.crt查看）<br />
-----------------------------------------------------------------------<br />
所有者:CN=yushan, OU=xx公司, O=xx协会, L=湘潭, ST=湖南, C=中国<br />
签发人:CN=yushan, OU=xx公司, O=xx协会, L=湘潭, ST=湖南, C=中国<br />
序列号:4a6f29ed<br />
有效期: Wed Jul 29 00:40:13 CST 2009 至Thu Jul 29 00:40:13 CST 2010<br />
证书指纹:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MD5:A3:D7:D9:74:C3:50:7D:10:C9:C2:47:B0:33:90:45:C3<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SHA1:2B:FC:9E:3A:DF:C6:C4:FB:87:B8:A0:C6:99:43:E9:4C:4A:E1:18:E8<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 签名算法名称:SHA1withRSA<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 版本: 3<br />
-----------------------------------------------------------------------<br />
<br />
<span style="color: #ff0000">5、证书的导入：</span> <br />
&nbsp;&nbsp; 准备一个导入的证书：<br />
&nbsp;&nbsp; keytool -genkey -alias shuany -keypass shuany -keyalg RSA -keysize 1024 -validity 365 -keystore&nbsp; e:\shuany.keystore -storepass 123456 -dname "CN=shuany, <br />
<br />
OU=xx, O=xx, L=xx, ST=xx, C=xx";<br />
&nbsp;&nbsp; keytool <span style="color: #ff0000">-export</span> -alias shuany -keystore e:\shuany.keystore -file e:\shuany.crt -storepass 123456<br />
&nbsp;<br />
&nbsp; 现在将shuany.crt 加入到yushan.keystore中：<br />
&nbsp; keytool <span style="color: #ff0000">-import</span> -alias shuany(指定导入证书的别名，如果不指定默认为mykey,别名唯一，否则导入出错) -file e:\shuany.crt -keystore e:\yushan.keystore -storepass <br />
<br />
123456<br />
<br />
&nbsp;keytool <span style="color: #ff0000">-list&nbsp;</span> -v -keystore e:\keytool\yushan.keystore -storepass 123456<br />
显示：<br />
------------------------------------------------------------------------------<br />
Keystore 类型： JKS<br />
Keystore 提供者： SUN<br />
<br />
您的 keystore 包含 2 输入<br />
<br />
别名名称： yushan<br />
创建日期： 2009-7-29<br />
项类型: PrivateKeyEntry<br />
认证链长度： 1<br />
认证 [1]:<br />
所有者:CN=yushan, OU=xx公司, O=xx协会, L=湘潭, ST=湖南, C=中国<br />
签发人:CN=yushan, OU=xx公司, O=xx协会, L=湘潭, ST=湖南, C=中国<br />
序列号:4a6f29ed<br />
有效期: Wed Jul 29 00:40:13 CST 2009 至Thu Jul 29 00:40:13 CST 2010<br />
证书指纹:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MD5:A3:D7:D9:74:C3:50:7D:10:C9:C2:47:B0:33:90:45:C3<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SHA1:2B:FC:9E:3A:DF:C6:C4:FB:87:B8:A0:C6:99:43:E9:4C:4A:E1:18:E8<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 签名算法名称:SHA1withRSA<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 版本: 3<br />
<br />
<br />
*******************************************<br />
*******************************************<br />
<br />
<br />
别名名称： shuany<br />
创建日期： 2009-7-29<br />
输入类型： trustedCertEntry<br />
<br />
所有者:CN=shuany, OU=xx, O=xx, L=xx, ST=xx, C=xx<br />
签发人:CN=shuany, OU=xx, O=xx, L=xx, ST=xx, C=xx<br />
序列号:4a6f2cd9<br />
有效期: Wed Jul 29 00:52:41 CST 2009 至Thu Jul 29 00:52:41 CST 2010<br />
证书指纹:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MD5:15:03:57:9B:14:BD:C5:50:21:15:47:1E:29:87:A4:E6<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SHA1:C1:4F:8B:CD:5E:C2:94:77:B7:42:29:35:5C:BB:BB:2E:9E:F0:89:F5<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 签名算法名称:SHA1withRSA<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 版本: 3<br />
<br />
<br />
*******************************************<br />
*******************************************<br />
------------------------------------------------------------------------------<br />
<br />
<span style="color: #ff0000">6、证书条目的删除：</span> <br />
&nbsp;keytool <span style="color: #ff0000">-delete</span> -alias shuany(指定需删除的别名) -keystore yushan.keystore -storepass 123456<br />
&nbsp; <br />
<span style="color: #ff0000">7、证书条目口令的修改：</span> <br />
keytool <span style="color: #ff0000">-keypasswd </span>-alias yushan(需要修改密码的别名) -keypass yushan(原始密码) -new 123456(别名的新密码)&nbsp; -keystore e:\yushan.keystore -storepass 123456<br />
<br />
<span style="color: #ff0000">8、keystore口令的修改：</span> <br />
&nbsp;keytool <span style="color: #008000">-storepasswd</span> -keystore e:\yushan.keystore(需修改口令的keystore) -storepass 123456(原始密码) -new yushan(新密码)</span> </p>
<p>&nbsp;</p>
<p><span style="font-size: small; color: #ff0000">9、修改keystore中别名为yushan的信息</span> </p>
<p>&nbsp;</p>
<p><span style="font-size: small">keytool <span style="color: #008000">-selfcert</span> -alias yushan -keypass yushan -keystore e:\yushan.keystore -storepass 123456 -dname "cn=yushan,ou=yushan,o=yushan,c=us"</span></p>
<img src ="http://www.blogjava.net/asdtiang/aggbug/341310.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/asdtiang/" target="_blank">asdtiang</a> 2010-12-22 14:00 <a href="http://www.blogjava.net/asdtiang/archive/2010/12/22/341310.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>grails ajax分页标签实现--参数传下去</title><link>http://www.blogjava.net/asdtiang/archive/2010/12/01/339487.html</link><dc:creator>asdtiang</dc:creator><author>asdtiang</author><pubDate>Wed, 01 Dec 2010 04:32:00 GMT</pubDate><guid>http://www.blogjava.net/asdtiang/archive/2010/12/01/339487.html</guid><wfw:comment>http://www.blogjava.net/asdtiang/comments/339487.html</wfw:comment><comments>http://www.blogjava.net/asdtiang/archive/2010/12/01/339487.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/asdtiang/comments/commentRss/339487.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/asdtiang/services/trackbacks/339487.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: grails ajax分页标签实现--不带参数续传的http://www.blogjava.net/asdtiang/archive/2010/11/26/339127.html这次有了新的需求，比如说在结果中查询--查询结果用的是这个分页，那么参数不继续传的话，就会出错了只是更改了上次的tagLib类：代码如下：import&nbsp;org.springframew...&nbsp;&nbsp;<a href='http://www.blogjava.net/asdtiang/archive/2010/12/01/339487.html'>阅读全文</a><img src ="http://www.blogjava.net/asdtiang/aggbug/339487.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/asdtiang/" target="_blank">asdtiang</a> 2010-12-01 12:32 <a href="http://www.blogjava.net/asdtiang/archive/2010/12/01/339487.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>grails ajax分页标签实现</title><link>http://www.blogjava.net/asdtiang/archive/2010/11/26/339127.html</link><dc:creator>asdtiang</dc:creator><author>asdtiang</author><pubDate>Fri, 26 Nov 2010 06:20:00 GMT</pubDate><guid>http://www.blogjava.net/asdtiang/archive/2010/11/26/339127.html</guid><wfw:comment>http://www.blogjava.net/asdtiang/comments/339127.html</wfw:comment><comments>http://www.blogjava.net/asdtiang/archive/2010/11/26/339127.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/asdtiang/comments/commentRss/339127.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/asdtiang/services/trackbacks/339127.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 一、设计目标1、采用ajax实现2、要多少条数据，取多少条，不从数据库中一次性全部取出3、实现指定页面跳转4、用户可以指定选择每页显示几条数据5、按那个字段排序6、最好不要占用session二、如何实现2、传入参数：显示页码，共有多少条数据，每页显示几条数据,返回的页面&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 可选按那个字段排序...&nbsp;&nbsp;<a href='http://www.blogjava.net/asdtiang/archive/2010/11/26/339127.html'>阅读全文</a><img src ="http://www.blogjava.net/asdtiang/aggbug/339127.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/asdtiang/" target="_blank">asdtiang</a> 2010-11-26 14:20 <a href="http://www.blogjava.net/asdtiang/archive/2010/11/26/339127.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>佛说</title><link>http://www.blogjava.net/asdtiang/archive/2010/11/14/338040.html</link><dc:creator>asdtiang</dc:creator><author>asdtiang</author><pubDate>Sun, 14 Nov 2010 13:08:00 GMT</pubDate><guid>http://www.blogjava.net/asdtiang/archive/2010/11/14/338040.html</guid><wfw:comment>http://www.blogjava.net/asdtiang/comments/338040.html</wfw:comment><comments>http://www.blogjava.net/asdtiang/archive/2010/11/14/338040.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/asdtiang/comments/commentRss/338040.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/asdtiang/services/trackbacks/338040.html</trackback:ping><description><![CDATA[神秀：身如菩提树，心似明镜台；时时勤拂拭，勿使染尘埃.<br />
<br />
<br />
六祖慧能：菩提本无树，明镜亦非台，本来无一物，何处惹尘埃<br />
<br />
<img src ="http://www.blogjava.net/asdtiang/aggbug/338040.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/asdtiang/" target="_blank">asdtiang</a> 2010-11-14 21:08 <a href="http://www.blogjava.net/asdtiang/archive/2010/11/14/338040.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>有这样的爱国人士真是不错啊</title><link>http://www.blogjava.net/asdtiang/archive/2010/11/10/337702.html</link><dc:creator>asdtiang</dc:creator><author>asdtiang</author><pubDate>Wed, 10 Nov 2010 04:31:00 GMT</pubDate><guid>http://www.blogjava.net/asdtiang/archive/2010/11/10/337702.html</guid><wfw:comment>http://www.blogjava.net/asdtiang/comments/337702.html</wfw:comment><comments>http://www.blogjava.net/asdtiang/archive/2010/11/10/337702.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/asdtiang/comments/commentRss/337702.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/asdtiang/services/trackbacks/337702.html</trackback:ping><description><![CDATA[http://www.dxc.cn/zt/aiguo/<br />
看了之后很有感慨啊<br />
其实我爱国，但这国实在让人没法爱起来，还是政治上说的好，政策、法规都是为统治阶级服务，自己努力奋斗都能有什么呢，朋友的认可，亲人的高兴（说实话，我真的不感兴趣，只希望他们比我过得好就行了），哎，平凡多好啊，做一个无知的人也挺好，不用去考虑这么多的问题。<br />
或许还是自己喜欢的编辑能让我解脱吧，努力挣钱吧，走出祖国的领土，出去看下，可能又会有另外一个看法。<br />
人就是这样，几年之后回忆起来，当时的自己是多么的无知啊。<br />
<br />
<img src ="http://www.blogjava.net/asdtiang/aggbug/337702.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/asdtiang/" target="_blank">asdtiang</a> 2010-11-10 12:31 <a href="http://www.blogjava.net/asdtiang/archive/2010/11/10/337702.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>struts2 sitemesh装饰页面不能使用struts标签解决办法</title><link>http://www.blogjava.net/asdtiang/archive/2010/11/03/336936.html</link><dc:creator>asdtiang</dc:creator><author>asdtiang</author><pubDate>Wed, 03 Nov 2010 07:52:00 GMT</pubDate><guid>http://www.blogjava.net/asdtiang/archive/2010/11/03/336936.html</guid><wfw:comment>http://www.blogjava.net/asdtiang/comments/336936.html</wfw:comment><comments>http://www.blogjava.net/asdtiang/archive/2010/11/03/336936.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/asdtiang/comments/commentRss/336936.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/asdtiang/services/trackbacks/336936.html</trackback:ping><description><![CDATA[主要参考这个文档：http://struts.apache.org/2.2.1/docs/sitemesh-plugin.html<br />
我的项目是struts2.1.8的，郁闷的很，在装饰页面不能使用struts的标签。<br />
看了网上没找到好的解决办法，就是官网上去，首先升级struts到2.2.1，然后参照文档就可以了：<br />
<div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">filter</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">filter-name</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">struts-prepare</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">filter-name</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">filter-class</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">org.apache.struts2.dispatcher.ng.filter.StrutsPrepareFilter</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">filter-class</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">filter</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">filter</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">filter-name</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">struts-execute</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">filter-name</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">filter-class</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">org.apache.struts2.dispatcher.ng.filter.StrutsExecuteFilter</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">filter-class</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">filter</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">filter</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">filter-name</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">sitemesh</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">filter-name</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">filter-class</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">com.opensymphony.sitemesh.webapp.SiteMeshFilter</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">filter-class</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">filter</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">filter-mapping</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">filter-name</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">struts-prepare</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">filter-name</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">url-pattern</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">/*</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">url-pattern</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">filter-mapping</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">filter-mapping</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">filter-name</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">sitemesh</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">filter-name</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">url-pattern</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">/*</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">url-pattern</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">filter-mapping</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">filter-mapping</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">filter-name</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">struts-execute</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">filter-name</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">url-pattern</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">/*</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">url-pattern</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">filter-mapping</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span></div>
再刷新下页面，出来了<br />
<img src ="http://www.blogjava.net/asdtiang/aggbug/336936.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/asdtiang/" target="_blank">asdtiang</a> 2010-11-03 15:52 <a href="http://www.blogjava.net/asdtiang/archive/2010/11/03/336936.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>linux 命令使用</title><link>http://www.blogjava.net/asdtiang/archive/2010/10/31/336618.html</link><dc:creator>asdtiang</dc:creator><author>asdtiang</author><pubDate>Sun, 31 Oct 2010 10:10:00 GMT</pubDate><guid>http://www.blogjava.net/asdtiang/archive/2010/10/31/336618.html</guid><wfw:comment>http://www.blogjava.net/asdtiang/comments/336618.html</wfw:comment><comments>http://www.blogjava.net/asdtiang/archive/2010/10/31/336618.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/asdtiang/comments/commentRss/336618.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/asdtiang/services/trackbacks/336618.html</trackback:ping><description><![CDATA[ntpdate 210.72.145.44 <br />
时间同步<br />
<span style="font-size: 14px; line-height: 23px; font-family: 宋体,arial">国家授时中心的服务器IP地址——210.72.145.44，</span> <span style="font-size: 14px; line-height: 23px; font-family: 宋体,arial">香港天文台的授时服务器地址是stdtime.gov.hk<br />
</span>
<p><strong>系统</strong></p>
<pre># uname -a               # 查看内核/操作系统/CPU信息
# head -n 1 /etc/issue   # 查看操作系统版本
# cat /proc/cpuinfo      # 查看CPU信息
# hostname               # 查看计算机名
# lspci -tv              # 列出所有PCI设备
# lsusb -tv              # 列出所有USB设备
# lsmod                  # 列出加载的内核模块
# env                    # 查看环境变量</pre>
<p><strong>资源</strong></p>
<pre># free -m                # 查看内存使用量和交换区使用量
# df -h                  # 查看各分区使用情况
# du -sh &lt;目录名&gt;        # 查看指定目录的大小
# grep MemTotal /proc/meminfo   # 查看内存总量
# grep MemFree /proc/meminfo    # 查看空闲内存量
# uptime                 # 查看系统运行时间、用户数、负载
# cat /proc/loadavg      # 查看系统负载</pre>
<p><strong>磁盘和分区</strong></p>
<pre># mount | column -t      # 查看挂接的分区状态
# fdisk -l               # 查看所有分区
# swapon -s              # 查看所有交换分区
# hdparm -i /dev/hda     # 查看磁盘参数(仅适用于IDE设备)
# dmesg | grep IDE       # 查看启动时IDE设备检测状况</pre>
<p><strong>网络</strong></p>
<pre># ifconfig               # 查看所有网络接口的属性
# iptables -L            # 查看防火墙设置
# route -n               # 查看路由表
# netstat -lntp          # 查看所有监听端口
# netstat -antp          # 查看所有已经建立的连接
# netstat -s             # 查看网络统计信息</pre>
<p><strong>进程</strong></p>
<pre># ps -ef                 # 查看所有进程
# top                    # 实时显示进程状态</pre>
<p><strong>用户</strong></p>
<pre># w                      # 查看活动用户
# id &lt;用户名&gt;            # 查看指定用户信息
# last                   # 查看用户登录日志
# cut -d: -f1 /etc/passwd   # 查看系统所有用户
# cut -d: -f1 /etc/group    # 查看系统所有组
# crontab -l             # 查看当前用户的计划任务</pre>
<p><strong>服务</strong></p>
<pre># chkconfig --list       # 列出所有系统服务
# chkconfig --list | grep on    # 列出所有启动的系统服务</pre>
<p><strong>程序</strong></p>
<pre># rpm -qa                # 查看所有安装的软件包</pre>
Connected to 10.10.1.239<span style="display: none">IXPUB技术博客Y:U{OtF\@</span><br />
220 (vsFTPd 2.0.5)<br />
<span style="display: none">{m4`6j6s,{+z/W0</span>User (10.10.1.239:(none)): xaftp<span style="display: none">IXPUB技术博客n4[F-K,dmx(^8G</span><br />
331 Please specify the password.<br />
<span style="display: none">)d+D |7tJ#Le0</span>Password:<span style="display: none">IXPUB技术博客1u k,yM,G2I4T"a</span><br />
<strong>500 OOPS: cannot change directory:/home/xaftp<span style="display: none">IXPUB技术博客6|L4X ^hfz,U</span><br />
</strong>Login failed.<br />
<span style="display: none">r.`)Ef&amp;x#AJN0</span>ftp&gt; ls<br />
<span style="display: none">GBu.t8}/p:N0</span>500 OOPS: child died<span style="display: none">IXPUB技术博客9^E.b\c \4o/?</span><br />
Connection closed by remote host.<span style="display: none">IXPUB技术博客%gg!iw'z6u!N?0P</span><br />
&nbsp;<br />
<span style="display: none">.^ O7l vchwMG0</span>觉得这个问题很奇怪,配置肯定没问题，总是提示<strong>500 OOPS: cannot change directory:/home/xaftp</strong><br />
<span style="display: none">'~u+\)z QbU0</span><br />
<span style="display: none">8n[:I;_(S`1ra[0</span>解决方法:<br />
<span style="display: none">-M[N'e+I(]i8d9ze0</span>在终端输入命令：<br />
<span style="display: none">b7R0^3C ft)k P0</span>setsebool ftpd_disable_trans 1<span style="display: none">IXPUB技术博客-y)z+x.p X8y5J6D</span><br />
service vsftpd restart<br />
<span style="display: none">.xt3n(f Sn0</span><br />
<img src ="http://www.blogjava.net/asdtiang/aggbug/336618.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/asdtiang/" target="_blank">asdtiang</a> 2010-10-31 18:10 <a href="http://www.blogjava.net/asdtiang/archive/2010/10/31/336618.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>在XXX试用一个月小结</title><link>http://www.blogjava.net/asdtiang/archive/2010/10/29/336457.html</link><dc:creator>asdtiang</dc:creator><author>asdtiang</author><pubDate>Fri, 29 Oct 2010 02:40:00 GMT</pubDate><guid>http://www.blogjava.net/asdtiang/archive/2010/10/29/336457.html</guid><wfw:comment>http://www.blogjava.net/asdtiang/comments/336457.html</wfw:comment><comments>http://www.blogjava.net/asdtiang/archive/2010/10/29/336457.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/asdtiang/comments/commentRss/336457.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/asdtiang/services/trackbacks/336457.html</trackback:ping><description><![CDATA[经过七天的免费试用期，进入两个月的试用期，工资800元，说实话，我真的是把我自己出卖了，那么便宜，<br />
太疯狂了。自己都不敢相信。<br />
记下自己一个月的感受吧：<br />
公司是做政府系统的，数据库oracle，数据层自己封装的，没有看到源码，api文档也没见过。项目是jsp+dwr形式的。以js为主。<br />
java代码基本上是写sql语句。刚来的时候，很反感这种开发模式，分层不合理，那是一定的，不过经理说它的存在是有道理的，至今还在想它为什么存在。估计是因为政府系统吧，不愿采用开源框架，hibernate是轻量级的。听说大公司都自己封装数据层。<br />
jsp页面css以table为主，div为辅。<br />
分页公司自己写的，这个分页做的还可以。<br />
sql语句在java代码里。<br />
mvc基本没有体现，<br />
页面有大量的js代码（项目用到js的地方很多）<br />
页面有少量java代码<br />
页面有时会出现sql语句<br />
数据库字段大多为varchar类型（不解）<br />
我想了好久，这系统如何去维护，老大说你们不用管维护。<br />
让我感受到j2ee开发比较纯真的年代，所有的东西都自己来做，不用任何框架，估计我是一个框架狂吧。<br />
刚开始做web时，用struts2+hibernate,后来加上spring,再后来，用上了grails,再也不想用s2sh了，但grails也有它的缺点，占用内存太多了。<br />
是java的3倍左右。（java估计80M左右就能起来，grals估计要200M左右）。<br />
I like garils.<br />
感受下比较纯（也不知道形容合适不）的开发模式，也不错。<br />
对了，最费解的是做了一个多月，没见项目文档，部分都没有，估计，政府系统不让你看吧，还是刚来公司，没资格看。<br />
自己做系统都是一个人开发的，文档没有其实心里很不爽，因为到时修改就惨了。<br />
这公司的系统是多个人开发，要是没文档，那真是要命啊。<br />
但愿肯定有文档吧。<br />
<br />
<br />
export JAVA_HOME=/usr/java/j2sdk1.4.2_04
<br />
<br />
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
<br />
<br />
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH:$HOMR/bin
<br />
<br />
<br />
<br />
Oct 31 04:02:05 xxjf syslogd 1.4.1: restart.<br />
Oct 31 19:24:52 xxjf shutdown[29535]: shutting down for system halt<br />
Oct 31 19:24:52 xxjf init: Switching to runlevel: 0<br />
Oct 31 19:24:54 xxjf smartd[2628]: smartd received signal 15: Terminated<br />
Oct 31 19:24:54 xxjf smartd[2628]: smartd is exiting (exit status 0)<br />
Oct 31 19:24:55 xxjf avahi-daemon[20472]: Got SIGTERM, quitting.<br />
Oct 31 19:24:55 xxjf avahi-daemon[20472]: Leaving mDNS multicast group on interface eth0.IPv6 with address fe80::92e6:baff:fec2:db68.<br />
Oct 31 19:24:55 xxjf avahi-daemon[20472]: Leaving mDNS multicast group on interface eth0.IPv4 with address 218.29.54.48.<br />
Oct 31 19:26:18 xxjf syslogd 1.4.1: restart.<br />
Oct 31 19:26:18 xxjf kernel: klogd 1.4.1, log source = /proc/kmsg started.<br />
Oct 31 19:26:18 xxjf kernel: Linux version 2.6.18-194.17.1.el5 (mockbuild@builder10.centos.org) (gcc version 4.1.2 20080704 (Red Hat 4.1.2-48)) #1 SMP Wed Sep 29 12:51:33 EDT 2010<br />
<br />
<br />
<br />
<br />
<br />
<img src ="http://www.blogjava.net/asdtiang/aggbug/336457.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/asdtiang/" target="_blank">asdtiang</a> 2010-10-29 10:40 <a href="http://www.blogjava.net/asdtiang/archive/2010/10/29/336457.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>centOS5.5安装apache +php+mysql+tomcat</title><link>http://www.blogjava.net/asdtiang/archive/2010/10/22/335878.html</link><dc:creator>asdtiang</dc:creator><author>asdtiang</author><pubDate>Fri, 22 Oct 2010 06:06:00 GMT</pubDate><guid>http://www.blogjava.net/asdtiang/archive/2010/10/22/335878.html</guid><wfw:comment>http://www.blogjava.net/asdtiang/comments/335878.html</wfw:comment><comments>http://www.blogjava.net/asdtiang/archive/2010/10/22/335878.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/asdtiang/comments/commentRss/335878.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/asdtiang/services/trackbacks/335878.html</trackback:ping><description><![CDATA[有了yum 安装其实很简单<br />
yum mysql<br />
<br />
<br />
<br />
yum php<br />
/////安装php时httpd也会安装<br />
////要改的配置其实不多，<br />
在目录主页中添加index.php就可以了<br />
具体操作：<br />
终端运行：httpd -V<br />
查看-D SERVER_CONFIG_FILE="conf/httpd.conf"<br />
httpd装在/etc目录下,即conf&nbsp; :&nbsp;&nbsp; /etc/httpd/conf/httpd.conf<br />
编辑它，找到下面的语句加上 index.php<br />
DirectoryIndex&nbsp;&nbsp; &nbsp;index.html&nbsp;&nbsp; &nbsp;index.html.var <br />
重启httpd<br />
终端输入httpd -k restart<br />
ok,<br />
默认主目录为：/var/www<br />
在下面建立index.php文件：<br />
<br />
<br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; font-size: 13px; width: 98%; background-color: #eeeeee;"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="color: #000000;">&lt;</span><span style="color: #000000;">html</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #000000;">&lt;</span><span style="color: #000000;">head</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">title</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">PHP&nbsp;Test</span><span style="color: #000000;">&lt;/</span><span style="color: #000000;">title</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">meta&nbsp;http</span><span style="color: #000000;">-</span><span style="color: #000000;">equiv</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">Content-Type</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;content</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">text/html;&nbsp;charset=ISO-8859-1</span><span style="color: #000000;">"</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #000000;">&lt;/</span><span style="color: #000000;">head</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #000000;">&lt;</span><span style="color: #000000;">body</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">h1</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">PHP&nbsp;Test</span><span style="color: #000000;">&lt;/</span><span style="color: #000000;">h1</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">p</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">b</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">An&nbsp;Example&nbsp;of&nbsp;PHP&nbsp;in&nbsp;Action</span><span style="color: #000000;">&lt;/</span><span style="color: #000000;">b</span><span style="color: #000000;">&gt;&lt;</span><span style="color: #000000;">br&nbsp;</span><span style="color: #000000;">/&gt;</span><span style="color: #000000;"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;?</span><span style="color: #000000;">php&nbsp;</span><span style="color: #0000ff;">echo</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">The&nbsp;Current&nbsp;Date&nbsp;and&nbsp;Time&nbsp;is:&nbsp;&lt;br&gt;</span><span style="color: #000000;">"</span><span style="color: #000000;">;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">echo</span><span style="color: #000000;">&nbsp;</span><span style="color: #008080;">date</span><span style="color: #000000;">(</span><span style="color: #000000;">"</span><span style="color: #000000;">g:i&nbsp;A&nbsp;l,&nbsp;F&nbsp;j&nbsp;Y.</span><span style="color: #000000;">"</span><span style="color: #000000;">);</span><span style="color: #000000;">?&gt;</span><span style="color: #000000;"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;/</span><span style="color: #000000;">p</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">h2</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">PHP&nbsp;Information</span><span style="color: #000000;">&lt;/</span><span style="color: #000000;">h2</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">p</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;?</span><span style="color: #000000;">php&nbsp;</span><span style="color: #008080;">phpinfo</span><span style="color: #000000;">();&nbsp;</span><span style="color: #000000;">?&gt;</span><span style="color: #000000;"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;/</span><span style="color: #000000;">p</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #000000;">&lt;/</span><span style="color: #000000;">body</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #000000;">&lt;/</span><span style="color: #000000;">html</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span></div>
再次访问主机，看下行没<br />
<br />
<br />
<br />
整合tomcat<br />
HTTP.CONF<br />
<br />
<div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000;">ServerTokens&nbsp;OS<br />
<br />
<br />
ServerRoot&nbsp;"/etc/httpd"<br />
<br />
<br />
PidFile&nbsp;run/httpd.pid<br />
<br />
<br />
Timeout&nbsp;120<br />
<br />
<br />
KeepAlive&nbsp;Off<br />
<br />
<br />
MaxKeepAliveRequests&nbsp;100<br />
<br />
<br />
KeepAliveTimeout&nbsp;15<br />
<br />
<br />
<br />
</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">IfModule&nbsp;</span><span style="color: #ff0000;">prefork.c</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
StartServers&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;8<br />
MinSpareServers&nbsp;&nbsp;&nbsp;&nbsp;5<br />
MaxSpareServers&nbsp;&nbsp;&nbsp;20<br />
ServerLimit&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;256<br />
MaxClients&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;256<br />
MaxRequestsPerChild&nbsp;&nbsp;4000<br />
</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">IfModule</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
<br />
<br />
</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">IfModule&nbsp;</span><span style="color: #ff0000;">worker.c</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
StartServers&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2<br />
MaxClients&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;150<br />
MinSpareThreads&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;25<br />
MaxSpareThreads&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;75&nbsp;<br />
ThreadsPerChild&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;25<br />
MaxRequestsPerChild&nbsp;&nbsp;0<br />
</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">IfModule</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
<br />
#Listen&nbsp;12.34.56.78:80<br />
Listen&nbsp;80<br />
<br />
LoadModule&nbsp;jk_module&nbsp;modules/mod_jk.so<br />
LoadModule&nbsp;auth_basic_module&nbsp;modules/mod_auth_basic.so<br />
LoadModule&nbsp;auth_digest_module&nbsp;modules/mod_auth_digest.so<br />
LoadModule&nbsp;authn_file_module&nbsp;modules/mod_authn_file.so<br />
LoadModule&nbsp;authn_alias_module&nbsp;modules/mod_authn_alias.so<br />
LoadModule&nbsp;authn_anon_module&nbsp;modules/mod_authn_anon.so<br />
LoadModule&nbsp;authn_dbm_module&nbsp;modules/mod_authn_dbm.so<br />
LoadModule&nbsp;authn_default_module&nbsp;modules/mod_authn_default.so<br />
LoadModule&nbsp;authz_host_module&nbsp;modules/mod_authz_host.so<br />
LoadModule&nbsp;authz_user_module&nbsp;modules/mod_authz_user.so<br />
LoadModule&nbsp;authz_owner_module&nbsp;modules/mod_authz_owner.so<br />
LoadModule&nbsp;authz_groupfile_module&nbsp;modules/mod_authz_groupfile.so<br />
LoadModule&nbsp;authz_dbm_module&nbsp;modules/mod_authz_dbm.so<br />
LoadModule&nbsp;authz_default_module&nbsp;modules/mod_authz_default.so<br />
LoadModule&nbsp;ldap_module&nbsp;modules/mod_ldap.so<br />
LoadModule&nbsp;authnz_ldap_module&nbsp;modules/mod_authnz_ldap.so<br />
LoadModule&nbsp;include_module&nbsp;modules/mod_include.so<br />
LoadModule&nbsp;log_config_module&nbsp;modules/mod_log_config.so<br />
LoadModule&nbsp;logio_module&nbsp;modules/mod_logio.so<br />
LoadModule&nbsp;env_module&nbsp;modules/mod_env.so<br />
LoadModule&nbsp;ext_filter_module&nbsp;modules/mod_ext_filter.so<br />
LoadModule&nbsp;mime_magic_module&nbsp;modules/mod_mime_magic.so<br />
LoadModule&nbsp;expires_module&nbsp;modules/mod_expires.so<br />
LoadModule&nbsp;deflate_module&nbsp;modules/mod_deflate.so<br />
LoadModule&nbsp;headers_module&nbsp;modules/mod_headers.so<br />
LoadModule&nbsp;usertrack_module&nbsp;modules/mod_usertrack.so<br />
LoadModule&nbsp;setenvif_module&nbsp;modules/mod_setenvif.so<br />
LoadModule&nbsp;mime_module&nbsp;modules/mod_mime.so<br />
LoadModule&nbsp;dav_module&nbsp;modules/mod_dav.so<br />
LoadModule&nbsp;status_module&nbsp;modules/mod_status.so<br />
LoadModule&nbsp;autoindex_module&nbsp;modules/mod_autoindex.so<br />
LoadModule&nbsp;info_module&nbsp;modules/mod_info.so<br />
LoadModule&nbsp;dav_fs_module&nbsp;modules/mod_dav_fs.so<br />
LoadModule&nbsp;vhost_alias_module&nbsp;modules/mod_vhost_alias.so<br />
LoadModule&nbsp;negotiation_module&nbsp;modules/mod_negotiation.so<br />
LoadModule&nbsp;dir_module&nbsp;modules/mod_dir.so<br />
LoadModule&nbsp;actions_module&nbsp;modules/mod_actions.so<br />
LoadModule&nbsp;speling_module&nbsp;modules/mod_speling.so<br />
LoadModule&nbsp;userdir_module&nbsp;modules/mod_userdir.so<br />
LoadModule&nbsp;alias_module&nbsp;modules/mod_alias.so<br />
LoadModule&nbsp;rewrite_module&nbsp;modules/mod_rewrite.so<br />
LoadModule&nbsp;proxy_module&nbsp;modules/mod_proxy.so<br />
LoadModule&nbsp;proxy_balancer_module&nbsp;modules/mod_proxy_balancer.so<br />
LoadModule&nbsp;proxy_ftp_module&nbsp;modules/mod_proxy_ftp.so<br />
LoadModule&nbsp;proxy_http_module&nbsp;modules/mod_proxy_http.so<br />
LoadModule&nbsp;proxy_connect_module&nbsp;modules/mod_proxy_connect.so<br />
LoadModule&nbsp;cache_module&nbsp;modules/mod_cache.so<br />
LoadModule&nbsp;suexec_module&nbsp;modules/mod_suexec.so<br />
LoadModule&nbsp;disk_cache_module&nbsp;modules/mod_disk_cache.so<br />
LoadModule&nbsp;file_cache_module&nbsp;modules/mod_file_cache.so<br />
LoadModule&nbsp;mem_cache_module&nbsp;modules/mod_mem_cache.so<br />
LoadModule&nbsp;cgi_module&nbsp;modules/mod_cgi.so<br />
LoadModule&nbsp;version_module&nbsp;modules/mod_version.so<br />
#AddModule&nbsp;&nbsp;mod_proxy.c<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
<br />
Include&nbsp;conf.d/*.conf<br />
<br />
<br />
User&nbsp;apache<br />
Group&nbsp;apache<br />
<br />
<br />
ServerAdmin&nbsp;root@localhost<br />
<br />
<br />
ServerName&nbsp;www.168cjzx.com:80<br />
<br />
<br />
UseCanonicalName&nbsp;Off<br />
<br />
<br />
DocumentRoot&nbsp;"/var/www/html/database/hahanibuzhidao"<br />
<br />
<br />
<br />
</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">Directory&nbsp;</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;Options&nbsp;FollowSymLinks<br />
&nbsp;&nbsp;&nbsp;&nbsp;AllowOverride&nbsp;None<br />
</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">Directory</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
<br />
<br />
</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">Directory&nbsp;</span><span style="color: #ff0000;">"/var/www/html"</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;Options&nbsp;Indexes&nbsp;FollowSymLinks<br />
<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;AllowOverride&nbsp;None<br />
<br />
<br />
#&nbsp;&nbsp;&nbsp;Order&nbsp;allow,deny<br />
&nbsp;&nbsp;&nbsp;&nbsp;Allow&nbsp;from&nbsp;all<br />
<br />
</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">Directory</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
<br />
<br />
</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">IfModule&nbsp;</span><span style="color: #ff0000;">mod_userdir.c</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;UserDir&nbsp;disable<br />
<br />
&nbsp;&nbsp;&nbsp;<br />
<br />
</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">IfModule</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
<br />
<br />
DirectoryIndex&nbsp;index.html&nbsp;index.html.var<br />
<br />
<br />
AccessFileName&nbsp;.htaccess<br />
<br />
<br />
</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">Files&nbsp;</span><span style="color: #ff0000;">~&nbsp;"^\.ht"</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;Order&nbsp;allow,deny<br />
&nbsp;&nbsp;&nbsp;&nbsp;Deny&nbsp;from&nbsp;all<br />
</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">Files</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
<br />
<br />
TypesConfig&nbsp;/etc/mime.types<br />
<br />
<br />
DefaultType&nbsp;text/plain<br />
<br />
<br />
</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">IfModule&nbsp;</span><span style="color: #ff0000;">mod_mime_magic.c</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;MIMEMagicFile&nbsp;conf/magic<br />
</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">IfModule</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
<br />
<br />
HostnameLookups&nbsp;Off<br />
<br />
<br />
<br />
<br />
ErrorLog&nbsp;logs/error_log<br />
<br />
<br />
LogLevel&nbsp;warn<br />
<br />
<br />
LogFormat&nbsp;"%h&nbsp;%l&nbsp;%u&nbsp;%t&nbsp;\"%r\"&nbsp;%&gt;s&nbsp;%b&nbsp;\"%{Referer}i\"&nbsp;\"%{User-Agent}i\""&nbsp;combined<br />
LogFormat&nbsp;"%h&nbsp;%l&nbsp;%u&nbsp;%t&nbsp;\"%r\"&nbsp;%&gt;s&nbsp;%b"&nbsp;common<br />
LogFormat&nbsp;"%{Referer}i&nbsp;-&gt;&nbsp;%U"&nbsp;referer<br />
LogFormat&nbsp;"%{User-agent}i"&nbsp;agent<br />
<br />
<br />
CustomLog&nbsp;logs/access_log&nbsp;combined<br />
<br />
<br />
ServerSignature&nbsp;On<br />
<br />
<br />
Alias&nbsp;/icons/&nbsp;"/var/www/icons/"<br />
<br />
</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">Directory&nbsp;</span><span style="color: #ff0000;">"/var/www/icons"</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;Options&nbsp;Indexes&nbsp;MultiViews<br />
&nbsp;&nbsp;&nbsp;&nbsp;AllowOverride&nbsp;None<br />
&nbsp;&nbsp;&nbsp;&nbsp;Order&nbsp;allow,deny<br />
&nbsp;&nbsp;&nbsp;&nbsp;Allow&nbsp;from&nbsp;all<br />
</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">Directory</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
<br />
<br />
</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">IfModule&nbsp;</span><span style="color: #ff0000;">mod_dav_fs.c</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;DAVLockDB&nbsp;/var/lib/dav/lockdb<br />
</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">IfModule</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
<br />
<br />
ScriptAlias&nbsp;/cgi-bin/&nbsp;"/var/www/cgi-bin/"<br />
<br />
<br />
</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">Directory&nbsp;</span><span style="color: #ff0000;">"/var/www/cgi-bin"</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;AllowOverride&nbsp;None<br />
&nbsp;&nbsp;&nbsp;&nbsp;Options&nbsp;None<br />
&nbsp;&nbsp;&nbsp;&nbsp;Order&nbsp;allow,deny<br />
&nbsp;&nbsp;&nbsp;&nbsp;Allow&nbsp;from&nbsp;all<br />
</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">Directory</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
<br />
<br />
IndexOptions&nbsp;FancyIndexing&nbsp;VersionSort&nbsp;NameWidth=*&nbsp;HTMLTable<br />
<br />
<br />
AddIconByEncoding&nbsp;(CMP,/icons/compressed.gif)&nbsp;x-compress&nbsp;x-gzip<br />
<br />
AddIconByType&nbsp;(TXT,/icons/text.gif)&nbsp;text/*<br />
AddIconByType&nbsp;(IMG,/icons/image2.gif)&nbsp;image/*<br />
AddIconByType&nbsp;(SND,/icons/sound2.gif)&nbsp;audio/*<br />
AddIconByType&nbsp;(VID,/icons/movie.gif)&nbsp;video/*<br />
<br />
AddIcon&nbsp;/icons/binary.gif&nbsp;.bin&nbsp;.exe<br />
AddIcon&nbsp;/icons/binhex.gif&nbsp;.hqx<br />
AddIcon&nbsp;/icons/tar.gif&nbsp;.tar<br />
AddIcon&nbsp;/icons/world2.gif&nbsp;.wrl&nbsp;.wrl.gz&nbsp;.vrml&nbsp;.vrm&nbsp;.iv<br />
AddIcon&nbsp;/icons/compressed.gif&nbsp;.Z&nbsp;.z&nbsp;.tgz&nbsp;.gz&nbsp;.zip<br />
AddIcon&nbsp;/icons/a.gif&nbsp;.ps&nbsp;.ai&nbsp;.eps<br />
AddIcon&nbsp;/icons/layout.gif&nbsp;.html&nbsp;.shtml&nbsp;.htm&nbsp;.pdf<br />
AddIcon&nbsp;/icons/text.gif&nbsp;.txt<br />
AddIcon&nbsp;/icons/c.gif&nbsp;.c<br />
AddIcon&nbsp;/icons/p.gif&nbsp;.pl&nbsp;.py<br />
AddIcon&nbsp;/icons/f.gif&nbsp;.for<br />
AddIcon&nbsp;/icons/dvi.gif&nbsp;.dvi<br />
AddIcon&nbsp;/icons/uuencoded.gif&nbsp;.uu<br />
AddIcon&nbsp;/icons/script.gif&nbsp;.conf&nbsp;.sh&nbsp;.shar&nbsp;.csh&nbsp;.ksh&nbsp;.tcl<br />
AddIcon&nbsp;/icons/tex.gif&nbsp;.tex<br />
AddIcon&nbsp;/icons/bomb.gif&nbsp;core<br />
<br />
AddIcon&nbsp;/icons/back.gif&nbsp;..<br />
AddIcon&nbsp;/icons/hand.right.gif&nbsp;README<br />
AddIcon&nbsp;/icons/folder.gif&nbsp;^^DIRECTORY^^<br />
AddIcon&nbsp;/icons/blank.gif&nbsp;^^BLANKICON^^<br />
<br />
<br />
DefaultIcon&nbsp;/icons/unknown.gif<br />
<br />
<br />
&nbsp;<br />
ReadmeName&nbsp;README.html<br />
HeaderName&nbsp;HEADER.html<br />
<br />
<br />
IndexIgnore&nbsp;.??*&nbsp;*~&nbsp;*#&nbsp;HEADER*&nbsp;README*&nbsp;RCS&nbsp;CVS&nbsp;*,v&nbsp;*,t<br />
<br />
<br />
AddLanguage&nbsp;ca&nbsp;.ca<br />
AddLanguage&nbsp;cs&nbsp;.cz&nbsp;.cs<br />
AddLanguage&nbsp;da&nbsp;.dk<br />
AddLanguage&nbsp;de&nbsp;.de<br />
AddLanguage&nbsp;el&nbsp;.el<br />
AddLanguage&nbsp;en&nbsp;.en<br />
AddLanguage&nbsp;eo&nbsp;.eo<br />
AddLanguage&nbsp;es&nbsp;.es<br />
AddLanguage&nbsp;et&nbsp;.et<br />
AddLanguage&nbsp;fr&nbsp;.fr<br />
AddLanguage&nbsp;he&nbsp;.he<br />
AddLanguage&nbsp;hr&nbsp;.hr<br />
AddLanguage&nbsp;it&nbsp;.it<br />
AddLanguage&nbsp;ja&nbsp;.ja<br />
AddLanguage&nbsp;ko&nbsp;.ko<br />
AddLanguage&nbsp;ltz&nbsp;.ltz<br />
AddLanguage&nbsp;nl&nbsp;.nl<br />
AddLanguage&nbsp;nn&nbsp;.nn<br />
AddLanguage&nbsp;no&nbsp;.no<br />
AddLanguage&nbsp;pl&nbsp;.po<br />
AddLanguage&nbsp;pt&nbsp;.pt<br />
AddLanguage&nbsp;pt-BR&nbsp;.pt-br<br />
AddLanguage&nbsp;ru&nbsp;.ru<br />
AddLanguage&nbsp;sv&nbsp;.sv<br />
AddLanguage&nbsp;zh-CN&nbsp;.zh-cn<br />
AddLanguage&nbsp;zh-TW&nbsp;.zh-tw<br />
<br />
<br />
LanguagePriority&nbsp;en&nbsp;ca&nbsp;cs&nbsp;da&nbsp;de&nbsp;el&nbsp;eo&nbsp;es&nbsp;et&nbsp;fr&nbsp;he&nbsp;hr&nbsp;it&nbsp;ja&nbsp;ko&nbsp;ltz&nbsp;nl&nbsp;nn&nbsp;no&nbsp;pl&nbsp;pt&nbsp;pt-BR&nbsp;ru&nbsp;sv&nbsp;zh-CN&nbsp;zh-TW<br />
<br />
<br />
ForceLanguagePriority&nbsp;Prefer&nbsp;Fallback<br />
<br />
<br />
AddDefaultCharset&nbsp;UTF-8<br />
<br />
<br />
<br />
AddType&nbsp;application/x-compress&nbsp;.Z<br />
AddType&nbsp;application/x-gzip&nbsp;.gz&nbsp;.tgz<br />
<br />
<br />
AddHandler&nbsp;type-map&nbsp;var<br />
<br />
<br />
AddType&nbsp;text/html&nbsp;.shtml<br />
AddOutputFilter&nbsp;INCLUDES&nbsp;.shtml<br />
<br />
<br />
<br />
Alias&nbsp;/error/&nbsp;"/var/www/error/"<br />
<br />
</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">IfModule&nbsp;</span><span style="color: #ff0000;">mod_negotiation.c</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">IfModule&nbsp;</span><span style="color: #ff0000;">mod_include.c</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">Directory&nbsp;</span><span style="color: #ff0000;">"/var/www/error"</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AllowOverride&nbsp;None<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Options&nbsp;IncludesNoExec<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AddOutputFilter&nbsp;Includes&nbsp;html<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AddHandler&nbsp;type-map&nbsp;var<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Order&nbsp;allow,deny<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Allow&nbsp;from&nbsp;all<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LanguagePriority&nbsp;en&nbsp;es&nbsp;de&nbsp;fr<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ForceLanguagePriority&nbsp;Prefer&nbsp;Fallback<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">Directory</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
<br />
#&nbsp;&nbsp;&nbsp;&nbsp;ErrorDocument&nbsp;400&nbsp;/error/HTTP_BAD_REQUEST.html.var<br />
<br />
</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">IfModule</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">IfModule</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
<br />
<br />
BrowserMatch&nbsp;"Mozilla/2"&nbsp;nokeepalive<br />
BrowserMatch&nbsp;"MSIE&nbsp;4\.0b2;"&nbsp;nokeepalive&nbsp;downgrade-1.0&nbsp;force-response-1.0<br />
BrowserMatch&nbsp;"RealPlayer&nbsp;4\.0"&nbsp;force-response-1.0<br />
BrowserMatch&nbsp;"Java/1\.0"&nbsp;force-response-1.0<br />
BrowserMatch&nbsp;"JDK/1\.0"&nbsp;force-response-1.0<br />
<br />
<br />
BrowserMatch&nbsp;"Microsoft&nbsp;Data&nbsp;Access&nbsp;Internet&nbsp;Publishing&nbsp;Provider"&nbsp;redirect-carefully<br />
BrowserMatch&nbsp;"MS&nbsp;FrontPage"&nbsp;redirect-carefully<br />
BrowserMatch&nbsp;"^WebDrive"&nbsp;redirect-carefully<br />
BrowserMatch&nbsp;"^WebDAVFS/1.[0123]"&nbsp;redirect-carefully<br />
BrowserMatch&nbsp;"^gnome-vfs/1.0"&nbsp;redirect-carefully<br />
BrowserMatch&nbsp;"^XML&nbsp;Spy"&nbsp;redirect-carefully<br />
BrowserMatch&nbsp;"^Dreamweaver-WebDAV-SCM1"&nbsp;redirect-carefully<br />
<br />
<br />
</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">IfModule&nbsp;</span><span style="color: #ff0000;">mod_proxy.c</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
ProxyRequests&nbsp;On<br />
#<br />
#</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">Proxy&nbsp;</span><span style="color: #ff0000;">*</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
#&nbsp;&nbsp;&nbsp;&nbsp;Order&nbsp;deny,allow<br />
#&nbsp;&nbsp;&nbsp;&nbsp;Deny&nbsp;from&nbsp;all<br />
#&nbsp;&nbsp;&nbsp;&nbsp;Allow&nbsp;from&nbsp;.example.com<br />
#</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">Proxy</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
<br />
#</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">Location&nbsp;&nbsp;</span><span style="color: #ff0000;">/svn</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DAV&nbsp;&nbsp;svn<br />
&nbsp;&nbsp;&nbsp;#&nbsp;&nbsp;&nbsp;SVNParentPath&nbsp;&nbsp;/var/www/html/jsp/testsvn<br />
#</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">Location</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
<br />
<br />
NameVirtualHost&nbsp;218.29.54.48</span><span style="color: #000000;"><br />
</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">VirtualHost&nbsp;</span><span style="color: #ff0000;">218.29.54.48:80</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;ServerAdmin&nbsp;168kx@dummy-host.example.com<br />
&nbsp;&nbsp;&nbsp;&nbsp;DocumentRoot&nbsp;/var/www/html/168kx<br />
&nbsp;&nbsp;&nbsp;&nbsp;ServerName&nbsp;168kx.com<br />
&nbsp;&nbsp;&nbsp;&nbsp;ErrorLog&nbsp;logs/www.168kx.com.errorlog<br />
&nbsp;&nbsp;&nbsp;&nbsp;CustomLog&nbsp;logs/www168kx.com.customlog&nbsp;common<br />
</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">VirtualHost</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
<br />
<br />
<br />
#jsp<br />
<br />
<br />
</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">VirtualHost&nbsp;</span><span style="color: #ff0000;">218.29.54.48:80</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;ServerName&nbsp;www.365w8.com<br />
#&nbsp;&nbsp;&nbsp;ProxyPass&nbsp;/&nbsp;balancer://tomcat/<br />
&nbsp;#&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">Proxy&nbsp;</span><span style="color: #ff0000;">balancer://tomcat</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BalancerMember&nbsp;http://www.365w8.com:8082/<br />
&nbsp;&nbsp;&nbsp;#&nbsp;</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">Proxy</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
ProxyPass&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/&nbsp;http://localhost:8082/<br />
&nbsp;&nbsp;&nbsp;&nbsp;ProxyPassReverse&nbsp;/&nbsp;&nbsp;http://localhost:8082/<br />
&nbsp;&nbsp;&nbsp;ProxyPreserveHost&nbsp;On<br />
&nbsp;&nbsp;&nbsp;ProxyVia&nbsp;On<br />
#&nbsp;&nbsp;ProxyPreserveHost&nbsp;On<br />
</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">VirtualHost</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span></div>
tomcat5:server.xml<br />
<br />
<div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #0000ff;">&lt;?</span><span style="color: #ff00ff;">xml&nbsp;version="1.0"&nbsp;encoding="UTF-8"</span><span style="color: #0000ff;">?&gt;</span><span style="color: #000000;"><br />
<br />
<br />
</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">Server&nbsp;</span><span style="color: #ff0000;">port</span><span style="color: #0000ff;">="8005"</span><span style="color: #ff0000;">&nbsp;shutdown</span><span style="color: #0000ff;">="SHUTDOWN"</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
<br />
<br />
&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">Listener&nbsp;</span><span style="color: #ff0000;">className</span><span style="color: #0000ff;">="org.apache.catalina.core.AprLifecycleListener"</span><span style="color: #ff0000;">&nbsp;</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">Listener&nbsp;</span><span style="color: #ff0000;">className</span><span style="color: #0000ff;">="org.apache.catalina.mbeans.ServerLifecycleListener"</span><span style="color: #ff0000;">&nbsp;</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">Listener&nbsp;</span><span style="color: #ff0000;">className</span><span style="color: #0000ff;">="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener"</span><span style="color: #ff0000;">&nbsp;</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">Listener&nbsp;</span><span style="color: #ff0000;">className</span><span style="color: #0000ff;">="org.apache.catalina.storeconfig.StoreConfigLifecycleListener"</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">GlobalNamingResources</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">Environment&nbsp;</span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">="simpleValue"</span><span style="color: #ff0000;">&nbsp;type</span><span style="color: #0000ff;">="java.lang.Integer"</span><span style="color: #ff0000;">&nbsp;value</span><span style="color: #0000ff;">="30"</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">Resource&nbsp;</span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">="UserDatabase"</span><span style="color: #ff0000;">&nbsp;auth</span><span style="color: #0000ff;">="Container"</span><span style="color: #ff0000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;type</span><span style="color: #0000ff;">="org.apache.catalina.UserDatabase"</span><span style="color: #ff0000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;description</span><span style="color: #0000ff;">="User&nbsp;database&nbsp;that&nbsp;can&nbsp;be&nbsp;updated&nbsp;and&nbsp;saved"</span><span style="color: #ff0000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;factory</span><span style="color: #0000ff;">="org.apache.catalina.users.MemoryUserDatabaseFactory"</span><span style="color: #ff0000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pathname</span><span style="color: #0000ff;">="conf/tomcat-users.xml"</span><span style="color: #ff0000;">&nbsp;</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">GlobalNamingResources</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">Service&nbsp;</span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">="Catalina"</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">Connector&nbsp;</span><span style="color: #ff0000;">port</span><span style="color: #0000ff;">="8080"</span><span style="color: #ff0000;">&nbsp;maxHttpHeaderSize</span><span style="color: #0000ff;">="8192"</span><span style="color: #ff0000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;maxThreads</span><span style="color: #0000ff;">="150"</span><span style="color: #ff0000;">&nbsp;minSpareThreads</span><span style="color: #0000ff;">="25"</span><span style="color: #ff0000;">&nbsp;maxSpareThreads</span><span style="color: #0000ff;">="75"</span><span style="color: #ff0000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;enableLookups</span><span style="color: #0000ff;">="false"</span><span style="color: #ff0000;">&nbsp;redirectPort</span><span style="color: #0000ff;">="8443"</span><span style="color: #ff0000;">&nbsp;acceptCount</span><span style="color: #0000ff;">="100"</span><span style="color: #ff0000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;connectionTimeout</span><span style="color: #0000ff;">="20000"</span><span style="color: #ff0000;">&nbsp;disableUploadTimeout</span><span style="color: #0000ff;">="true"</span><span style="color: #ff0000;">&nbsp;</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">Connector&nbsp;</span><span style="color: #ff0000;">port</span><span style="color: #0000ff;">="8009"</span><span style="color: #ff0000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;enableLookups</span><span style="color: #0000ff;">="false"</span><span style="color: #ff0000;">&nbsp;redirectPort</span><span style="color: #0000ff;">="8443"</span><span style="color: #ff0000;">&nbsp;protocol</span><span style="color: #0000ff;">="AJP/1.3"</span><span style="color: #ff0000;">&nbsp;</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
&nbsp;
</span><span style="color: #008000;">&lt;!--</span><span style="color: #008000;">&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; </span><span style="color: #008000;">--&gt;</span><span style="color: #000000;"><br />
</span><br />
<span style="color: #000000;">
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">Connector&nbsp;</span><span style="color: #ff0000;">port</span><span style="color: #0000ff;">="8082"</span><span style="color: #ff0000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;proxyName</span><span style="color: #0000ff;">="www.365w8.com"</span><span style="color: #ff0000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;maxThreads</span><span style="color: #0000ff;">="150"</span><span style="color: #ff0000;">&nbsp;minSpareThreads</span><span style="color: #0000ff;">="25"</span><span style="color: #ff0000;">&nbsp;maxSpareThreads</span><span style="color: #0000ff;">="75"</span><span style="color: #ff0000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;enableLookups</span><span style="color: #0000ff;">="false"</span><span style="color: #ff0000;">&nbsp;acceptCount</span><span style="color: #0000ff;">="100"</span><span style="color: #ff0000;">&nbsp;connectionTimeout</span><span style="color: #0000ff;">="20000"</span><span style="color: #ff0000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;proxyPort</span><span style="color: #0000ff;">="80"</span><span style="color: #ff0000;">&nbsp;disableUploadTimeout</span><span style="color: #0000ff;">="true"</span><span style="color: #ff0000;">&nbsp;</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">Engine&nbsp;</span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">="Catalina"</span><span style="color: #ff0000;">&nbsp;defaultHost</span><span style="color: #0000ff;">="localhost"</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">Realm&nbsp;</span><span style="color: #ff0000;">className</span><span style="color: #0000ff;">="org.apache.catalina.realm.UserDatabaseRealm"</span><span style="color: #ff0000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;resourceName</span><span style="color: #0000ff;">="UserDatabase"</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">Host&nbsp;</span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">="localhost"</span><span style="color: #ff0000;">&nbsp;appBase</span><span style="color: #0000ff;">="webapps"</span><span style="color: #ff0000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;unpackWARs</span><span style="color: #0000ff;">="true"</span><span style="color: #ff0000;">&nbsp;autoDeploy</span><span style="color: #0000ff;">="true"</span><span style="color: #ff0000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xmlValidation</span><span style="color: #0000ff;">="false"</span><span style="color: #ff0000;">&nbsp;xmlNamespaceAware</span><span style="color: #0000ff;">="false"</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">Context&nbsp;</span><span style="color: #ff0000;">path</span><span style="color: #0000ff;">=""</span><span style="color: #ff0000;">&nbsp;docBase</span><span style="color: #0000ff;">="365w8"</span><span style="color: #ff0000;">&nbsp;</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;</span><span style="color: #008000;">&lt;!--</span><span style="color: #008000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;Alias&gt;365w8.com&lt;/Alias&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">--&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">Host</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">Engine</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">Service</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span></div>
<br />
<br />
<br />
<img src ="http://www.blogjava.net/asdtiang/aggbug/335878.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/asdtiang/" target="_blank">asdtiang</a> 2010-10-22 14:06 <a href="http://www.blogjava.net/asdtiang/archive/2010/10/22/335878.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>linux 命令使用学习---ps  kill</title><link>http://www.blogjava.net/asdtiang/archive/2010/10/22/335842.html</link><dc:creator>asdtiang</dc:creator><author>asdtiang</author><pubDate>Fri, 22 Oct 2010 01:30:00 GMT</pubDate><guid>http://www.blogjava.net/asdtiang/archive/2010/10/22/335842.html</guid><wfw:comment>http://www.blogjava.net/asdtiang/comments/335842.html</wfw:comment><comments>http://www.blogjava.net/asdtiang/archive/2010/10/22/335842.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/asdtiang/comments/commentRss/335842.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/asdtiang/services/trackbacks/335842.html</trackback:ping><description><![CDATA[<div id="app-share-content">
<p>1. 在LINUX命令平台输入1-2个字符后按Tab键会自动补全后面的部分(前提是要有这个东西，例如在装了tomcat的前提下,输入tomcat的to按tab)。</p>
<p>2. ps 命令用于查看当前正在运行的进程。</p>
<p>&nbsp;&nbsp;&nbsp; grep 是搜索</p>
<p>&nbsp;&nbsp; 例如： ps -ef | grep java</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 表示查看所有进程里CMD是java的进程信息</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ps -aux | grep java</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -aux 显示所有状态</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ps</p>
<p>3. kill 命令用于终止进程</p>
<p>&nbsp;&nbsp; 例如： kill -9 [PID]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -9表示强迫进程立即停止</p>
<p>&nbsp;</p>
<p>通常用ps 查看进程PID ，用kill命令终止进程</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>网上关于这两块的内容</p>
<p>-----------------------------------------------------------------------------------</p>
<p>PS</p>
<p>-----------------------------------------------------------------------------------</p>
<p>1. ps简介<br />
ps命令就是最根本相应情况下也是相当强大地进程查看命令.运用该命令可以确定有哪些进程正在运行和运行地状态、进程是否结束、进程有没有僵死、哪些进程占用了过多地资源等等.总之大部分信息均为可以通过执行该命令得到地.<br />
2. ps命令及其参数<br />
ps命令最经常使用地还是用于监控后台进程地工作情况,因为后台进程是不和屏幕键盘这些标准输入/输出设<br />
备进行通信地,所以如果需要检测其情况,便可以运用ps命令了.<br />
该命令语法格式如下：<br />
ps [选项]<br />
-e 显示所有进程,环境变量<br />
-f 全格式<br />
-h 不显示标题<br />
-l 长格式<br />
-w 宽输出<br />
a&nbsp;&nbsp; 显示终端上地所有进程,包括其他用户地进程<br />
r&nbsp;&nbsp; 只显示正在运行地进程<br />
x&nbsp;&nbsp; 显示没有控制终端地进程<br />
O[+|-] k1 [,[+|-] k2 [,&#8230;]] 根据SHORT KEYS、k1、k2中快捷键指定地多级排序顺序显示进程列表.<br />
对于ps地不同格式都存在着默认地顺序指定.这些默认顺序可以被用户地指定所覆盖.在这里面&#8220;+&#8221;字符是可选地,&#8220;-&#8221;字符是倒转指定键地方向.<br />
pids只列出进程标识符,之间运用逗号分隔.该进程列表必须在命令行参数地最后一个选项后面紧接着给出,中间不能插入空格.比如：ps -f1,4,5.<br />
以下介绍长命令行选项,这些选项都运用&#8220;--&#8221;开头：<br />
--sort X[+|-] key [,[+|-] key [,&#8230;]] 从SORT KEYS段中选一个多字母键.&#8220;+&#8221;字符是可选地,因为默认地方向就是按数字升序或者词典顺序.比如： ps -jax -sort=uid,-ppid,+pid.<br />
--help 显示帮助信息.<br />
--version 显示该命令地版本信息.<br />
在前面地选项说明中提到了排序键,接下来对排序键作进一步说明.需要注意地是排序中运用地值是ps运用地内部值,并非仅用于某些输出格式地伪值.排序键列表见表4-3.<br />
表4-3　排序键列表<br />
c <br />
cmd <br />
可执行地简单名称 <br />
C <br />
cmdline <br />
完整命令行 <br />
f <br />
flags <br />
长模式标志 <br />
g <br />
pgrp <br />
进程地组ID <br />
G <br />
tpgid <br />
控制tty进程组ID <br />
j <br />
cutime <br />
累计用户时间 <br />
J <br />
cstime <br />
累计系统时间 <br />
k <br />
utime <br />
用户时间 <br />
K<br />
stime <br />
系统时间 <br />
m <br />
min_flt <br />
次要页错误地数量 <br />
M <br />
maj_flt <br />
重点页错误地数量 <br />
n <br />
cmin_flt <br />
累计次要页错误 <br />
N <br />
cmaj_flt <br />
累计重点页错误 <br />
o <br />
session <br />
对话ID <br />
p <br />
pid <br />
进程ID <br />
P <br />
ppid <br />
父进程ID <br />
r <br />
rss <br />
驻留大小 <br />
R <br />
resident <br />
驻留页 <br />
s <br />
size <br />
内存大小(千字节) <br />
S <br />
share <br />
共享页地数量 <br />
t <br />
tty <br />
tty次要设备号 <br />
T <br />
start_time <br />
进程启动地时间 <br />
U <br />
uid <br />
UID <br />
u <br />
user <br />
用户名 <br />
v <br />
vsize <br />
总地虚拟内存数量(字节) <br />
y <br />
priority <br />
内核调度优先级<br />
3. 经常使用ps命令参数<br />
最经常使用地三个参数是u、a、x,下面将通过例子来说明其具体用法.<br />
[例20] 以root身份登录系统,查看当前进程状况<br />
$ ps<br />
PID TTY TIME COMMAND<br />
5800 ttyp0 00:00:00 bash<br />
5835 ttyp0 00:00:00 ps<br />
可以看到,显示地项目共分为四项,依次为PID(进程ID)、TTY(终端名称)、TIME(进程执行时间)<br />
、COMMAND(该进程地命令行输入).<br />
可以运用u选项来查看进程所有者及其他少许详细信息,如下所示：<br />
$ ps u<br />
USER PID %CPU %MEM USZ RSS TTY STAT START TIME COMMAND<br />
test 5800 0.0 0.4 1892 1040 ttyp0 S Nov27 0:00 -bash<br />
test 5836 0.0 0.3 2528 856 ttyp0 R Nov27 0:00 ps u<br />
在bash进程前面有条横线,意味着该进程便是用户地登录shell,所以对于一个登录用户来说带短横线地进程只有一个.还可以看到%CPU、%MEM两个选项,前者指该进程占用地CPU时间和总时间地百分比;后者指该进程占用地内存和总内存地百分比.<br />
在这种情况下看到了所有控制终端地进程;当然对于其他那些没有控制终端地进程还是没有观察到,所以这时就需要运用x选项.运用x选项可以观察到所有地进程情况.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>-----------------------------------------------------------------------------------</p>
<p>KILL</p>
<p>-----------------------------------------------------------------------------------</p>
<p>由于职责的要求，你不得不费力地阅读那些令你感到费解的晦涩的Linux应用程序的说明文件。然后，你将运行指令和编辑设置文件。一切都在正常运行，生活真美好。但是，你知道，好时光不会永远持续下去。当你遇到令人恐惧的&#8220;send the process a SIGHUP&#8221;提示时，好时光结束了。</p>
<p>　　什么是&#8220;SIGHUP（启动信号）&#8221;，你如何发送它?它像是你送给你的恋人的一束花吗?虽然你可以肯定这不是一个命令行指令，不过，你还是试着键入它。当然，这没有结果。然后，你检查一下键盘。哦，没有SIGHUP键。于是你又重新阅读这个应用程序的参考指南，看到下面这段文字:</p>
<p>　　当收到一个hangup（进程结束）信号时，sshd程序会重新阅读配置文件。通过执行启动程序时的命令及选项来发送SIGHUP信号，如:/usr/sbin/sshd。</p>
<p>　　哦，原来是这样。</p>
<p>　　程序员 VS 使用者</p>
<p>　　LINUX程序的在线参考指南作者一般都要既照顾到最终用户的需求也要照顾到高级程序员的需求。因此，有些说明比较难懂。不过，不要担心。现在我们就要揭开覆盖在这些让人迷惑的内容上面那神秘的面纱。</p>
<p>　　信号与进程控制</p>
<p>　　这个问题主要属于信号和进程控制的范畴。对于我们系统管理员和普通用户来说，我们主要关心的是启动、停止和重新启动服务、停止失控的进程和被挂起的进程，并且尽可能不中断系统运行。因为不同的</p>
<p>操作系统和不同的命令外壳处理信号的方式都不相同，我们这里只介绍Linux操作系统和bash外壳。</p>
<p>　　信号是用来与守护程序和进程通信的。任何活动任务都是一个进程，而守护程序是等待对某些事件做出反应或者按照日程安排执行任务的后台服务。一个程序必须有建在其中的信号处理程序用于捕获和应答信号。在LINUX中的signal 参考指南解释了各种不同信号和这些信号的用途。信号是由&#8220;kill&#8221;命令发出的。kill -l命令可以显示一个可用信号列表及其编号。</p>
<p>　　所有的守护程序和进程都有一个进程ID(PID)，例如使用ps命名所显示的内容：</p>
<p>　　$ ps aux <br />
　　USER PID %CPU %MEM TTY STAT COMMAND <br />
　　root 1 0.0 0.1 ? S init [2] <br />
　　105 7783 0.0 0.2 ? Ss /usr/bin/dbus-daemon --system <br />
　　hal 7796 0.0 0.7 ? Ss /usr/sbin/hald <br />
　　postfix 7957 0.0 0.2 ? S qmgr -l -t fifo -u -c <br />
　　nagios 8371 0.0 0.2 ? SNs /usr/sbin/nagios /etc/nagios/nagios.cfg</p>
<p><br />
　　这个输出是经过简化的。你在系统中可以看到更多的行和栏目。如果某些进程消耗了你的全部CPU或者内存，你可以在这个输出的%CPU和%MEM列中发现它们。找到失控的进程的一种更快捷的方法是使用top命令，因为按照默认的设置，使用占用CPU资源最多的进程在最上面显示。我们可以使用一条&#8220;yes&#8221;命令来测试一下:</p>
<p>$ yes carla is teh awesum</p>
<p><br />
　　这个命令将以很高的速度反复显示&#8220;carla is teh awesum&#8221;，直到你停止它运行。这将使你的CPU使用率达到警戒线。</p>
<p>　　$ top <br />
　　... <br />
　　PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND <br />
　　12144 carla 25 0 31592 17m 13m R 93.4 3.5 0:50.26 konsole <br />
　　22236 carla 15 0 2860 468 400 S 4.3 0.1 0:00.97 yes</p>
<p><br />
分析一下这个结果，你会发现一些有趣的事，你会发现，占用CPU最多的程序是konsole虚拟终端程序，而不是&#8220;yes&#8221;命令，这是因为&#8220;yes&#8221;命令是在konsole终端程序中运行的。如果在一个&#8220;真正的&#8221;控制台(按Ctrl+alt+f2键)中运行同样的命令序列，你将看到&#8220;yes&#8221;命令被排在第一位。</p>
<p><br />
　　有许多停止&#8220;yes&#8221;命令运行的方式。如果你要回到运行它的shell中，按CTRL+c键就可以了。或者你可以在另一个shell中用&#8220;kill&#8221;命令停止&#8220;yes&#8221;命令的运行，Kill命令后面跟PID或者命令名称，如下如示:</p>
<p>$ kill 22236</p>
<p><br />
　　或者</p>
<p>$ killall yes</p>
<p><br />
　　按CTRL+c键发出一个SIGINT（信号2），这个信号是键盘要求取得控制权的中断信号。kill和killall这两个命令按照默认的设置都发出一个SIGTERM信号(编号15)。程序中可以设置对SIGTERM信号(15)是捕捉或者忽略，或者以不同的方式解释。因此，如果你的程序对于KILL命令的反应与你预期不同，很可能是被KILL的目标程序的问题。</p>
<p>　　终止一个父进程通常也终止了它的子进程。不过，情况并不总是如此。你知道子进程是什么吗?使用ps命令加上-f选项就可以看到，如下所示:</p>
<p>　　$ ps axf <br />
　　22371 ? R 2:35 _ konsole [kdeinit] <br />
　　22372 pts/3 Ss 0:00 | _ /bin/bash <br />
　　24322 pts/3 S+ 0:00 | | _ yes carla is teh awesum <br />
　　22381 pts/4 Rs 0:00 | _ /bin/bash <br />
　　24323 pts/4 R+ 0:00 | | _ ps axf</p>
<p><br />
　　现在，回到SIGHUP的话题</p>
<p>　　SIGHUP的发音是&#8220;sig-hup&#8221;，是signal hangup的缩写，含义是&#8220;中止信号&#8221;。你如何发送一个SIGHUP信号呢?这里有几种方式:</p>
<p># kill -HUP [pid]</p>
<p><br />
# killall -HUP [process-name]</p>
<p><br />
# kill -1 [pid]</p>
<p><br />
# killall -1 [process-name]</p>
<p><br />
　　因此，你可以使用PID或者名称，信号名称或者号码。那么为什么要这样做而不使用/etc/init.d/foo命令重新启动呢?使用它们自己的init(初始化)文件来控制服务是优先选择的方式，因为这些文件通常包含健全和错误检查以及额外的功能。使用&#8220;kill&#8221;命令和信号的主要原因是尽可能明确地终止挂起和失控的进程，而不必重新启动或者登出。</p>
<p>终止进程</p>
<p>　　正如你在关于信号的man page中所看到的，有十几种控制进程的方法。下面是一些常用的方法:</p>
<p>　　kill -STOP [pid]</p>
<p>　　发送SIGSTOP (17,19,23)停止一个进程，而并不消灭这个进程。</p>
<p>　　kill -CONT [pid]</p>
<p>　　发送SIGCONT (19,18,25)重新开始一个停止的进程。</p>
<p>　　kill -KILL [pid]</p>
<p>　　发送SIGKILL (9)强迫进程立即停止，并且不实施清理操作。</p>
<p>　　kill -9 -1</p>
<p>　　终止你拥有的全部进程。</p>
<p>　　SIGKILL和SIGSTOP信号不能被捕捉、封锁或者忽略，但是，其它的信号可以。所以这是你的终极武器。</p>
<p>　　Bash shell的Kil命令l</p>
<p>　　Bash外壳包含一个内置的kill命令，当执行下面命令:</p>
<p>　　$ type -all kill <br />
　　kill is a shell built-in <br />
　　kill is /bin/kill</p>
<p><br />
　　命令的结果表明有两个kill命令，一个是BASH的内置命令，另一个是/bin/kill可执行程序。一般来说这两个命令不太可能遇到冲突的情况，不过，如果你确实遇到了kill命令行为异常时，你可以明确的指定/bin/kill命令。</p>
<p>　　你一定要进一步查阅下面的资源中列出的参考资源来了解Linux中kill的妙用，因为这是你进入维护Linux系统领域的门票。这些知识能够让你像做外科手术一样对系统进行维护，而不用在遇到问题时每一次都重新启动系统，就像我们知道的某些蹩脚的</p>
<p>操作系统那样。</p>
<p>　　资源</p>
<p>　　Linux Cookbook一书的第七章&#8220;开始和终止Linux&#8221;</p>
<p>　　bash (1) - GNU Bourne-Again Shell</p>
<p>　　yes (1) - 在被终止前反复打印字符</p>
<p>　　signal (7) - 可用信号列表</p>
<p>　　ps (1) - 报告当前进程的快照</p>
<p>　　kill (1) - 向一个进程发出信号</p>
<p>　　killall (1) - 按名字消灭进程</p>
<p>　　pkill (1) - 根据名字和其它属性查看或者发出进程信号</p>
<p>　　skill (1) - 发送一个信号或者报告进程状态</p>
<p>　　xkill (1) - 按照X资源消灭一个客户程序</p>
<p>&nbsp;</p>
</div>
<img src ="http://www.blogjava.net/asdtiang/aggbug/335842.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/asdtiang/" target="_blank">asdtiang</a> 2010-10-22 09:30 <a href="http://www.blogjava.net/asdtiang/archive/2010/10/22/335842.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>mysql 中文乱码解决方案</title><link>http://www.blogjava.net/asdtiang/archive/2010/10/03/333698.html</link><dc:creator>asdtiang</dc:creator><author>asdtiang</author><pubDate>Sun, 03 Oct 2010 10:03:00 GMT</pubDate><guid>http://www.blogjava.net/asdtiang/archive/2010/10/03/333698.html</guid><wfw:comment>http://www.blogjava.net/asdtiang/comments/333698.html</wfw:comment><comments>http://www.blogjava.net/asdtiang/archive/2010/10/03/333698.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/asdtiang/comments/commentRss/333698.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/asdtiang/services/trackbacks/333698.html</trackback:ping><description><![CDATA[编辑my.cnf ，在mysqld ,client(没有自己写一个)加入default-character-set=utf8<br />
<br />
<br />
[mysqld]<br />
datadir=/var/lib/mysql<br />
socket=/var/lib/mysql/mysql.sock<br />
skip-name-resolve<br />
skip-grant-tables<br />
user=mysql<br />
# Disabling symbolic-links is recommended to prevent assorted security risks<br />
symbolic-links=0<br />
default-character-set=utf8<br />
<br />
[client]<br />
default-character-set=utf8<br />
<br />
[mysqld_safe]<br />
log-error=/var/log/mysqld.log<br />
pid-file=/var/run/mysqld/mysqld.pid
<img src ="http://www.blogjava.net/asdtiang/aggbug/333698.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/asdtiang/" target="_blank">asdtiang</a> 2010-10-03 18:03 <a href="http://www.blogjava.net/asdtiang/archive/2010/10/03/333698.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>"Host 'localhost' is not allowed to connect to this MySQL server" 解决办法</title><link>http://www.blogjava.net/asdtiang/archive/2010/10/03/333697.html</link><dc:creator>asdtiang</dc:creator><author>asdtiang</author><pubDate>Sun, 03 Oct 2010 10:00:00 GMT</pubDate><guid>http://www.blogjava.net/asdtiang/archive/2010/10/03/333697.html</guid><wfw:comment>http://www.blogjava.net/asdtiang/comments/333697.html</wfw:comment><comments>http://www.blogjava.net/asdtiang/archive/2010/10/03/333697.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/asdtiang/comments/commentRss/333697.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/asdtiang/services/trackbacks/333697.html</trackback:ping><description><![CDATA[<br />
<p>编辑 my.ini linux下为/etc/my.cnf<br />
</p>
<p>在[mysqld]的段中加上一句：skip-grant-tables</p>
<p>例如：</p>
<p>[mysqld]</p>
<p>datadir=/var/lib/mysql</p>
<p>socket=/var/lib/mysql/mysql.sock</p>
<p>skip-name-resolve</p>
<p>skip-grant-tables</p>
<p>目的是为了：</p>
<p>跳过MySQL的访问控制，任何人都可以在控制台以管理员的身份进入MySQL数据库。</p>
<p>需要注意的是在修改完密码以后要把MySQL服务器停掉重新启动才会生效</p>
<p>重启mysql服务！</p>
<p>OK!<br />
有时增加用户时提示：<br />
ERROR 1045 (28000): Access denied for user.....<br />
得执行flush privileges;<br />
&nbsp;<br />
#新加用户服务xcj,新加的用户不能马上生效<br />
mysql&gt; grant all on *.* to xcj@'%' identified by "xcj_passwd";<br />
Query OK, 0 rows affected (0.04 sec)<br />
<br />
#生效新加用户xcj权限<br />
mysql&gt; flush privileges;<br />
Query OK, 0 rows affected (0.03 sec)<br />
<br />
<br />
[root@openfire pdf_spider]# mysql -uxcj -p'xcj_passwd' <br />
Welcome to the MySQL monitor.&nbsp;&nbsp;Commands end with ; or \g.<br />
Your MySQL connection id is 4593<br />
Server version: 5.0.45-log MySQL Community Server (GPL)<br />
<br />
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.<br />
<br />
mysql&gt; <br />
</p><img src ="http://www.blogjava.net/asdtiang/aggbug/333697.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/asdtiang/" target="_blank">asdtiang</a> 2010-10-03 18:00 <a href="http://www.blogjava.net/asdtiang/archive/2010/10/03/333697.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>fedora 13 java 显示乱码－－－netbean乱码解决方案</title><link>http://www.blogjava.net/asdtiang/archive/2010/10/03/333693.html</link><dc:creator>asdtiang</dc:creator><author>asdtiang</author><pubDate>Sun, 03 Oct 2010 08:41:00 GMT</pubDate><guid>http://www.blogjava.net/asdtiang/archive/2010/10/03/333693.html</guid><wfw:comment>http://www.blogjava.net/asdtiang/comments/333693.html</wfw:comment><comments>http://www.blogjava.net/asdtiang/archive/2010/10/03/333693.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/asdtiang/comments/commentRss/333693.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/asdtiang/services/trackbacks/333693.html</trackback:ping><description><![CDATA[copy /usr/share/fonts/cjkuni-uming/uming.ttc 到 $JAVAHOME/jre/lib/fonts/fallback<br />
目录没有要自己创建下，由于是菜鸟，以一般用户登录的，慢慢的用命令敲吧。<br />
mkdir <br />
cp<br />
命令学习指南<br />
http://linux.vbird.org/linux_basic/redhat6.1/linux_06command.php#rm<br />
<img src ="http://www.blogjava.net/asdtiang/aggbug/333693.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/asdtiang/" target="_blank">asdtiang</a> 2010-10-03 16:41 <a href="http://www.blogjava.net/asdtiang/archive/2010/10/03/333693.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Fedora 13 下安装 NVIDIA 二进制驱动  转载</title><link>http://www.blogjava.net/asdtiang/archive/2010/10/02/333652.html</link><dc:creator>asdtiang</dc:creator><author>asdtiang</author><pubDate>Sat, 02 Oct 2010 06:33:00 GMT</pubDate><guid>http://www.blogjava.net/asdtiang/archive/2010/10/02/333652.html</guid><wfw:comment>http://www.blogjava.net/asdtiang/comments/333652.html</wfw:comment><comments>http://www.blogjava.net/asdtiang/archive/2010/10/02/333652.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/asdtiang/comments/commentRss/333652.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/asdtiang/services/trackbacks/333652.html</trackback:ping><description><![CDATA[<h2>Fedora 13 下安装 NVIDIA 二进制驱动</h2>
<p class="postmeta"><br />
<span class="rss" title="comment RSS of this post"><a href="http://linuxtoy.org/archives/howto-install-nvidia-binary-driver-under-fedora-13.html/feed"></a></span></p>
<div style="float: right; padding-left: 5px;">
<ins style="display: inline-table; border: medium none; height: 250px; margin: 0pt; padding: 0pt; position: relative; visibility: visible; width: 300px;"><br />
</ins></div>
<p>Fedora 13 如同前作 Fedora 12 一样，默认开启了 Nouveau 的 KMS 模块，尽管已经可以通过 Gallium3D 获得完整 3D 加速支持，但肯定还有一些追求性能和希望用高清视频加速的朋友需要 NVIDIA 的二进制驱动。</p>
<p>本文以使用 rpmfusion 打包的 NVIDIA 的二进制驱动为例，若需要安装 Nvidia 官方站点提供的版本，请参考<a href="http://linuxtoy.org/archives/howto-install-nvidia-official-driver-under-fedora-12.html"> Fedora 12 的文章</a> 并依照此文做出相应修改。</p>
<p><strong>1.</strong> 添加 rpmfusion 仓库：</p>
<p><code>su -c 'rpm -Uvh
http://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-stable.noarch.rpm
http://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-stable.noarch.rpm'</code></p>
<p><strong>2. </strong>使用 yum 安装驱动：</p>
<p><code>su -c 'yum --nogpgcheck install xorg-x11-drv-nvidia akmod-nvidia'</code></p>
<p><strong>3.</strong> 屏蔽 initrd 中的 nouveau 模块：</p>
<p><code>su -c 'sed -i '/root=/s|$| rdblacklist=nouveau|' /etc/grub.conf'</code></p>
<p><strong>4.</strong> 重启</p>
<p><strong>非常必要！</strong></p>
<p>在此感谢 FedoraForm 的<strong> leigh123linux 大</strong>的 <a href="http://forums.fedoraforum.org/showthread.php?t=240860">HowTo</a> 。</p>
<img src ="http://www.blogjava.net/asdtiang/aggbug/333652.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/asdtiang/" target="_blank">asdtiang</a> 2010-10-02 14:33 <a href="http://www.blogjava.net/asdtiang/archive/2010/10/02/333652.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>oracle 存储过程返回多个行代码实例</title><link>http://www.blogjava.net/asdtiang/archive/2010/09/26/332974.html</link><dc:creator>asdtiang</dc:creator><author>asdtiang</author><pubDate>Sun, 26 Sep 2010 09:18:00 GMT</pubDate><guid>http://www.blogjava.net/asdtiang/archive/2010/09/26/332974.html</guid><wfw:comment>http://www.blogjava.net/asdtiang/comments/332974.html</wfw:comment><comments>http://www.blogjava.net/asdtiang/archive/2010/09/26/332974.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/asdtiang/comments/commentRss/332974.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/asdtiang/services/trackbacks/332974.html</trackback:ping><description><![CDATA[<div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><span style="color: #0000ff;">create</span><span style="color: #000000;">&nbsp;</span><span style="color: #808080;">or</span><span style="color: #000000;">&nbsp;</span><span style="color: #ff00ff;">replace</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">procedure</span><span style="color: #000000;">&nbsp;s_get_all_point<br />
(<br />
&nbsp;&nbsp;&nbsp;ref_cursor&nbsp;out&nbsp;sys_refcursor&nbsp;<br />
)</span><span style="color: #0000ff;">as</span><span style="color: #000000;"><br />
</span><span style="color: #0000ff;">begin</span><span style="color: #000000;"><br />
&nbsp;&nbsp;</span><span style="color: #0000ff;">open</span><span style="color: #000000;">&nbsp;ref_cursor&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">select</span><span style="color: #000000;">&nbsp;</span><span style="color: #808080;">*</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">from</span><span style="color: #000000;">&nbsp;gwxx_t;<br />
</span><span style="color: #0000ff;">end</span><span style="color: #000000;">;<br />
<br />
</span></div>
<br />
<div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">try</span><span style="color: #000000;">&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DriverManager.registerDriver&nbsp;(</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;oracle.jdbc.OracleDriver());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Connection&nbsp;conn&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;DriverManager.getConnection(</span><span style="color: #000000;">"</span><span style="color: #000000;">jdbc:oracle:thin:@localhost:1521:orcl</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">@@@@</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">"@@@@</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;&nbsp;&nbsp;CallableStatement&nbsp;stmt&nbsp;=&nbsp;conn.prepareCall("BEGIN&nbsp;&nbsp;s_get_all_point(?);&nbsp;END;");</span><span style="color: #008000;"><br />
</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CallableStatement&nbsp;stmt&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;conn.prepareCall(</span><span style="color: #000000;">"</span><span style="color: #000000;">{&nbsp;call&nbsp;s_get_all_point(?)&nbsp;}</span><span style="color: #000000;">"</span><span style="color: #000000;">);////这名执行速度要快点<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stmt.registerOutParameter(</span><span style="color: #000000;">1</span><span style="color: #000000;">,&nbsp;&nbsp;oracle.jdbc.OracleTypes.CURSOR);&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">REF&nbsp;CURSOR(OracleTypes.CURSOR==-10)</span><span style="color: #008000;"><br />
</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stmt.execute();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ResultSet&nbsp;rs&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;(ResultSet)&nbsp;stmt.getObject(</span><span style="color: #000000;">1</span><span style="color: #000000;">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">while</span><span style="color: #000000;">&nbsp;(rs.next())&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(rs.getString(</span><span style="color: #000000;">"</span><span style="color: #000000;">gwbh</span><span style="color: #000000;">"</span><span style="color: #000000;">));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rs.close();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rs&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">null</span><span style="color: #000000;">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stmt.close();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stmt&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">null</span><span style="color: #000000;">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;conn.close();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;conn&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">null</span><span style="color: #000000;">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">catch</span><span style="color: #000000;">&nbsp;(SQLException&nbsp;e)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(e.getLocalizedMessage());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></div>
<br />
<img src ="http://www.blogjava.net/asdtiang/aggbug/332974.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/asdtiang/" target="_blank">asdtiang</a> 2010-09-26 17:18 <a href="http://www.blogjava.net/asdtiang/archive/2010/09/26/332974.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>js 实现的星期选择代码</title><link>http://www.blogjava.net/asdtiang/archive/2010/09/26/332956.html</link><dc:creator>asdtiang</dc:creator><author>asdtiang</author><pubDate>Sun, 26 Sep 2010 07:25:00 GMT</pubDate><guid>http://www.blogjava.net/asdtiang/archive/2010/09/26/332956.html</guid><wfw:comment>http://www.blogjava.net/asdtiang/comments/332956.html</wfw:comment><comments>http://www.blogjava.net/asdtiang/archive/2010/09/26/332956.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/asdtiang/comments/commentRss/332956.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/asdtiang/services/trackbacks/332956.html</trackback:ping><description><![CDATA[<div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">DIV&nbsp;</span><span style="color: #ff0000;">align</span><span style="color: #0000ff;">="center"</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">form&nbsp;</span><span style="color: #ff0000;">id</span><span style="color: #0000ff;">="frm1"</span><span style="color: #ff0000;">&nbsp;name</span><span style="color: #0000ff;">="frm1"</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">table&nbsp;</span><span style="color: #ff0000;">width</span><span style="color: #0000ff;">="305"</span><span style="color: #ff0000;">&nbsp;border</span><span style="color: #0000ff;">="0"</span><span style="color: #ff0000;">&nbsp;align</span><span style="color: #0000ff;">="center"</span><span style="color: #ff0000;">&nbsp;cellpadding</span><span style="color: #0000ff;">="0"</span><span style="color: #ff0000;">&nbsp;cellspacing</span><span style="color: #0000ff;">="1"</span><span style="color: #ff0000;">&nbsp;bgcolor</span><span style="color: #0000ff;">="#003399"</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">tr</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">td&nbsp;</span><span style="color: #ff0000;">width</span><span style="color: #0000ff;">="106"</span><span style="color: #ff0000;">&nbsp;height</span><span style="color: #0000ff;">="30"</span><span style="color: #ff0000;">&nbsp;align</span><span style="color: #0000ff;">="center"</span><span style="color: #ff0000;">&nbsp;bgcolor</span><span style="color: #0000ff;">="#DEF3FF"</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">input&nbsp;</span><span style="color: #ff0000;">type</span><span style="color: #0000ff;">="checkbox"</span><span style="color: #ff0000;">&nbsp;name</span><span style="color: #0000ff;">="checkbox01"</span><span style="color: #ff0000;">&nbsp;value</span><span style="color: #0000ff;">="1"</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">周一</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">td</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">td&nbsp;</span><span style="color: #ff0000;">width</span><span style="color: #0000ff;">="97"</span><span style="color: #ff0000;">&nbsp;align</span><span style="color: #0000ff;">="center"</span><span style="color: #ff0000;">&nbsp;bgcolor</span><span style="color: #0000ff;">="#DEF3FF"</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">input&nbsp;</span><span style="color: #ff0000;">type</span><span style="color: #0000ff;">="checkbox"</span><span style="color: #ff0000;">&nbsp;name</span><span style="color: #0000ff;">="checkbox02"</span><span style="color: #ff0000;">&nbsp;value</span><span style="color: #0000ff;">="2"</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">周二</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">td</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">td&nbsp;</span><span style="color: #ff0000;">width</span><span style="color: #0000ff;">="98"</span><span style="color: #ff0000;">&nbsp;align</span><span style="color: #0000ff;">="center"</span><span style="color: #ff0000;">&nbsp;bgcolor</span><span style="color: #0000ff;">="#DEF3FF"</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">input&nbsp;</span><span style="color: #ff0000;">type</span><span style="color: #0000ff;">="checkbox"</span><span style="color: #ff0000;">&nbsp;name</span><span style="color: #0000ff;">="checkbox03"</span><span style="color: #ff0000;">&nbsp;value</span><span style="color: #0000ff;">="3"</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">周三</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">td</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">tr</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">tr</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">td&nbsp;</span><span style="color: #ff0000;">width</span><span style="color: #0000ff;">="106"</span><span style="color: #ff0000;">&nbsp;height</span><span style="color: #0000ff;">="30"</span><span style="color: #ff0000;">&nbsp;align</span><span style="color: #0000ff;">="center"</span><span style="color: #ff0000;">&nbsp;bgcolor</span><span style="color: #0000ff;">="#DEF3FF"</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">input&nbsp;</span><span style="color: #ff0000;">type</span><span style="color: #0000ff;">="checkbox"</span><span style="color: #ff0000;">&nbsp;name</span><span style="color: #0000ff;">="checkbox04"</span><span style="color: #ff0000;">&nbsp;value</span><span style="color: #0000ff;">="4"</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">周四</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">td</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">td&nbsp;</span><span style="color: #ff0000;">width</span><span style="color: #0000ff;">="97"</span><span style="color: #ff0000;">&nbsp;align</span><span style="color: #0000ff;">="center"</span><span style="color: #ff0000;">&nbsp;bgcolor</span><span style="color: #0000ff;">="#DEF3FF"</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">input&nbsp;</span><span style="color: #ff0000;">type</span><span style="color: #0000ff;">="checkbox"</span><span style="color: #ff0000;">&nbsp;name</span><span style="color: #0000ff;">="checkbox05"</span><span style="color: #ff0000;">&nbsp;value</span><span style="color: #0000ff;">="5"</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">周五</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">td</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">td&nbsp;</span><span style="color: #ff0000;">width</span><span style="color: #0000ff;">="98"</span><span style="color: #ff0000;">&nbsp;align</span><span style="color: #0000ff;">="center"</span><span style="color: #ff0000;">&nbsp;bgcolor</span><span style="color: #0000ff;">="#DEF3FF"</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">input&nbsp;</span><span style="color: #ff0000;">type</span><span style="color: #0000ff;">="checkbox"</span><span style="color: #ff0000;">&nbsp;name</span><span style="color: #0000ff;">="checkbox06"</span><span style="color: #ff0000;">&nbsp;value</span><span style="color: #0000ff;">="6"</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">周六</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">td</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">tr</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">tr</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">td&nbsp;</span><span style="color: #ff0000;">width</span><span style="color: #0000ff;">="106"</span><span style="color: #ff0000;">&nbsp;height</span><span style="color: #0000ff;">="30"</span><span style="color: #ff0000;">&nbsp;align</span><span style="color: #0000ff;">="center"</span><span style="color: #ff0000;">&nbsp;bgcolor</span><span style="color: #0000ff;">="#DEF3FF"</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">input&nbsp;</span><span style="color: #ff0000;">type</span><span style="color: #0000ff;">="checkbox"</span><span style="color: #ff0000;">&nbsp;name</span><span style="color: #0000ff;">="checkbox07"</span><span style="color: #ff0000;">&nbsp;value</span><span style="color: #0000ff;">="0"</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">周日</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">td</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">td&nbsp;</span><span style="color: #ff0000;">width</span><span style="color: #0000ff;">="97"</span><span style="color: #ff0000;">&nbsp;align</span><span style="color: #0000ff;">="center"</span><span style="color: #ff0000;">&nbsp;bgcolor</span><span style="color: #0000ff;">="#DEF3FF"</span><span style="color: #0000ff;">&gt;&lt;/</span><span style="color: #800000;">td</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">td&nbsp;</span><span style="color: #ff0000;">width</span><span style="color: #0000ff;">="98"</span><span style="color: #ff0000;">&nbsp;align</span><span style="color: #0000ff;">="center"</span><span style="color: #ff0000;">&nbsp;bgcolor</span><span style="color: #0000ff;">="#DEF3FF"</span><span style="color: #0000ff;">&gt;&lt;/</span><span style="color: #800000;">td</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">tr</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">table</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
<br />
</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">table&nbsp;</span><span style="color: #ff0000;">width</span><span style="color: #0000ff;">="305"</span><span style="color: #ff0000;">&nbsp;border</span><span style="color: #0000ff;">="0"</span><span style="color: #ff0000;">&nbsp;align</span><span style="color: #0000ff;">="center"</span><span style="color: #ff0000;">&nbsp;cellspacing</span><span style="color: #0000ff;">="0"</span><span style="color: #ff0000;">&nbsp;cellpadding</span><span style="color: #0000ff;">="0"</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">tr</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">td&nbsp;</span><span style="color: #ff0000;">height</span><span style="color: #0000ff;">="30"</span><span style="color: #ff0000;">align</span><span style="color: #0000ff;">="center"</span><span style="color: #ff0000;">&nbsp;valign</span><span style="color: #0000ff;">="bottom"</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">input&nbsp;</span><span style="color: #ff0000;">type</span><span style="color: #0000ff;">="button"</span><span style="color: #ff0000;">&nbsp;name</span><span style="color: #0000ff;">="button_0105"</span><span style="color: #ff0000;">&nbsp;value</span><span style="color: #0000ff;">="周一至周五"</span><span style="color: #ff0000;">&nbsp;onclick</span><span style="color: #0000ff;">="button_0105_click()"</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">input&nbsp;</span><span style="color: #ff0000;">type</span><span style="color: #0000ff;">="button"</span><span style="color: #ff0000;">&nbsp;name</span><span style="color: #0000ff;">="button_0607"</span><span style="color: #ff0000;">&nbsp;value</span><span style="color: #0000ff;">="周六日"</span><span style="color: #ff0000;">&nbsp;onclick</span><span style="color: #0000ff;">="button_0607_click()"</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">input&nbsp;</span><span style="color: #ff0000;">type</span><span style="color: #0000ff;">="button"</span><span style="color: #ff0000;">&nbsp;name</span><span style="color: #0000ff;">="button_0107"</span><span style="color: #ff0000;">&nbsp;value</span><span style="color: #0000ff;">="全周"</span><span style="color: #ff0000;">&nbsp;onclick</span><span style="color: #0000ff;">="button_0107_click()"</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">td</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">tr</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">tr</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">td&nbsp;</span><span style="color: #ff0000;">height</span><span style="color: #0000ff;">="30"</span><span style="color: #ff0000;">align</span><span style="color: #0000ff;">="center"</span><span style="color: #ff0000;">&nbsp;valign</span><span style="color: #0000ff;">="bottom"</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">input&nbsp;</span><span style="color: #ff0000;">type</span><span style="color: #0000ff;">="button"</span><span style="color: #ff0000;">&nbsp;name</span><span style="color: #0000ff;">="button_ok"</span><span style="color: #ff0000;">&nbsp;value</span><span style="color: #0000ff;">="&nbsp;确&nbsp;定&nbsp;"</span><span style="color: #ff0000;">&nbsp;onclick</span><span style="color: #0000ff;">="button_ok_click()"</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">input&nbsp;</span><span style="color: #ff0000;">type</span><span style="color: #0000ff;">="reset"</span><span style="color: #ff0000;">&nbsp;name</span><span style="color: #0000ff;">="button_reset"</span><span style="color: #ff0000;">&nbsp;value</span><span style="color: #0000ff;">="&nbsp;重&nbsp;置&nbsp;"</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">input&nbsp;</span><span style="color: #ff0000;">type</span><span style="color: #0000ff;">="button"</span><span style="color: #ff0000;">&nbsp;name</span><span style="color: #0000ff;">="button_cancle"</span><span style="color: #ff0000;">&nbsp;value</span><span style="color: #0000ff;">="&nbsp;取&nbsp;消&nbsp;"</span><span style="color: #ff0000;">&nbsp;onclick</span><span style="color: #0000ff;">="button_cancle_click()"</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">td</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">tr</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">table</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
<br />
</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">form</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">DIV</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
<br />
</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">SCRIPT</span><span style="color: #0000ff;">&gt;</span><span style="background-color: #f5f5f5; color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="background-color: #f5f5f5; color: #0000ff;">var</span><span style="background-color: #f5f5f5; color: #000000;">&nbsp;return_value</span><span style="background-color: #f5f5f5; color: #000000;">=</span><span style="background-color: #f5f5f5; color: #000000;">""</span><span style="background-color: #f5f5f5; color: #000000;">;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="background-color: #f5f5f5; color: #0000ff;">function</span><span style="background-color: #f5f5f5; color: #000000;">&nbsp;button_ok_click(){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return_value</span><span style="background-color: #f5f5f5; color: #000000;">=</span><span style="background-color: #f5f5f5; color: #000000;">""</span><span style="background-color: #f5f5f5; color: #000000;">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="background-color: #f5f5f5; color: #0000ff;">var</span><span style="background-color: #f5f5f5; color: #000000;">&nbsp;mc</span><span style="background-color: #f5f5f5; color: #000000;">=</span><span style="background-color: #f5f5f5; color: #000000;">""</span><span style="background-color: #f5f5f5; color: #000000;">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="background-color: #f5f5f5; color: #0000ff;">var</span><span style="background-color: #f5f5f5; color: #000000;">&nbsp;dm</span><span style="background-color: #f5f5f5; color: #000000;">=</span><span style="background-color: #f5f5f5; color: #000000;">""</span><span style="background-color: #f5f5f5; color: #000000;">;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="background-color: #f5f5f5; color: #0000ff;">if</span><span style="background-color: #f5f5f5; color: #000000;">(document.getElementById(</span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">checkbox07</span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">).checked){mc</span><span style="background-color: #f5f5f5; color: #000000;">+=</span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">、周日</span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">;dm</span><span style="background-color: #f5f5f5; color: #000000;">+=</span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">1</span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">;}</span><span style="background-color: #f5f5f5; color: #0000ff;">else</span><span style="background-color: #f5f5f5; color: #000000;">{dm</span><span style="background-color: #f5f5f5; color: #000000;">+=</span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">0</span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="background-color: #f5f5f5; color: #0000ff;">if</span><span style="background-color: #f5f5f5; color: #000000;">(document.getElementById(</span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">checkbox01</span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">).checked){mc</span><span style="background-color: #f5f5f5; color: #000000;">+=</span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">、周一</span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">;dm</span><span style="background-color: #f5f5f5; color: #000000;">+=</span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">1</span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">;}</span><span style="background-color: #f5f5f5; color: #0000ff;">else</span><span style="background-color: #f5f5f5; color: #000000;">{dm</span><span style="background-color: #f5f5f5; color: #000000;">+=</span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">0</span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="background-color: #f5f5f5; color: #0000ff;">if</span><span style="background-color: #f5f5f5; color: #000000;">(document.getElementById(</span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">checkbox02</span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">).checked){mc</span><span style="background-color: #f5f5f5; color: #000000;">+=</span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">、周二</span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">;dm</span><span style="background-color: #f5f5f5; color: #000000;">+=</span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">1</span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">;}</span><span style="background-color: #f5f5f5; color: #0000ff;">else</span><span style="background-color: #f5f5f5; color: #000000;">{dm</span><span style="background-color: #f5f5f5; color: #000000;">+=</span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">0</span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="background-color: #f5f5f5; color: #0000ff;">if</span><span style="background-color: #f5f5f5; color: #000000;">(document.getElementById(</span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">checkbox03</span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">).checked){mc</span><span style="background-color: #f5f5f5; color: #000000;">+=</span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">、周三</span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">;dm</span><span style="background-color: #f5f5f5; color: #000000;">+=</span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">1</span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">;}</span><span style="background-color: #f5f5f5; color: #0000ff;">else</span><span style="background-color: #f5f5f5; color: #000000;">{dm</span><span style="background-color: #f5f5f5; color: #000000;">+=</span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">0</span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="background-color: #f5f5f5; color: #0000ff;">if</span><span style="background-color: #f5f5f5; color: #000000;">(document.getElementById(</span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">checkbox04</span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">).checked){mc</span><span style="background-color: #f5f5f5; color: #000000;">+=</span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">、周四</span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">;dm</span><span style="background-color: #f5f5f5; color: #000000;">+=</span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">1</span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">;}</span><span style="background-color: #f5f5f5; color: #0000ff;">else</span><span style="background-color: #f5f5f5; color: #000000;">{dm</span><span style="background-color: #f5f5f5; color: #000000;">+=</span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">0</span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="background-color: #f5f5f5; color: #0000ff;">if</span><span style="background-color: #f5f5f5; color: #000000;">(document.getElementById(</span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">checkbox05</span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">).checked){mc</span><span style="background-color: #f5f5f5; color: #000000;">+=</span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">、周五</span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">;dm</span><span style="background-color: #f5f5f5; color: #000000;">+=</span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">1</span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">;}</span><span style="background-color: #f5f5f5; color: #0000ff;">else</span><span style="background-color: #f5f5f5; color: #000000;">{dm</span><span style="background-color: #f5f5f5; color: #000000;">+=</span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">0</span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="background-color: #f5f5f5; color: #0000ff;">if</span><span style="background-color: #f5f5f5; color: #000000;">(document.getElementById(</span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">checkbox06</span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">).checked){mc</span><span style="background-color: #f5f5f5; color: #000000;">+=</span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">、周六</span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">;dm</span><span style="background-color: #f5f5f5; color: #000000;">+=</span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">1</span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">;}</span><span style="background-color: #f5f5f5; color: #0000ff;">else</span><span style="background-color: #f5f5f5; color: #000000;">{dm</span><span style="background-color: #f5f5f5; color: #000000;">+=</span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">0</span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="background-color: #f5f5f5; color: #0000ff;">if</span><span style="background-color: #f5f5f5; color: #000000;">(mc</span><span style="background-color: #f5f5f5; color: #000000;">!=</span><span style="background-color: #f5f5f5; color: #000000;">""</span><span style="background-color: #f5f5f5; color: #000000;">){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return_value</span><span style="background-color: #f5f5f5; color: #000000;">=</span><span style="background-color: #f5f5f5; color: #000000;">dm</span><span style="background-color: #f5f5f5; color: #000000;">+</span><span style="background-color: #f5f5f5; color: #000000;">(mc.substr(</span><span style="background-color: #f5f5f5; color: #000000;">1</span><span style="background-color: #f5f5f5; color: #000000;">));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="background-color: #f5f5f5; color: #0000ff;">if</span><span style="background-color: #f5f5f5; color: #000000;">(return_value</span><span style="background-color: #f5f5f5; color: #000000;">==</span><span style="background-color: #f5f5f5; color: #000000;">""</span><span style="background-color: #f5f5f5; color: #000000;">){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert(</span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">您还没有选择星期情况！</span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="background-color: #f5f5f5; color: #0000ff;">return</span><span style="background-color: #f5f5f5; color: #000000;">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;window.returnValue</span><span style="background-color: #f5f5f5; color: #000000;">=</span><span style="background-color: #f5f5f5; color: #000000;">return_value;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;window.close();<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="background-color: #f5f5f5; color: #0000ff;">function</span><span style="background-color: #f5f5f5; color: #000000;">&nbsp;button_cancle_click(){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;window.returnValue</span><span style="background-color: #f5f5f5; color: #000000;">=</span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">cancle</span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;window.close();<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="background-color: #f5f5f5; color: #0000ff;">function</span><span style="background-color: #f5f5f5; color: #000000;">&nbsp;button_0105_click(){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;document.frm1.reset();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;document.getElementById(</span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">checkbox01</span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">).checked</span><span style="background-color: #f5f5f5; color: #000000;">=</span><span style="background-color: #f5f5f5; color: #0000ff;">true</span><span style="background-color: #f5f5f5; color: #000000;">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;document.getElementById(</span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">checkbox02</span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">).checked</span><span style="background-color: #f5f5f5; color: #000000;">=</span><span style="background-color: #f5f5f5; color: #0000ff;">true</span><span style="background-color: #f5f5f5; color: #000000;">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;document.getElementById(</span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">checkbox03</span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">).checked</span><span style="background-color: #f5f5f5; color: #000000;">=</span><span style="background-color: #f5f5f5; color: #0000ff;">true</span><span style="background-color: #f5f5f5; color: #000000;">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;document.getElementById(</span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">checkbox04</span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">).checked</span><span style="background-color: #f5f5f5; color: #000000;">=</span><span style="background-color: #f5f5f5; color: #0000ff;">true</span><span style="background-color: #f5f5f5; color: #000000;">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;document.getElementById(</span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">checkbox05</span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">).checked</span><span style="background-color: #f5f5f5; color: #000000;">=</span><span style="background-color: #f5f5f5; color: #0000ff;">true</span><span style="background-color: #f5f5f5; color: #000000;">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="background-color: #f5f5f5; color: #0000ff;">function</span><span style="background-color: #f5f5f5; color: #000000;">&nbsp;button_0107_click(){<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;document.frm1.reset();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;document.getElementById(</span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">checkbox01</span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">).checked</span><span style="background-color: #f5f5f5; color: #000000;">=</span><span style="background-color: #f5f5f5; color: #0000ff;">true</span><span style="background-color: #f5f5f5; color: #000000;">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;document.getElementById(</span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">checkbox02</span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">).checked</span><span style="background-color: #f5f5f5; color: #000000;">=</span><span style="background-color: #f5f5f5; color: #0000ff;">true</span><span style="background-color: #f5f5f5; color: #000000;">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;document.getElementById(</span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">checkbox03</span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">).checked</span><span style="background-color: #f5f5f5; color: #000000;">=</span><span style="background-color: #f5f5f5; color: #0000ff;">true</span><span style="background-color: #f5f5f5; color: #000000;">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;document.getElementById(</span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">checkbox04</span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">).checked</span><span style="background-color: #f5f5f5; color: #000000;">=</span><span style="background-color: #f5f5f5; color: #0000ff;">true</span><span style="background-color: #f5f5f5; color: #000000;">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;document.getElementById(</span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">checkbox05</span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">).checked</span><span style="background-color: #f5f5f5; color: #000000;">=</span><span style="background-color: #f5f5f5; color: #0000ff;">true</span><span style="background-color: #f5f5f5; color: #000000;">;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;document.getElementById(</span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">checkbox06</span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">).checked</span><span style="background-color: #f5f5f5; color: #000000;">=</span><span style="background-color: #f5f5f5; color: #0000ff;">true</span><span style="background-color: #f5f5f5; color: #000000;">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;document.getElementById(</span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">checkbox07</span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">).checked</span><span style="background-color: #f5f5f5; color: #000000;">=</span><span style="background-color: #f5f5f5; color: #0000ff;">true</span><span style="background-color: #f5f5f5; color: #000000;">;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="background-color: #f5f5f5; color: #008000;">/*</span><span style="background-color: #f5f5f5; color: #008000;">*<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return_value="1111111周一、周二、周三、周四、周五、周六、周日";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;window.returnValue=return_value;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;window.close();<br />
</span><span style="background-color: #f5f5f5; color: #008000;">*/</span><span style="background-color: #f5f5f5; color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="background-color: #f5f5f5; color: #0000ff;">function</span><span style="background-color: #f5f5f5; color: #000000;">&nbsp;button_0607_click(){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;document.frm1.reset();&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;document.getElementById(</span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">checkbox06</span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">).checked</span><span style="background-color: #f5f5f5; color: #000000;">=</span><span style="background-color: #f5f5f5; color: #0000ff;">true</span><span style="background-color: #f5f5f5; color: #000000;">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;document.getElementById(</span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">checkbox07</span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">).checked</span><span style="background-color: #f5f5f5; color: #000000;">=</span><span style="background-color: #f5f5f5; color: #0000ff;">true</span><span style="background-color: #f5f5f5; color: #000000;">;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;window.returnValue</span><span style="background-color: #f5f5f5; color: #000000;">=</span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">cancle</span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">;<br />
</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">SCRIPT</span><span style="color: #0000ff;">&gt;</span></div>
调用代码示例：<br />
var revalue=window.showModalDialog("页面名字","","help:no;center:yes;dialogHeight:300px;dialogWidth:450px");<br />
<br />
&nbsp; if(revalue!="cancle"){<br />
&nbsp;&nbsp;&nbsp; document.getElementById("xqqk_mc").innerHTML=revalue.substr(7);////用于显示给用户<br />
&nbsp;&nbsp;&nbsp; document.frmgwxxf.xqqk.value=revalue.substr(0,7);/////用于存储于数据库<br />
&nbsp; }else{<br />
&nbsp;&nbsp;&nbsp; document.getElementById("xqqk_mc").innerHTML="点击选择星期情况=&gt;";<br />
&nbsp;&nbsp;&nbsp; document.frmgwxxf.xqqk.value="0000000";<br />
<img src ="http://www.blogjava.net/asdtiang/aggbug/332956.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/asdtiang/" target="_blank">asdtiang</a> 2010-09-26 15:25 <a href="http://www.blogjava.net/asdtiang/archive/2010/09/26/332956.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>java study reflect</title><link>http://www.blogjava.net/asdtiang/archive/2010/09/19/332453.html</link><dc:creator>asdtiang</dc:creator><author>asdtiang</author><pubDate>Sun, 19 Sep 2010 09:13:00 GMT</pubDate><guid>http://www.blogjava.net/asdtiang/archive/2010/09/19/332453.html</guid><wfw:comment>http://www.blogjava.net/asdtiang/comments/332453.html</wfw:comment><comments>http://www.blogjava.net/asdtiang/archive/2010/09/19/332453.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/asdtiang/comments/commentRss/332453.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/asdtiang/services/trackbacks/332453.html</trackback:ping><description><![CDATA[<p>public class MyReflect {<br />
&nbsp;<br />
&nbsp;public static void showInfoByClass(Object obj){<br />
&nbsp;&nbsp;Class objClass = obj.getClass();</p>
<p>&nbsp;&nbsp;java.lang.reflect.Field[] fields = objClass<br />
&nbsp;&nbsp;&nbsp;&nbsp;.getDeclaredFields();<br />
&nbsp;&nbsp;for (int i = 0; i &lt; fields.length; i++) {<br />
&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;try{<br />
&nbsp;&nbsp;&nbsp;java.lang.reflect.Method voMethod = objClass<br />
&nbsp;&nbsp;&nbsp;.getMethod(<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"get"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;+ fields[i].getName()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.substring(0, 1)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.toUpperCase()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;+ fields[i].getName()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.substring(1),<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;new Class[] {});<br />
&nbsp;&nbsp;&nbsp;Object o=voMethod.invoke(obj, new Object[] {});<br />
&nbsp;&nbsp;&nbsp;String result="";<br />
&nbsp;&nbsp;&nbsp;result=o.toString();<br />
&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;Logger.info("class name:"+obj.getClass().getName()+"&nbsp; propName: "+fields[i].getName()+"&nbsp;&nbsp; methodName： get"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;+ fields[i].getName()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.substring(0, 1)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.toUpperCase()<br />
&nbsp;&nbsp;&nbsp;+ fields[i].getName()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.substring(1)+"&nbsp;&nbsp; value:"+result);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;catch(Exception e){<br />
&nbsp;&nbsp;&nbsp;&nbsp;Logger.info("class name:"+obj.getClass().getName()+"&nbsp; propName: "+fields[i].getName()+"&nbsp;&nbsp; methodName： get"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;+ fields[i].getName()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.substring(0, 1)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.toUpperCase()<br />
&nbsp;&nbsp;&nbsp;&nbsp;+ fields[i].getName()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.substring(1)+"no method");<br />
&nbsp;&nbsp;&nbsp;&nbsp;continue;<br />
&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;}<br />
&nbsp;&nbsp;<br />
&nbsp;}<br />
&nbsp;<br />
&nbsp;</p>
<p>}<br />
</p>
<img src ="http://www.blogjava.net/asdtiang/aggbug/332453.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/asdtiang/" target="_blank">asdtiang</a> 2010-09-19 17:13 <a href="http://www.blogjava.net/asdtiang/archive/2010/09/19/332453.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>社区检验网网站程序</title><link>http://www.blogjava.net/asdtiang/archive/2010/09/10/331695.html</link><dc:creator>asdtiang</dc:creator><author>asdtiang</author><pubDate>Fri, 10 Sep 2010 09:58:00 GMT</pubDate><guid>http://www.blogjava.net/asdtiang/archive/2010/09/10/331695.html</guid><wfw:comment>http://www.blogjava.net/asdtiang/comments/331695.html</wfw:comment><comments>http://www.blogjava.net/asdtiang/archive/2010/09/10/331695.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/asdtiang/comments/commentRss/331695.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/asdtiang/services/trackbacks/331695.html</trackback:ping><description><![CDATA[&nbsp;
<p><span style="font-family: 宋体">社区检验网网站程序</span></p>
<p><span style="font-family: 宋体">功能需求：</span></p>
<p><a href="http://www.sjzsqjy.com/search/init?type=1"><span style="color: windowtext; font-family: 宋体">临床检验报告单查询</a></span></p>
<p><a href="http://www.sjzsqjy.com/search/init?type=2"><span style="color: windowtext; font-family: 宋体">临床生化检验报告单查询</a></span></p>
<p><a href="http://www.sjzsqjy.com/search/init?type=3"><span style="color: windowtext; font-family: 宋体">普利生仪器中心血流变仪测试报告查询</a></span></p>
<p><a href="http://www.sjzsqjy.com/search/init?type=4"><span style="color: windowtext; font-family: 宋体">微量元素检测报告单查询</a></span></p>
<p><span style="font-family: 宋体">数据由仪器产生，再由后台上传到数据库服务器，网站程序提供查询，后台可以添加诊所用户，实现数据查询。</span></p>
<p><span style="font-family: 宋体">网站界面可以根据用户需求更改。</span></p>
<p><span style="font-family: 宋体">示例网站：</span><a href="http://www.sjzsqjy.com/">www.sjzsqjy.com</a></p>
<p><span style="font-family: 宋体">要这个程序的请联系我：</span></p>
<p>QQ<span style="font-family: 宋体">：</span>250753635</p>
<p><a href="tel:15832166084">TEL:15832166084</a></p>
<p>Email:asdtiangxia@163.com</p>
<img src ="http://www.blogjava.net/asdtiang/aggbug/331695.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/asdtiang/" target="_blank">asdtiang</a> 2010-09-10 17:58 <a href="http://www.blogjava.net/asdtiang/archive/2010/09/10/331695.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>