??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲熟女少妇一区二区,日韩亚洲精品福利,亚洲人成电影网站色http://www.tkk7.com/waterjava/category/9755.html我胡汉山又回来了!zh-cnFri, 06 Jun 2008 09:43:47 GMTFri, 06 Jun 2008 09:43:47 GMT60再提 Ubuntu/Debian ?JAVA 中文昄http://www.tkk7.com/waterjava/archive/2008/05/31/204985.html狼爱上狸狼爱上狸Sat, 31 May 2008 14:17:00 GMThttp://www.tkk7.com/waterjava/archive/2008/05/31/204985.htmlhttp://www.tkk7.com/waterjava/comments/204985.htmlhttp://www.tkk7.com/waterjava/archive/2008/05/31/204985.html#Feedback0http://www.tkk7.com/waterjava/comments/commentRss/204985.htmlhttp://www.tkk7.com/waterjava/services/trackbacks/204985.html

1.
?jre/lib/fonts/ 下徏立个目录 fallback
比如我这儿就?br /> mkdir /usr/lib/j2sdk1.5-sun/jre/lib/fonts/fallback/

2.
?fallback 里弄个中文字?br /> 拯或链接都可以

比如我这是
ln -s /usr/share/fonts/truetype/arphic/uming.ttf /usr/lib/j2sdk1.5-sun/jre/lib/fonts/fallback/


3.
q入 jre/lib/fonts/fallback/ 执行 mkfontscale
再把 jre/lib/fonts/fonts.scale 的内容加?jre/lib/fonts/fonts.dir

我这儿就?br /> cd /usr/lib/j2sdk1.5-sun/jre/lib/fonts/fallback/
mkfontscale
cd ..
cat fallback/fonts.scale >> fonts.dir

来自Qhttp://blog.chinaunix.net/u/28007/showart_217907.html?


狼爱上狸 2008-05-31 22:17 发表评论
]]>
Java单的术语http://www.tkk7.com/waterjava/archive/2008/04/25/196055.html狼爱上狸狼爱上狸Fri, 25 Apr 2008 12:17:00 GMThttp://www.tkk7.com/waterjava/archive/2008/04/25/196055.htmlhttp://www.tkk7.com/waterjava/comments/196055.htmlhttp://www.tkk7.com/waterjava/archive/2008/04/25/196055.html#Feedback0http://www.tkk7.com/waterjava/comments/commentRss/196055.htmlhttp://www.tkk7.com/waterjava/services/trackbacks/196055.html 1.什么是DAOQ?br /> DAO是Data Access Object数据讉K接口Q数据访问:故名思义是与数据库打交道。夹在业务逻辑与数据库资源中间?br />
在核心J2EE模式中是q样介绍DAO模式的:Z建立一个健壮的J2EE应用Q应该将所有对数据源的讉K操作抽象装在一个公共API中。用E序设计的语a来说Q就是徏立一个接口,接口中定义了此应用程序中会用到的所有事务方法。在q个应用E序中,当需要和数据源进行交互的时候则使用q个接口Qƈ且编写一个单独的cL实现q个接口在逻辑上对应这个特定的数据存储?br />
    DAOQ数据访问对象)是一U应用程序编E接口(APIQ,存在于微软的Visual Basic中,它允许程序员h对微软的Access数据库的讉K。DAO是微软的W一个面向对象的数据库接口。DAO对象闭了Access的Jet函数。通过Jet函数Q它q可以访问其他的l构化查询语aQSQLQ数据库?

2.什么是POJOQ?br /> 单的Java对象QPlain Old Java ObjectsQ实际就是普通JavaBeans,使用POJO名称是ؓ了避免和EJBhh, 而且U比较直? 其中有一些属性及其getter setterҎ的类,有时可以作ؓvalue object或dto(Data Transform Object)来?当然,如果你有一个简单的q算属性也是可以的,但不允许有业务方?也不能携带有connection之类的方法?nbsp; 

POJO有一些private的参C为对象的属性。然后针Ҏ个参数定义了get和setҎ作ؓ讉K的接口。例如:
public class User {
  private long id;
  private String name;
  public void setId(long id) {
this.id = id;
}  
public void setName(String name) {
this.name=name;
}
public long getId() {
return id;
}  
public String getName() {
return name;
}
}
POJO对象有时也被UCؓData对象Q大量应用于表现现实中的对象?br />
3.什么是IMPLQ?br />
未查到?br />

狼爱上狸 2008-04-25 20:17 发表评论
]]>
WebLogic Server理指南 http://www.tkk7.com/waterjava/archive/2006/11/27/83696.html狼爱上狸狼爱上狸Mon, 27 Nov 2006 00:41:00 GMThttp://www.tkk7.com/waterjava/archive/2006/11/27/83696.htmlhttp://www.tkk7.com/waterjava/comments/83696.htmlhttp://www.tkk7.com/waterjava/archive/2006/11/27/83696.html#Feedback0http://www.tkk7.com/waterjava/comments/commentRss/83696.htmlhttp://www.tkk7.com/waterjava/services/trackbacks/83696.html WebLogic Server主题DQ?br />
0、在看下面帖子的时候请优先查看BEA客户支持服务部的“常见技术问题(FAQsQ”专?br />http://www.bea.com.cn/services/cust...r/faq/index.jsp

WebLogic Server 理最佛_?
http://dev2dev.bea.com.cn/techdoc/webser/200408231.html


1?WebLogic Server安装主题
如何安装BEA WebLogic Server
http://dev2dev.bea.com.cn/bbs/schoo...r/20040178.html

如何启动WebLogic Server
http://dev2dev.bea.com.cn/bbs/schoo...r/20040179.html

如何启动example Server
http://dev2dev.bea.com.cn/bbs/schoo...r/20040180.html

如何在solaris环境下设|WLS的自启动Q?br />http://dev2dev.bea.com.cn/bbs/threa...1&threadID=8560

Oracle和WebLogic在Linux下面的自动启动与停止
http://dev2dev.bea.com.cn/bbs/threa...1&threadID=8839


2?WebLogic Server配置主题
weblogic 配置出来的各U域有什么区别?
http://211.144.153.5/bbs/thread.jsp...1&threadID=9188

在WLS 8.1 上配|群集的基本步骤是什么?
http://support.bea.com/askbea_soln/...iewlet_swf.html

如何配置WebLogic Server的集?br />http://dev2dev.bea.com.cn/bbs/schoo...r/20040181.html

weblogic 8.1节点理器的配置Q?br />http://dev2dev.bea.com.cn/bbs/schoo...r/20030730.html

如何部v集群环境下的proxy Server
http://dev2dev.bea.com.cn/bbs/schoo...r/20040182.html

大系l部|,10台P4前置机,4台HPN4000机子Q布集群各位有何
http://dev2dev.bea.com.cn/bbs/threa...D=7732&tstart=0

Lq集的帮忙回答下,好吗Q谢谢,在线{,急!
http://dev2dev.bea.com.cn/bbs/threa...D=4800&tstart=0

Apache 2.x与WLS8.1集成-Linux?
http://dev2dev.bea.com.cn/bbs/schoo...r/20031270.html

Apache plug-in配置代理h实战
http://dev2dev.bea.com.cn/techdoc/webser/200402121.html

WebLogic Server 8.1虚拟L配置最佛_?
http://dev2dev.bea.com.cn/bbs/yuanc...eShow.jsp?Id=19

关于web application Qvirtual host的配|)
http://dev2dev.bea.com.cn/bbs/threa...messageID=49217


3、配|SSL
WebLogic支持密钥的长度限?br />WebLogic 8.1 SP3之前的版本,默认?License是SSL/ExportQ最多只能到512位密钥,如果想生大?12位的密钥Q需要安装SSL/Domestic的License?br />自WebLogic 8.1 SP3后,默认情况下已l启用了SSL/DomesticQ即支持1024位的数字证书?br />
【推荐】WebLogic Server 8.1 配置Keystores ?SSL的步?
http://dev2dev.bea.com.cn/bbs/threa...D=8362&tstart=0


4、hung&core&Performance tuning
【精华-WLS调优集锦】weblogic+sqlserver速度极慢的问题(使用了集)
http://dev2dev.bea.com.cn/bbs/threa...D=4525&tstart=0

队列长度一直很高,吞吐量不大,讉K很慢是怎么回事Q?
http://dev2dev.bea.com.cn/bbs/threa...D=7770&tstart=0

'StackOverFlow' Issues in BEA WebLogic Server
http://www.sys-con.com/WebLogic/articleprint.cfm?id=440

推荐好文-Looking at Thread-Dumps
http://dev2dev.bea.com.cn/bbs/threa...D=9288&tstart=0

JVM的垃圑֛收参数怎么讄Q?br />http://dev2dev.bea.com.cn/bbs/threa...1&threadID=6931

如果没有适当的JVM调优Q应用系l中Ҏ出现java.lang.OutOfMemoryError的错误thread dump 请大家分析分析,谢谢Q?br />http://dev2dev.bea.com.cn/bbs/threa...messageID=49254

高手帮忙分析一下我们在AIX上的Weblogic危机Q?br />http://dev2dev.bea.com.cn/bbs/threa...D=9514&tstart=0

最qweblogic用的h老是数据库连接池被耗尽
http://dev2dev.bea.com.cn/bbs/threa...D=9121&tstart=0

问:指定的网l名不存在?
http://dev2dev.bea.com.cn/bbs/threa...D=9393&tstart=0


5、其它:
win2000下apache2+weblogic7实现Z同一个ip地址的多个虚拟主问多个weblogic站点
http://dev2dev.bea.com.cn/bbs/threa...D=6326&tstart=0

控制台左边的树结构不见了Q请大侠指点一下!
http://dev2dev.bea.com.cn/bbs/threa...D=5233&tstart=0

BEA 8.1最新管理方面的认证QBEA 8.1 Certified Administrator
http://dev2dev.bea.com.cn/bbs/threa...D=7564&tstart=0

求救Q如何远E启动WEBLOGIC服务
http://dev2dev.bea.com.cn/bbs/threa...D=7709&tstart=0

WebLogic Platform 8.1 怸q期的开发版license
http://dev2dev.bea.com.cn/bbs/threa...D=8992&tstart=0

trackback: http://www.ixpub.net/635057.html



狼爱上狸 2006-11-27 08:41 发表评论
]]>
全面掌握癑ֺI间技巧之CSS详细说明http://www.tkk7.com/waterjava/archive/2006/11/15/81192.html狼爱上狸狼爱上狸Wed, 15 Nov 2006 02:59:00 GMThttp://www.tkk7.com/waterjava/archive/2006/11/15/81192.htmlhttp://www.tkk7.com/waterjava/comments/81192.htmlhttp://www.tkk7.com/waterjava/archive/2006/11/15/81192.html#Feedback0http://www.tkk7.com/waterjava/comments/commentRss/81192.htmlhttp://www.tkk7.com/waterjava/services/trackbacks/81192.html癑ֺI间技?/a>之CSS详细说明

body 整个I间面{background-color:#FFFFFF}
--------------------------------------------------------------------------------
I间名称和简介区?br />#header M部分{height:89px;background:#3399CC}
#header div.lc 左背景图{background:url(temp1/hdl.jpg) no-repeat}
#header div.rc 双景图{background:url(temp1/hdr.jpg) no-repeat top right}
#header div.tit I间名称{top:8px;left:20px;line-height:22px;font-size:20px;font-family:黑体}
#header div.tit a.titlink I间名称链接{color:#FFFFFF;text-decoration:none}
#header div.tit a.titlink:visited{color:#FFFFFF;text-decoration:none}
#header div.desc I间介{top:33px;left:20px;color:#FFFFFF;font-size:13px}
#tabline TAB菜单下方的横U{top:89px;background-color:#FFFFFF}
#tab TAB菜单M{top:67px;background:url(temp1/tabbg.gif) repeat-x}
#tab a.on,#tab a.on:link,#tab a.on:visited TAB选中状态{margin-top:3px;border-left:1px solid
#FFFFFF;border-right:1px solid #FFFFFF;border-top:1px solid #FFFFFF;line-
height:19px;background-color:#F3F1F1;color:#197CAE;font-size:14px}
#tab span TAB与TAB之间的分割符“|”{color:#FFFFFF;font-size:14px}
#tab a:link TAB未选中状态{color:#FFFFFF;text-decoration:none;font-size:14px}
#tab a:visited{color:#FFFFFF;text-decoration:none;font-size:14px}
#tab2 讄TAB菜单M{background:#DAE9F5}
#tab2 span TAB选中状态{color:#000000;font-size:12px;font-weight:bold}
#tab2 a TAB未选中状态{font-size:12px}
#tab2 a:link{color:#0000CC}
#tab2 a:visited{color:#0000CC}
--------------------------------------------------------------------------------
.stage 内容区域QTAB菜单与版权信息之间的区域Q{background:#F3F1F1}
其它区域Q即讉K量等信息Q?br />#comm_info M{color:#333333;font-family:Arial;text-align:left}
#comm_info div.line 分界U{margin-top:5px;line-height:8px;border-top:1px solid #D2E9F4}
#comm_info a 链接{color:#3399CC}
--------------------------------------------------------------------------------
늠区域
#page M{height:30px;font-size:14px;font-family:Arial;text-align:center}
#page span 当前늠Q不可点击){padding:3px;color:#000000;font-size:14px;font-weight:bold}
#page a.pc 上一和下一{color:#3399CC;font-size:14px;font-weight:bold}
#page a.pc:visited{color:#3399CC}
#page a.pi 늠Q可点击Q{padding:3px;color:#3399CC;font-size:14px}
#page a.pi:visited{color:#3399CC}
--------------------------------------------------------------------------------
模块
.mod {margin-bottom:10px}
.modhandle{cursor:move}
.modth 模块标题栏主体{height:24px}
.modhead{padding:4px 4px 0 4px}
.modopt 模块操作区(如写新文章){padding:4px 4px 0 0}
.modtit 模块标题区(如文章列表){color:#FFFFFF;font-size:12px;font-weight:bold}a.modtit
{color:#FFFFFF}a.modtit:visited{color:#FFFFFF}
.modtitlink{color:#FFFFFF;font-size:12px;font-weight:bold}a.modtitlink{color:#FFFFFF;text-
decoration:none}a.modtitlink:visited{color:#FFFFFF;text-decoration:none}a.modtitlink:hover
{color:#FF5100;text-decoration:underline}
.modact 操作文字链接Q如文章列表Q{color:#FFFFFF;font-size:12px}a.modact:link
{color:#FFFFFF}a.modact:visited{color:#FFFFFF}
.modbox 模块内容区{padding:10px 10px 0 10px;background-color:#FFFFFF}
.modtl 模块左上角背景{background:url(temp1/ptitl.gif) no-repeat top left;line-height:1px}
.modtc 模块中上背景{background:url(temp1/ptitc.gif) repeat-x}
.modtr 模块右上角背景{background:url(temp1/ptitr.gif) no-repeat top right;line-height:1px}
.modbl 模块左下角背景{background-color:#FFFFFF;line-height:1px}
.modbc 模块中下背景{background-color:#FFFFFF;line-height:1px}
.modbr 模块右下角背景{background-color:#FFFFFF;line-height:1px}
--------------------------------------------------------------------------------
文章区域
#m_blog div.tit 文章标题{font-size:14px;font-weight:bold}
#m_blog div.tit a 文章标题链接{color:#333333;font-size:14px;font-weight:bold}
#m_blog div.tit a:visited{color:#333333}
#m_blog div.date 文章发表日期{margin:5px 0 8px 0;color:#666666}
#m_blog div.cnt 文章内容{color:#333333;line-height:20px;font-size:14px}
#m_blog div.more{margin:14px 0 16px 0}
#m_blog div.more a 阅读全文链接{color:#3399CC;font-size:14px}
#m_blog div.more a:visited{color:#3399CC}
#m_blog div.opt 文章操作区(如编辑、评论等Q{color:#666666;font-size:12px}
#m_blog div.opt a 文章操作链接{color:#3399CC;font-size:12px}
#m_blog div.opt a:visited{color:#3399CC}
#m_blog div.line 分界U{margin-top:17px;line-height:17px;border-top:1px solid #D2E9F4}
#m_blog div.none 无文章提CZ息{padding:100px 0 100px 0;color:#333333;font-size:14px}
--------------------------------------------------------------------------------
个h档案区域
#m_pro a 链接{color:#3399CC}
#m_pro a:visited{color:#3399CC}
#m_pro div.image 个h头像{text-align:center}
#m_pro div.act 操作区(如加为好友、发送消息){margin-top:10px}
#m_pro div.user 用户名{margin-top:10px;color:#333333;font-size:12px;font-weight:bold}
#m_pro div.desc 用户介{color:#333333;font-size:12px}
#m_pro div.line 分界U{margin-top:17px;line-height:17px;border-top:1px solid #D2E9F4}
#m_pro td{color:#333333;line-height:24px;font-size:14px}
--------------------------------------------------------------------------------
相册区域
#m_album div.image 照片{text-align:center}
#m_album div.page {color:#666666;font-size:12px;text-align:center}
#m_album div.page a{color:#0000CC;font-size:12px}
#m_album div.page a:visited{color:#0000CC}
--------------------------------------------------------------------------------
友情链接区域
#m_links div.item 子项{color:#333333;font-size:12px}
#m_links div.item a 名称Q链接){color:#3399CC;font-size:12px;text-decoration:none}
#m_links div.item a:visited{color:#3399CC}
#m_links div.line 分界U{margin-top:5px;line-height:8px;border-top:1px solid #D2E9F4}
--------------------------------------------------------------------------------
文章分类
#m_artclg div.item 子项{color:#666666;font-size:12px}
#m_artclg div.item a 分类名称Q链接){color:#3399CC;font-size:12px}
#m_artclg div.item a:visited{color:#3399CC}
#m_artclg div.line 分界U{margin-top:5px;line-height:8px;border-top:1px solid #D2E9F4}
--------------------------------------------------------------------------------
最新评论区?br />#m_comment div.item 子项{color:#333333;font-size:12px}
#m_comment div.item a 发表人(链接Q{color:#3399CC;font-size:12px}
#m_comment div.item a:visited{color:#3399CC}
#m_comment div.item a.cnt 评论摘要Q链接){color:#333333;font-size:12px;text-
decoration:none}
#m_comment div.item a.cnt:visited{color:#333333;text-decoration:none}
#m_comment div.item a.cnt:hover{color:#333333;text-decoration:underline}
#m_comment div.line 分界U{margin-top:5px;line-height:8px;border-top:1px solid #D2E9F4}
--------------------------------------------------------------------------------
相册列表
#m_albumlist div.note{color:#333333;font-size:14px}
#m_albumlist div.desc 介{margin-bottom:12px;padding:3px 10px 3px 10px;line-
height:22px;background-color:#F2F2F2;font-size:14px}
#m_albumlist div.none 无照片提CZ息{padding:100px 0 100px 0;color:#333333;font-size:14px}
#m_albumlist div.line 分界U{margin-top:10px;line-height:16px;border-top:1px solid #D2E9F4}
#m_albumlist div.tit 照片标题{margin:6px 0 7px 0;color:#333333;font-size:14px}
#m_albumlist div.tit a 照片标题链接{color:#3399CC;font-size:14px}
#m_albumlist div.tit a:visited{color:#3399CC}
#m_albumlist span.count 照片数量{color:#666666;font-size:12px;font-weight:bold}
#m_albumlist span.size 照片寸{color:#999999;font-size:12px;font-family:Arial}
#m_albumlist a.act 操作区链接(如编辑、删除){color:#3399CC;font-size:12px}
#m_albumlist a.act:visited{color:#3399CC}
#m_albumlist a.page 늠链接{color:#0000CC;font-size:14px}
#m_albumlist a.page:visited{color:#0000CC}
#m_albumlist td.image{padding:5px;border:1px solid #999999;background:#FFFFFF}
--------------------------------------------------------------------------------
好友列表
#m_friend div.filter{margin-bottom:10px;padding-left:10px;padding-
top:10px;height:27px;line-height:27px}
#m_friend div.catalog{margin-bottom:10px;padding-left:10px;height:27px;line-
height:27px;background-color:#F2F2F2;font-size:14px}
#m_friend div.user{margin-top:4px;color:#333333;font-size:12px}
#m_friend div.user a 好友名称Q链接){color:#3399CC;font-size:12px}
#m_friend div.user a:visited{color:#3399CC}
#m_friend div.line 分界U{margin-top:10px;line-height:16px;border-top:1px solid #D2E9F4}
--------------------------------------------------------------------------------
讄讉Kl计、模板设|?br />#m_setting a 链接{color:#3399CC}
#m_setting a:visited{color:#3399CC}
#m_setting M{line-height:22px;color:#333333;font-size:14px}
#m_setting img.sel 模板预览图(选中状态){border:4px solid #FFDB7B}
#m_setting img.unsel 模板预览图(未选中状态){border:1px solid #D2D2D2}
#m_setting span.tit 模板标题名称{font-size:14px}
#m_setting span.usr 作者名{color:#666666}
#m_setting div.sel “当前模李쀝文字{padding-top:6px;font-size:14px;font-weight:bold}
#m_setting div.line 分界U{margin-top:20px;line-height:16px;border-top:1px solid #D2E9F4}
--------------------------------------------------------------------------------
pȝ公告
#m_sysinfo a 链接{color:#3399CC}
#m_sysinfo a:visited{color:#3399CC}
#m_sysinfo M{line-height:22px;color:#333333;font-size:14px}
#m_sysinfo span.new 最新{color:#FF0000;font-size:10px;font-family:Arial}
#m_sysinfo span.date 发布旉{color:#666666;font-size:14px}
--------------------------------------------------------------------------------
基本选项
#m_setbase M{color:#333333;font-size:14px}
#m_setbase td{color:#333333;font-size:14px}
#m_setbase div.line 分界U{margin-top:5px;line-height:8px;border-top:1px solid #D2E9F4}
--------------------------------------------------------------------------------
|友评论
#in_comment M{width:710px}
#in_comment div.tit 标题{margin-bottom:12px;color:#333333;font-size:14px;font-weight:bold}
#in_comment div.user 发表人名{margin-bottom:6px;color:#333333;font-size:12px}
#in_comment div.user a 发表人名Q链接){color:#3399CC;font-size:12px}
#in_comment div.user a:visited{color:#3399CC}
#in_comment div.user span.date 发表旉{color:#666666;font-size:12px}
#in_comment div.desc 评论内容{color:#333333;font-size:12px}
#in_comment div.line 分界U{margin-top:17px;line-height:17px;border-top:1px solid #D2E9F4}


TrackBack: http://www.mboba.com/art/517_16.htm

狼爱上狸 2006-11-15 10:59 发表评论
]]>
resin与servlet2.4版本问题http://www.tkk7.com/waterjava/archive/2006/11/13/80884.html狼爱上狸狼爱上狸Mon, 13 Nov 2006 05:43:00 GMThttp://www.tkk7.com/waterjava/archive/2006/11/13/80884.htmlhttp://www.tkk7.com/waterjava/comments/80884.htmlhttp://www.tkk7.com/waterjava/archive/2006/11/13/80884.html#Feedback0http://www.tkk7.com/waterjava/comments/commentRss/80884.htmlhttp://www.tkk7.com/waterjava/services/trackbacks/80884.html启动时出玎ͼ

Specification   version   2.3   of   package   javax.servlet,   Java   API   for   Servlets,   ver  
  on   2.3   is   not   compatible   with   Resin   3.0.*.     Resin   3.0.*   requires   version   2.4.  

解决办法Q?br />
下蝲tomcat最新版本,把c:\tomcat\common\lib下的servlet-api.jar,servlet.jar攑֜classpath 下,注意Qservlet-api.jar要放在前面,servlet.jar攑֜后面Q否则出C上错误,重新启动resinQ问题解冟?/p>

狼爱上狸 2006-11-13 13:43 发表评论
]]>
Apache2.0.49与Tomcat5.0.19整合http://www.tkk7.com/waterjava/archive/2006/11/06/79303.html狼爱上狸狼爱上狸Sun, 05 Nov 2006 22:33:00 GMThttp://www.tkk7.com/waterjava/archive/2006/11/06/79303.htmlhttp://www.tkk7.com/waterjava/comments/79303.htmlhttp://www.tkk7.com/waterjava/archive/2006/11/06/79303.html#Feedback0http://www.tkk7.com/waterjava/comments/commentRss/79303.htmlhttp://www.tkk7.com/waterjava/services/trackbacks/79303.html
软g下蝲载址
http://java.sun.com/j2se
http://www.apache.org/dist
假设所有的下蝲文g全部攑֜/tmp?
软g环境
· RedHat Linux 9.0
· Jakarta-tomcat-5.0.19.tar.gz
· Jakarta-tomcat-connnectors-jk2-src-current.tar.gz
· Httpd-2.0.19
· J2sdk-1_4_2_04-linux-i586-rpm.bin
?
· RedHat Linux 9.0
· Jakarta-tomcat-4.1.30。tar.gz
· Jakarta-tomcat-connnectors-4.1.30-src.tar.gz
· Httpd-2.0.19
· J2sdk-1_4_2_04-linux-i586-rpm.bin
在以上两U环境中试成功
要求
三个虚拟L分别对应三种不同服务Q每一个虚拟主机都能对h作出正确响应.
q个例了中,我的IP地址?0.0.0.10,对应的三个虚拟主机和所对目录如?
www.home.net /var/www/homenet(默认L)
www.customer1.it /var/www/customer1it
www.customer2net /var/www/customer2net

安装 JDK
注意: 下蝲jdk, 而非 jre!
[user@host tmp]#chmod 755 j2sdk-1_4_2_04-linux-i586-rpm.bin[user@host tmp]#./j2sdk-1_4_2_04-linux-i586-rpm.bin
[user@host tmp]#rpm -ivh j2sdk-1_4_2_04-fcs-linux-i586.rpm

j2sdk被自动安装在/usr/java目录?

[user@host tmp]#cp –R /usr/java/j2sdk1.4.2_04 /usr/local/sdk

也可以徏立符可接至/usr/java/j2sdk1.4.2_04/ q里Z方便Q我q接copy?usr/local/sdk?.
(或[user@host tmp]#ln –s /usr/java/j2sdk1.4.2_04 /usr/local/sdk)

现在告诉你的 bash shell d里查?java : ?/etc/profile.d目录?创徏一个名为java.sh 的文?内容如下Q?

[user@host] ~ $ vi /etc/profile.d/java.sh # set java environment

export JAVA_HOME=/usr/local/sdk
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=$JAVA_HOME/lib

保存Qƈ改变文g权限:
定 java.sh 可被M用户d:
[user@host] ~ $ #chmod 755 /etc/profile.d/java.sh
[user@host] ~ $ which java /usr/local/sdk/bin/java

使用which java可以得到java安装路径.
如果你已安装好java,可以忽略q一?

安装 Apache
下蝲最新的apache版本Qƈ安装和编?

[user@host]#tar zxvf httpd-2.0.49.tar.gz
[user@host]#cd httpd-2.0.49
[user@host]#./configure
--prefix=/usr/local/apache2 //指定apache安装目录
--enable-modules=so //以动态模式加载apache
[user@host]#make
[user@host]#make install

千万不要忘了—enable-module=so,因ؓ加蝲apache-tomcat connector时要用到.
使用下面命o启动apachce
[user@host] ~ $ #/usr/local/apache2/bin/apachectl start
打开览器查看apache 服务是否正常启动.http://localhost
一般可看到版本Papache默认使用80端口
安装 Tomcat
下蝲jakarta-tomcatQƈ安装.
[user@host tmp] ~ $ tar zxvf Jakarta-tomcat-5.0.19.tar.gz[user@host tmp] ~ $cp Jakarta-tomcat-5.0.19-src /usr/local/tomcat启动tomcat: [user@host tmp] ~ $ /usr/local/tomcat/bin/startup.sh

使用tomcat目录下的 bin/startup.sh ?shutdown.sh 来启动和停止 tomcat.在浏览器里用 http://localhost:8080 查看 tomcat 是否正常启动.如果不能启动Q查?/usr/local/tomcat/conf/ catalina.out 日志文gQ直臛_以启?
#########下面q段是我在测试过E中遇到的问?##############
如果不能启动Q可能是用户权限不够试增加用h更改权限看看
groupadd tomcat //增加l?
useradd -g tomcat -c "Tomcat User" -d /usr/local/tomcat tomcat
passwd tomcat
chown -R tomcat:tomcat /usr/local/tomcat
chmod a+x /usr/local/tomcat


配置 Tomcat 监听来自Apache 的ajp13 h

下面是一?server.xml 配置文g的例? h意目录和日志文g的位|是M的。你可以Ҏ你的需要更改主目录和日志文件的位置.
//以下是配|虚拟主机的server.xml文g(q里我用的是5.0.19的server.xml文g,4.1.30也大致相?

vi /usr/local/tomcat/conf/server.xml


<Server port="8005" shutdown="SHUTDOWN" debug="0">
<GlobalNamingResources>
########................q部份全局配置文gQؓ了方便我q略了.............######
########q部份在两个版里都不需要更?##########

</GlobalNamingResources>


Define the Tomcat Stand-Alone Service -->
<Service name="Catalina">
###########中间省略?q部份在两个版里也都不需要更?##########

<!-- Define a non-SSL Coyote HTTP/1.1 Connector on port 8080 -->
<Connector port="8080"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
debug="0" connectionTimeout="20000"
disableUploadTimeout="true" />
#########省略?..................
<!-- Define a Coyote/JK2 AJP 1.3 Connector on port 8009 -->
<Connector port="8009"
enableLookups="false" redirectPort="8443" debug="0"
protocol="AJP/1.3" />
.................
<!-- Define the top level container in our container hierarchy -->

##########从engine 开始定义默认主Z########
########defaulthost可指定Q一LQ这里我用www.home.net
<Engine name="Catalina" defaultHost="www.home.net" debug="0">
#########省略下面定义虚拟L.....................

<!-- Define the default virtual host
Note: XML Schema validation will not work with Xerces 2.2.
-->
##########定义虚拟L,更改host nameZ的主机名#######
#########更改appBaseZL对应的\?############
<Host name="www.home.net" debug="0" appBase="/var/www/homenet"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">

#########定义别名..................
<Alias>localhost </Alias>
<Alias>10.0.0.10/Alias>
#########..context path为空Qdocbase为空.###########
<Context path="" docBase="" debug="0" reloadable="true" crossContext="true">

########定义日志位置###########################
<logger className="org.apache.catalina.logger.FileLogger"
directory="logs" prefix="home_log." suffix=".txt"
timestamp="true"/>

</Host>


#########定义W二个虚拟主机www.customer1.it#########

<Host name="www.customer1.it" debug="0"
appBase="/var/www/customer1it"
unpackWARs="true" autoDeploy="true">

<Context path="" docBase="" debug="0"/>

<logger className="org.apache.catalina.logger.FileLogger"
directory="logs" prefix="cust1_log." suffix=".txt"
timestamp="true"/>

</Host>

<Host name="www.customer2.net" debug="0"
appBase="/var/www/customer2net"
unpackWARs="true" autoDeploy="true">

<Context path="" docBase="" debug="0"/>

<logger className="org.apache.catalina.logger.FileLogger"
directory="logs" prefix="cust2_log." suffix=".txt"
timestamp="true"/>

</Host>

</Engine>

</Service>


上面是一个server.xml配置的最低要?
试试重启tomcat,q检查catalina.out 文g直至tomcat 可以正确启动.如果启动中系l报告找Capr 可以试编?

/usr/local/tomcat/conf/jk2.properties q加入以下内?
vi /usr/local/tomcat/conf/jk2.properties
# list of needed handlers.
handler.list=channelSocket,request
# Override the default port for the channelSocket
channelSocket.port=8009

如果启动正常Q那么就可以q入下一步了.

配置apache虚拟L
apahce虚拟L怎么配置可查看apache howto文档
http://httpd.apache.org/docs-2.0/vhosts/


配置 Apache to talk to Tomcat
下蝲和你的apache 版本对应的jk2 文g?tmp目录? 如果找不到对应的jk2版本,可以通过 the tomcat-user 邮g列表询问或下载源文gq自q?q个怎么做这里就不多说了)
[user@host tmp] # tar zxvf Jakarta-tomcat-connectors-jk2-src-current.tar.gz
[user@host tmp] # cd Jakarta-tomcat-connectors-jk2.0.4-src
[user@host tmp] # cp –R Jakarta-tomcat-connectors-jk2-2.0.4-src /usr/local/jk2
[user@host tmp]#cd /usr/local/jk2/jk/native2
[user@host tmp]./buildconf.sh
[user@host tmp]./configure
--with-apxs2=/usr/local/apache2/bin/apxs //apache2使用apxs2
--with-tomcat=/usr/local/tomcat

[user@host]make

[user@host]cd /usr/local/jk2/jk/build/jk2/apache2 //可看到mod_jk2.so
[user@host]cp mod_jk2.so /usr/local/apache2/modules/mod_jk2.so


?usr/local/apache2/conf 目录下徏立一个名为workers2.properties 的文Ӟq编辑此文gQ内容如?
# only at beginnin. In production uncomment it out
[logger.apache2]
level=DEBUG

[shm]
file=/usr/local/apache/logs/shm.file
size=1048576

# Example socket channel, override port and host.
[channel.socket:localhost:8009]
port=8009
host=127.0.0.1

# define the worker
[ajp13:localhost:8009]
channel=channel.socket:localhost:8009

# Uri mapping
[uri:127.0.0.1/*.jsp]
worker=ajp13:localhost:8009

[uri:10.0.0.10/*.jsp]
worker=ajp13:localhost:8009

[uri:www.home.net/*.jsp]
worker=ajp13:localhost:8009

[uri:www.customer1.it/*.jsp]
worker=ajp13:localhost:8009

[uri:www.customer2.net/*.jsp]
worker=ajp13:localhost:8009
~辑q个文gQ改变你所需要的IP地址或域名,q保?.
~辑 http.conf q在Modules section 加入下面一?
LoadModule jk2_module modules/mod_jk2.so
保存 http.conf 重v apache. 现在它将加蝲jk2 q接器ƈ?workers2.properties 中读取配|文? 查日志ƈ认一切正?
启动 tomcat 试,q在你的览器里试加载一个HTML r: apache 返回一个没有问题的c现在试一试jsp ,它显C需要等待一D|? 如果q回一个错误,你须查一下\径和L名是否正?(仔细查DNS配置),tomcat和apache都将d你所讄L目录.查日志文?
所有工作正常进行下一?

中间有一个大U是tomcat的安全问题,q里׃说了

?httpd.conf中的JK 指示
除workers2.properties 文g名,你可以将Jk 指示加入 httpd.conf 文g (像你?jk ?webapp 方式一?. ?httpd.conf中编辑默认主机区域ƈ?lt;/VirtualHost>之前Q加入下面三?
<Location "/*.jsp">
JkUriSet worker ajp13:localhost:8009
</Location>
重启 Apache 试.
xQ一切都配置完了


附加Qhttpd.confQvi /usr/local/apache2/conf/httpd.conf)



### Section 1: Global Environment


#####前面都省略了...................


# Dynamic Shared Object (DSO) Support
##在动态模块区################q里加入mod_jk2.so

LoadModule jk2_module modules/mod_jk2.so


### Section 2: 'Main' server configuration
..........................
##########更改默认L?################
ServerName www.home.com
UseCanonicalName Off
##############更改默认L路径
DocumentRoot "/var/www/homenet"


#############加入默认首面index.jsp...............
DirectoryIndex index.html index.jsp

#<Location /server-info>
# SetHandler server-info
# Order deny,allow
# Deny from all
# Allow from .example.com
#</Location>
###########在默认主机加上这面这D,#####
<Location "/*.jsp">
JkUriSet worker ajp13:localhost:8009
</Location>


### Section 3: Virtual Hosts
#############配置虚拟L###########


NameVirtualHost 10.0.0.10

<VirtualHost 10.0.0.10>
ServerName www.home.net
ServerAlias www
ServerAlias localhost

ServerAlias 10.0.0.10

ServerAdmin sysmaster@arpa.veneto.it
DocumentRoot /var/www/homenet

ErrorLog logs/home.net-errorlog
CustomLog logs/home.net.log common

###########下面q段我是都加了,不知道只加在一个地方会怎么P没测q?
#####在默认虚拟主机未֊入如?#######

<Location "/*.jsp">
JkUriSet worker ajp13:localhost:8009
</Location>
</VirtualHost>

<VirtualHost 10.0.0.10>
ServerName www.customer1.it
ServerAdmin sysmaster@arpa.veneto.it
DocumentRoot /var/www/customer1it
ErrorLog logs/cust1-errorlog
</VirtualHost>

<VirtualHost *>
ServerName www.customer2.net
ServerAdmin sysmaster@arpa.veneto.it
DocumentRoot /var/www/customer2net
ErrorLog logs/cust2-errorlog
</VirtualHost>

现在保存Q重h有的服务

试是,可以分别copy /usr/local/tomcat/webapps下的文gC个虚拟主机目录下Q默认首里有很多jsp,serlet例子Q可以随便测?/span>


狼爱上狸 2006-11-06 06:33 发表评论
]]>
Apache与Tomcat的整?/title><link>http://www.tkk7.com/waterjava/archive/2006/11/06/79302.html</link><dc:creator>狼爱上狸</dc:creator><author>狼爱上狸</author><pubDate>Sun, 05 Nov 2006 22:31:00 GMT</pubDate><guid>http://www.tkk7.com/waterjava/archive/2006/11/06/79302.html</guid><wfw:comment>http://www.tkk7.com/waterjava/comments/79302.html</wfw:comment><comments>http://www.tkk7.com/waterjava/archive/2006/11/06/79302.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/waterjava/comments/commentRss/79302.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/waterjava/services/trackbacks/79302.html</trackback:ping><description><![CDATA[Tomcat是Sun和Apache合作产生出来的JSP Server, 它支持Servlet 和JSP. Tomcat本n可以作ؓWeb Server, 当处理静态页面时,Tomcat不如Apacheq?不象Apache一样可配置. Apache作ؓ最行的Web服务?它功能强?高效,但ƈ不支持JSP及servlet,所以通常的做法是把它们整合v?让Apache处理静态页?而把动态页面的h交给Tomcat处理,发挥各自的优? 通过在Apache中加载整合模块和q行讄QApachep够根据URLQ把不属于自qh转给Tomcat. 要让Apache和Tomcat联合工作,q必需有一个连接器(connector)把它们联pv? Connector对于性能、配|的方便性有很重要的影响,目前大致上有JK1.x,JK2, mod_webapp三种connector可以使用.JK使用比较q泛.JK2是JK1.x的改q,比较新。这三种Connector的配|方法大相径?在参考别人的整合Ҏ时一定要注意. 另外,Tomcat是用Java写的,所以你的系l必LJDK或JRE. 我的OS是Solaris9,用到的版本分别是Apache 2.0.47 ; Tomcat 5.0.27 ; Jk2 2.0.4; J2sdk 1.4.2_05.<br /><br />现在开? 好了,先去下蝲要用C软g,它们都是for free? Apache ,Tomcat ,Jk2在Apache的官方网站上都可以下的到. http://www.apache.org JDK 在Sun的网站上. http://www.sun.com 以下是我下蝲到的: httpd-2.0.47.tar.gz jakarta-tomcat-5.0.27.tar.gz jakarta-tomcat-connectors-jk2-src-current.tar.gz j2sdk-1_4_2_05-solaris-sparc.tar.Z (32bit? 先安装这 个再安装下面64bit? j2sdk-1_4_2_05-solaris-sparcv9.tar.Z(最后两个是Solaris的Package,对于其他的系l下可用,不过可以下蝲相应的版?) 安装Apache 对于Apache的安?有很多帖子都介绍q? 安装时注意一?一定要?--enable-so 加蝲so模块,q是整合要用到的. gzip –d httpd-2.0.47.tar.gz tar xvf httpd-2.0.47.tar cd httpd-2.0.47 ./configure ?with-layout=Apache2 -prefix=/path to install directory -enable-so make make install 好了,Apache的安装完成了.<br /><br />我的安装目录?usr/local/apahce2.修改apache的http.conf ServerName name OfYourServer Group nogroup q入/usr/local/apache2/bin 执行 ./apachectl start 启动apache (./apachectl stop 停止) 如果成功,通过览器就可以看到Apche的默认主了 http://ServerIp (httpd –l 可以列出已经加蝲的模? 安装JDK Java是SUN开发的,所以它在自家的OS上预装了java的运行环? java -version 可以看到java的版本号.Soaris9?.4.1_01a uncompress j2sdk-1_4_2_05-solaris-sparc.tar.Z tar xvf j2sdk-1_4_2_05-solaris-sparc.tar 解压后得到几个SUNW开头的文g,把它们放C个目录下 先要以前的java包删? pkgrm SUNWj3dmo SUNWj3man SUNWj3dev SUNWj3rt pkgrm SUNWlj3dv SUNWlj3rt (如果有的?pkginfo | grep SUNWj3 查看) d新包, pkgadd –d ./ (在刚才放解压的几个SUNW目录) 再安?4bit的包, 同样 uncompress j2sdk-1_4_2_05-solaris-sparcv9.tar.Z tar xvf j2sdk-1_4_2_05-solaris-sparcv9.tar pkgadd –d ./ 好了,安装完了. <br /><br />java –version ,看版本号变了! 详细的说?参考SUN|站上的文档! 安装Tomcat 在安装Tomcat之前,要设|两个环境变? JAVA_HOME =/usr/j2se CLASSPATH =/usr/j2se/lib:/usr/j2se/jre/lib (q是针对Solaris9?Solaris8 /usr/java1.2; Solaris7 /usr/java1.1) (其他的系l下,是你安装JDK的目? export JAVA_HOME CLASSPATH 有了,q两个变?Tomcat才能安装. jakarta-tomcat-5.0.27.tar.gz 是个二进制文件解压后解可? 我把它解压到?/usr/local/ src/jakarta-tomcat-5.0.27 Z个链?ln –s /usr/local/ src/jakarta-tomcat-5.0.27 /usr/local/tomcat q样以后升񔞮方便了,刚才的apache也应该这么做. 讄相应的变? CATALINA_HOME=/usr/local/tomcat CATALINA_BASE=/usr/local/tomcat export CATALINA_HOME CATALINA_BASE q入/usr/local/tomcat/bin ./startup.sh 启动tomcat 通过览?http://SeverIP:8080 看到了一只猫!(5.0才有?4.X没看? port 8080 是Tomcat的默认端?安装JK2 如果以上安装利的话,l箋安装JK2?先解压到/usr/local/src下得C, jakarta-tomcat-connectors-jk2-2.0.4-src q入目录, cd jk/native2 ./buildconf.sh (我没成功,跌? ./configure&--with-apxs2=/usr/local/apache2/bin/apxs& make make install (如果不成?把mod_jk2.so&拯到Apache得modules? cp&jk/build/jk2/apache2/mod_jk2.so& /usr/local/apache2/modules q有一个jkjni.so&,说是用来启动Apache 时自动启动Tomcat?如果׃拯?我没有看? cp&jk/build/jk2/apache2/jkjni.so&/usr/local/apache2/modules 整合 步入正题?整合涉及C4个配|文?Apache ?httpd.conf ?workers2.properties (创徏) Tomcat ?server.xml ?jk2.properties (不过q两个文?我没改过也成功了) &httpd.conf 在Apache中添加mod_jk2.so模块: LoadModule&jk2_module&modules/mod_jk2.so workers2.properties: q是我的workers2.properties #&Example&socket&channel,&override&port&and&host [channel.socket:localhost:8009] port=8009 host=127.0.0.1 #&define&the&worker [ajp13:localhost:8009] channel=channel.socket:localhost:8009 #&Uri&mapping [uri:/jsp-examples/*] worker=ajp13:localhost:8009 好了,重启Apache和Tomcat http://ServerIp/jsp-examples 如果看到的效果和 http://ServerIp:8080/jsp-examples 一样就说明整合成功. <img src ="http://www.tkk7.com/waterjava/aggbug/79302.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/waterjava/" target="_blank">狼爱上狸</a> 2006-11-06 06:31 <a href="http://www.tkk7.com/waterjava/archive/2006/11/06/79302.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JSP中的旉操作http://www.tkk7.com/waterjava/archive/2006/11/06/79300.html狼爱上狸狼爱上狸Sun, 05 Nov 2006 22:29:00 GMThttp://www.tkk7.com/waterjava/archive/2006/11/06/79300.htmlhttp://www.tkk7.com/waterjava/comments/79300.htmlhttp://www.tkk7.com/waterjava/archive/2006/11/06/79300.html#Feedback0http://www.tkk7.com/waterjava/comments/commentRss/79300.htmlhttp://www.tkk7.com/waterjava/services/trackbacks/79300.htmlhttp://www.chinabs.net/webj2ee/default.asp?infoid=400


l常看见jsp版里有h问时间操作的问题Q这些问题一般包括:取当前时_把一个指定的字符串时间{化成旉cdQ求两个旉之间的天敎ͼ求一D|间以前的旉Q求一D|间以后的旉Q在q里把q些问题汇M下?br /><%@  page  contentType="text/html;charset=gb2312"%>
<%@ page import="java.text.*"%>
<%@ page import="java.util.*"%>
<%
//字符串{化成旉cdQ字W串可以是Q意类型,只要和SimpleDateFormat中的格式一致即可)
java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("M/dd/yyyy hh:mm:ss a",java.util.Locale.US);
java.util.Date d = sdf.parse("5/13/2003 10:31:37 AM"); 
out.println(d);
out.println("<br>");
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String mDateTime1=formatter.format(d);
out.println(mDateTime1);
out.println("<br>");
out.println(d.getTime());
out.println("<br>");
//当前旉
Calendar cal  = Calendar.getInstance();
//  SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd  HH:mm:ss");
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd  HH:mm:ss G E D F w W a E F");
String mDateTime=formatter.format(cal.getTime());
out.println(mDateTime);
out.println("<br>");
//1q前日期
java.util.Date myDate=new java.util.Date(); 
long myTime=(myDate.getTime()/1000)-60*60*24*365;
myDate.setTime(myTime*1000);
String mDate=formatter.format(myDate);
out.println(mDate);
out.println("<br>");
//明天日期
myDate=new java.util.Date();
myTime=(myDate.getTime()/1000)+60*60*24;
myDate.setTime(myTime*1000);
mDate=formatter.format(myDate);
out.println(mDate);
out.println("<br>");
//两个旉之间的天?br />SimpleDateFormat myFormatter = new SimpleDateFormat("yyyy-MM-dd");
java.util.Date date= myFormatter.parse("2003-05-1");
java.util.Date mydate= myFormatter.parse("1899-12-30");
long  day=(date.getTime()-mydate.getTime())/(24*60*60*1000);
out.println(day);
out.println("<br>");
//加半时
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
java.util.Date date1 = format.parse("2002-02-28 23:16:00");
long Time=(date1.getTime()/1000)+60*30;
date1.setTime(Time*1000);
String mydate1=formatter.format(date1);
out.println(mydate1);
out.println("<br>");
//q月周求日期
SimpleDateFormat formatter2 = new SimpleDateFormat("yyyy-MM F E");
java.util.Date date2= formatter2.parse("2003-05 5 星期?);
SimpleDateFormat formatter3 = new SimpleDateFormat("yyyy-MM-dd");
String mydate2=formatter3.format(date2);
out.println(mydate2);
out.println("<br>");
//求是星期?br />mydate= myFormatter.parse("2001-1-1");
SimpleDateFormat formatter4 = new SimpleDateFormat("E");
String mydate3=formatter4.format(mydate);
out.println(mydate3);
out.println("<br>");
%>

狼爱上狸 2006-11-06 06:29 发表评论
]]>
用JSP实现一个日历程?/title><link>http://www.tkk7.com/waterjava/archive/2006/11/06/79299.html</link><dc:creator>狼爱上狸</dc:creator><author>狼爱上狸</author><pubDate>Sun, 05 Nov 2006 22:28:00 GMT</pubDate><guid>http://www.tkk7.com/waterjava/archive/2006/11/06/79299.html</guid><wfw:comment>http://www.tkk7.com/waterjava/comments/79299.html</wfw:comment><comments>http://www.tkk7.com/waterjava/archive/2006/11/06/79299.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/waterjava/comments/commentRss/79299.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/waterjava/services/trackbacks/79299.html</trackback:ping><description><![CDATA[ <table width="90%" align="center" border="0"> <tbody> <tr> <td class="text9pt">出处Q?a >http://www.chinabs.net/webj2ee/default.asp?infoid=257</a><br /><table align="right" border="0"><tbody><tr><td width="100%" height="10"><script language="javascript" src="http://usms.tom.com/wlqy_flash.js?tomuserid=9247"></script></td></tr></tbody></table><br /><!-- 昄Lq、月的日历,可选择不同的年、月。author:wildfield --> <br /><%@ page language="java" import="java.util.*" %> <br /><%! String year; <br />  String month; <br />%> <br /><% month=request.getParameter("month"); <br />  year =request.getParameter("year"); <br />%> <br /><html> <br /><head> <br /><meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <br /><title>?lt;/title> <br /><script Language="JavaScript"> <br /><!-- <br />function changeMonth() <br />{ <br />var mm="calendar.jsp?month="+document.sm.elements[0].selectedIndex+"&year=" <br />+<%=year%>; <br />window.open(mm,"_self"); <br />} <br />//--></script> <br /></head> <br /><%! String days[]; %> <br /><% <br />days=new String[42]; <br />for(int i=0;i<42;i++) <br /> { <br />  days[i]=""; <br /> } <br />%> <br /><% <br />Calendar thisMonth=Calendar.getInstance(); <br /> if(month!=null&&(!month.equals("null"))) <br />  thisMonth.set(Calendar.MONTH, Integer.parseInt(month) ); <br /> if(year!=null&&(!year.equals("null"))) <br />  thisMonth.set(Calendar.YEAR, Integer.parseInt(year) ); <br /> year=String.valueOf(thisMonth.get(Calendar.YEAR)); <br />month=String.valueOf(thisMonth.get(Calendar.MONTH)); <br />thisMonth.setFirstDayOfWeek(Calendar.SUNDAY); <br />thisMonth.set(Calendar.DAY_OF_MONTH,1); <br />int firstIndex=thisMonth.get(Calendar.DAY_OF_WEEK)-1; <br />int maxIndex=thisMonth.getActualMaximum(Calendar.DAY_OF_MONTH); <br />for(int i=0;i<maxIndex;i++) <br /> { <br />  days[firstIndex+i]=String.valueOf(i+1); <br /> } <br />%> <br /><body> <br /><FORM name="sm" method="post" action="calendar.jsp"> <br />  <%=year%>qb?<%=Integer.parseInt(month)+1%>?<br /><table border="0" width="168" height="81"> <br /><div align=center> <br /> <tr> <br />   <th width="25" height="16" bgcolor="#FFFF00"><font color="red">?lt;/font> <br /></th> <br />   <th width="25" height="16" bgcolor="#FFFF00">一</th> <br />   <th width="25" height="16" bgcolor="#FFFF00">?lt;/th> <br />   <th width="25" height="16" bgcolor="#FFFF00">?lt;/th> <br />   <th width="25" height="16" bgcolor="#FFFF00">?lt;/th> <br />   <th width="25" height="16" bgcolor="#FFFF00">?lt;/th> <br />   <th width="25" height="16" bgcolor="#FFFF00"><font color="green">?lt;/fon <br />t></th> <br /> </tr> <br /><% for(int j=0;j<6;j++) { %> <br /><tr> <br />     <% for(int i=j*7;i<(j+1)*7;i++) { %> <br />    <td width="15%" height="16" bgcolor="#C0C0C0" valign="middle" align="ce <br />nter"> <br />    <a href="jump.jsp?year=<%=year%>&month=<%=Integer.parseInt(month)+1%>&d <br />ate=<%=days[i]%>" target="main"><%=days[i]%></a></td> <br />   <% }  %> <br /> </tr> <br /><% }  %> <br /></div> <br /></table> <br /><table border="0" width="168" height="20"> <br /><tr> <br /> <td width=30%><select name="month" size="1" onchange="changeMonth()" > <br />   <option value="0">一?lt;/option> <br />   <option value="1">二月</option> <br />   <option value="2">三月</option> <br />   <option value="3">四月</option> <br />   <option value="4">五月</option> <br />   <option value="5">六月</option> <br />   <option value="6">七月</option> <br />   <option value="7">八月</option> <br />   <option value="8">九月</option> <br />   <option value="9">十月</option> <br />   <option value="10">十一?lt;/option> <br />   <option value="11">十二?lt;/option> <br /> </select></td> <br /><td width=28%><input type=text name="year" value=<%=year%> size=4 maxlength <br />=4></td> <br /><td>q?lt;/td> <br /><td width=28%><input type=submit value="提交"></td> <br /></tr> <br /></table> <br /></FORM> <br /><script Language="JavaScript"> <br /><!-- <br /> document.sm.month.options.selectedIndex=<%=month%>; <br />//--> <br /></script> <br /></body> <br /></html>   </td> </tr> </tbody> </table> <img src ="http://www.tkk7.com/waterjava/aggbug/79299.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/waterjava/" target="_blank">狼爱上狸</a> 2006-11-06 06:28 <a href="http://www.tkk7.com/waterjava/archive/2006/11/06/79299.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>GBK->Unicodehttp://www.tkk7.com/waterjava/archive/2006/11/05/79212.html狼爱上狸狼爱上狸Sun, 05 Nov 2006 09:03:00 GMThttp://www.tkk7.com/waterjava/archive/2006/11/05/79212.htmlhttp://www.tkk7.com/waterjava/comments/79212.htmlhttp://www.tkk7.com/waterjava/archive/2006/11/05/79212.html#Feedback0http://www.tkk7.com/waterjava/comments/commentRss/79212.htmlhttp://www.tkk7.com/waterjava/services/trackbacks/79212.htmlc:\jdk1.5\bin\> native2ascii -encoding GBK a.txt > custMessages_zh.properties

狼爱上狸 2006-11-05 17:03 发表评论
]]>
JAVAh~译工具Lhttp://www.tkk7.com/waterjava/archive/2006/11/05/79183.html狼爱上狸狼爱上狸Sun, 05 Nov 2006 04:19:00 GMThttp://www.tkk7.com/waterjava/archive/2006/11/05/79183.htmlhttp://www.tkk7.com/waterjava/comments/79183.htmlhttp://www.tkk7.com/waterjava/archive/2006/11/05/79183.html#Feedback0http://www.tkk7.com/waterjava/comments/commentRss/79183.htmlhttp://www.tkk7.com/waterjava/services/trackbacks/79183.html 现在企业中用java作ؓ开发语a的越来越多,但是代码的安全问题也很严重,对java的代码保护最常用的策略是对代码进行؜淆编译,有很多工具可以供大家选择?/font>

Author/Company Program Shrinking Obfuscation License
Eric Lafortune ProGuard x x Free (GPL)
Jochen Hoenicke Jode x x Free (GPL)
Hidetoshi Ohuchi Jarg x x Free (BSD)
NQ4 Joga x x Free (no source)
Alexander Shvets CafeBabe x x Free
Nate Nystrom Bloat x
Free
RiggsHill Software GenJar x
Free (Apache)
RetroLogic RetroGuard
x Free (LGPL)
Thorsten Heit JavaGuard
x Free (LGPL)
Patrick Mueller Mwobfu
x Free (GPL)
Bajie JCMP
x Free
yWorks yGuard
x Free
Dr. Java Marvin Obfuscator
x Free (no source)
IBM AlphaWorks JAX x x Commercial
PreEmptive DashOPro x x Commercial
Zelix KlassMaster x x Commercial
S5 Systems jPresto x x Commercial
CodingArt CodeShield x x Commercial
Plumb Design Condensity x x Commercial
Eastridge Technology Jshrink x x Commercial
Helseth JObfuscator x x Commercial
LeeSoftware Smokescreen Obfuscator x x Commercial
Vega Technologies JZipper x x Commercial
Sergey Sverdlov J.Class Optimizer x
Commercial
Force 5 JCloak
x Commercial
WingSoft WingGuard
x Commercial
JAMM Consulting ObfuscatePro
x Commercial
2LKit 2LKit Obfuscator
x Commercial
Duckware Jobfuscate
x Commercial

出处Q?a >http://www.zahui.com/html/6/11879.htm

狼爱上狸 2006-11-05 12:19 发表评论
]]>
Unicode是什么,UTF-8是什?/title><link>http://www.tkk7.com/waterjava/archive/2006/11/03/78856.html</link><dc:creator>狼爱上狸</dc:creator><author>狼爱上狸</author><pubDate>Fri, 03 Nov 2006 02:07:00 GMT</pubDate><guid>http://www.tkk7.com/waterjava/archive/2006/11/03/78856.html</guid><wfw:comment>http://www.tkk7.com/waterjava/comments/78856.html</wfw:comment><comments>http://www.tkk7.com/waterjava/archive/2006/11/03/78856.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/waterjava/comments/commentRss/78856.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/waterjava/services/trackbacks/78856.html</trackback:ping><description><![CDATA[一直在~码斚w要求不是很高Q所以对Unicode和UTF-8也不甚了解?br />  最q偶然翻CUTF-8的文章,感觉解释的非常繁杂,因此才想到重新写一简单易懂一点的? <p><br />  首先说明一下现在常用的一些编码方案:<br />  Q、在中国Q大陆最常用的就是GBK18030~码Q除此之外还有GBKQGB2312Q这几个~码的关pLq样的?br />最早制定的汉字~码是GB2312Q包?763个汉字和682个其它符?br />95q重C订了~码Q命名GBK1.0Q共收录?1886个符受?br />之后又推ZGBK18030~码Q共收录?7484个汉字,同时q收录了藏文、蒙文、维向ְ文等主要的少数民族文字,现在WINDOWSq_必需要支持GBK18030~码?/p><p>按照GBK18030、GBK、GB2312的顺序,Q种~码是向下兼容,同一个汉字在三个~码Ҏ中是相同的编码?/p><p>  Q、台湾,香港{地使用的是BIG5~码<br />  Q、日本:SJIS~码</p><p>  如果把各U文字编码Ş容ؓ各地的方aQ那么Unicode是世界各国合作开发的一U语a?br />  在这U语a环境下,不会再有语言的编码冲H,在同屏下Q可以显CZQ何语a的内容,q就是Unicode的最大好处?/p><p>  那么Unicode是如何编码的呢?其实非常单?br />  是世界上所有的文字用2个字节统一q行~码。可能你会问Q2个字节最多能够表C?5536个编码,够用吗?<br />  韩国和日本的大部分汉字都是从中国传播q去的,字型是完全一L?br />  比如Q“文”字QGBK和SJIS中都是同一个汉字,只是~码不同而已?br />  那样Q像q样l一~码Q2个字节就已经_容纳世界上所有的语言的大部分文字了?/p><p>  Unicode的学名是"Universal Multiple-Octet Coded Character Set"Q简UCؓUCS?br />  现在用的是UCS-2Q即Q个字节~码Q而UCS-4是ؓ了防止将来2个字节不够用才开发的。UCS-2也称为基本多文种q面?br />  UCS-2转换到UCS-4只是单的在前面加Q个字节0?br />  UCS-4则主要用于保存辅助^面,例如Unicode 4.0中的W二辅助q面<br />  20000-20FFF - 21000-21FFF - 22000-22FFF - 23000-23FFF - 24000-24FFF - 25000-25FFF -   26000-26FFF - 27000-27FFF - 28000-28FFF - 29000-29FFF - 2A000-2AFFF - 2F000-2FFFF <br />  d增加?6个辅助^面,由原先的65536个编码扩展至近100万编码?/p><p>  那么既然l一了编码,如何兼容原先各国的文字编码呢Q?br />  q个时候就需要codepage了?br />  什么是codepageQcodepage是各国的文字编码和Unicode之间的映表?br />  比如体中文和Unicode的映表是CP936Q点q里查看官方的映表?/p><p>  以下是几个常用的codepageQ相应的修改上面的地址的数字即可?br />codepage=936 体中文GBK<br />codepage=950 J体中文BIG5<br />codepage=437 国/加拿大英?br />codepage=932 日文<br />codepage=949 韩文<br />codepage=866 俄文<br />codepage=65001 unicode UFT-8</p><p>最后一?5001Q据个h理解Q应该只是一个虚拟的映射表,实际只是一个算法而已?/p><p>?36中随意取一行,例如Q?br />0x9993 0x6ABD #CJK UNIFIED IDEOGRAPH<br />前面的编码是GBK的编码,后面的是Unicode?br />通过查这张表Q就能简单的实现GBK和Unicode之间的{换?/p><p></p><p>  现在明白了UnicodeQ那么UTF-8又是什么呢Q又Z么会出现UTF-8呢?</p><p>  ASCII转换成UCS-2Q只是在~码前插入一?x0。用q些~码Q会包括一些控制符Q比??/Q这在UNIX和一些C函数中,会产生严重错误。因此可以肯定,UCS-2不适合作ؓUnicode的外部编码?/p><p>  因此Q才诞生了UTF-8。那么UTF-8是如何编码的Q又是如何解决UCS-2的问题呢Q?/p><p>例:<br />E4 BD A0        11100100 10111101 10100000<br />q是“你”字的UTF-8~码<br />4F 60          01001111 01100000<br />q是“你”的Unicode~码</p><p>按照UTF-8的编码规则,分解如下Qxxxx0100 xx111101 xx100000<br />把除了x之外的数字拼接在一P变成“你”的Unicode~码了?br />注意UTF-8的最前面Q个1Q表C整个UTF-8串是由3个字节构成的?br />l过UTF-8~码之后Q再也不会出现敏感字W了Q因为最高位始终??/p><p>以下是Unicode和UTF-8之间的{换关p表Q?br />U-00000000 - U-0000007F: 0xxxxxxx<br />U-00000080 - U-000007FF: 110xxxxx 10xxxxxx<br />U-00000800 - U-0000FFFF: 1110xxxx 10xxxxxx 10xxxxxx<br />U-00010000 - U-001FFFFF: 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx<br />U-00200000 - U-03FFFFFF: 111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx<br />U-04000000 - U-7FFFFFFF: 1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx</p><p>Unicode~码转换到UTF-8,单的把Unicode字节套到x中就变成UTF-8了?<br /><br /><br />出处Q?a >http://www.ii8888.com/Article_View.asp?id=871</a></p><img src ="http://www.tkk7.com/waterjava/aggbug/78856.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/waterjava/" target="_blank">狼爱上狸</a> 2006-11-03 10:07 <a href="http://www.tkk7.com/waterjava/archive/2006/11/03/78856.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java中如何正用字体编?/title><link>http://www.tkk7.com/waterjava/archive/2006/11/01/78500.html</link><dc:creator>狼爱上狸</dc:creator><author>狼爱上狸</author><pubDate>Wed, 01 Nov 2006 08:43:00 GMT</pubDate><guid>http://www.tkk7.com/waterjava/archive/2006/11/01/78500.html</guid><wfw:comment>http://www.tkk7.com/waterjava/comments/78500.html</wfw:comment><comments>http://www.tkk7.com/waterjava/archive/2006/11/01/78500.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/waterjava/comments/commentRss/78500.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/waterjava/services/trackbacks/78500.html</trackback:ping><description><![CDATA[ <p> <br />在Java~程中,中文字体~码隑ր了不少E序员,如果抓住了媄响Java中文昄的几个关键因素,问题迎刃而解?<br />Java是目前最行的面向对象的~程语言之一QJava支持UTF-8、ISO-8859-1、GBK{各U字体编码,可笔者发现Java中字体编码的问题仍难倒了不少E序员,|上虽然也有不少关于在Java中如何正显CZ文的文章Q但都不够全面,W者特意ȝ如下?<br />影响Java中字体编码正显C的有几个因? 1)数据库的q接方式; 2)|页中用的字体~码; 3)数据库里存放数据的字体编? 4)Java的缺省字体编码。如果在~程中遇C能正显CZ文时Q要先弄清楚以上几项所使用的字体编码,再分析找出原因,卛_解决问题?<br />众所周知QJSP是Java的一U,和网|养I而网也有自q中文~码pȝQ所以JSP处理中文要比UJava的类文g更ؓȝ。本文的试数据库是MySQL3.2Q数据库q接驱动是用org.gjt.mm.mysql.DriverQ这里主要讨论UTF-8和GBK的显C? GB2312是GBK的一个子集,Java中可以用GBK来代替GBpd)。我们先来研IJSP中字体编码问题, 下面W一到第六点是针对JSP?因ؓ从数据库里读Z文数据与写入中文数据有所区别Q咱们分别说明,前三Ҏ从读取数据库到显C在|页Q后三点是从|页输入数据到存入数据库)Q第七到W九炚w对纯Java的类文g?以下rs表示ResultSet的一个实例,是执行Select语句之后产生的数据集?<br />一、数据库q接方式使用UTF-8 <br />在连接数据库的驱动后面加上这句参数useUnicode=true&characterEncoding= <br />UTF-8Q例如jdbc:mysql://localhost/DBVF?autoReconnect=true&useUnicode= <br />true&characterEncoding=UTF-8Q从数据库里d中文昄在用GBK的JSP的网里Q如果数据库里存攄字体~码是UTF-8Q在JSP中?str=new String(rs.getBytes(1),"UTF-8")或者str=rs.getString(1)Q可以正显CZ文。如果数据库里存攄是GBK数据Q那么JSP中也要用str=new String(rs.getBytes(1),"GBK")来显C正的中文。值得注意的是如果面使用UTF-8Q数据库里存攄是UTF-8Q也可以用str=new String(rs.getBytes(1),"GBK")正确昄中文。如果网|UTF-8Q而数据库里存攄是GBKQ无法直接显CZ文,需?步{? str=new String(rs.getBytes(1),"GBK"); 再str=new String(str.getBytes("UTF-8"),"GBK")Q才可以正确昄中文?<br />二、数据库q接方式使用GBK <br />在连接数据库的驱动后面加上这句参数useUnicode=true&characterEncoding= <br />GBK,例如jdbc:mysql://localhost/DBVF?autoReconnect=true&UseUnicode=true& <br />characterEncoding=GBKQ从数据库里d中文Q显C在使用GBK的JSP的网里Q如果数据库里存攄字体~码是UTF-8Q在JSP中一定要使用 str=new String(rs.getBytes(1),"UTF-8")Q才正确昄中文。如果数据库里存攄是GBK数据Q那么JSP中也要用str=new String(rs.getBytes(1),"GBK") 或者直接用str=rs.getString(1)Q即可显C正的中文?如果|页是UTF-8Q而数据库里存攄是GBKQ只能用str=new String(rs.getString(1).getBytes("UTF-8"),"GBK")的方法来昄中文; 如果|页是UTF-8Q而数据库里存攄是UTF-8Q可用str=new String(rs.getBytes(1),"GBK") 或者rs.getString(1)Ҏ来显CZ文?<br />三、用缺省数据库q接方式 <br />q接数据库的驱动后面没有q句参数useUnicode=&characterEncoding=Q例如jdbc:mysql://localhost/DBVF?autoReconnect=trueQ没有参数useUnicode=true&characterEncodingQ表CZ用默认的ISO-8895-1~码?<br />1. 从数据库里读Z文,昄在GBK的网里。如果数据库里存攄字体~码是UTF-8Q在JSP|页中一定要使用语句 str=new String(rs.getBytes(1),"UTF-8") 或者str= new String(rs.getString(1).getBytes("ISO-8859-1"),"UTF-8")Q才可正显CZ文。如果数据库里存攄是GBK数据Q那么JSP中也要用str=new String(rs.getBytes(1),"GBK")或str=new String(rs.getString(1).getBytes("ISO-8859-1"),"GBK") 昄正确的中文?<br />2. 如果|页是UTF-8,不能直接正确昄GBKQ需?步{换,str=new String(rs.getBytes(1),"GBK")Q再str=new String(str.getBytes("UTF-8"),"GBK") 才可以正显CZ文。如果数据库里存的是UTF-8Q直接用str=new String(rs.getBytes(1),"GBK")或者str=new String(rs.getString(1).getBytes("ISO-8859-1"),"GBK")可以显CZ文了?<br />以上是读取数据库里中文正显C在|页上,下面三点是如何正存入数据库?<br />四、数据库q接方式使用UTF-8~码 <br />JSP中要把网输入的中文存入数据库,通常有一个提?Submit)的过E,是用str=request.getParameter("username")Q然后执行update或者insert语句来存入数据库。如何赋值给str很重要,而且q里中文输入与网|使用的字体编码有兟?<br />1?|页使用UTF-8Q用str= new String(request.getParameter("username").getBytes("ISO-8859-1"),"UTF-8")或者str= new String(request.getParameter("username").getBytes(),"UTF-8")Q都可以使得存到数据库里的数据是UTF-8~码?<br />2. |页使用GBKQ用str= new String(request.getParameter("username").getBytes(),"GBK")Q那么存入数据库的是UTF-8~码?<br />3. 值得注意的是使用UTF-8的数据库q接方式不能存得GBK?<br />五、数据库q接方式使用GBK~码 <br />1. 输入使用GBK|页Q存到数据库里是GBK的方? str= new String(request.getParameter("username").getBytes("ISO-8859-1"),"GBK") 或者str= new String(request.getParameter("username").getBytes(),"GBK")?<br />2. |页使用GBKQ想存入UTF-8到数据库里,要分2? 先str=new String(request.getParameter("username").getBytes(),"GBK")Q再str=new String(str.getBytes("UTF-8"),"GBK")卛_?<br />3. |页使用UTF-8Q而且使用str= new String(request.getParameter("username").getBytes("ISO-8859-1"),"GBK") 或者str= new String(request.getParameter("username").getBytes(),"UTF-8")Q那么存到数据库里的数据是UTF-8~码?<br />4. |页使用UTF-8Q而且使用str= new String(request.getParameter("username").getBytes("ISO-8859-1"),"UTF-8")Q那么存到数据库里的数据是GBK~码?<br />六、数据库q接方式使用~省Q即不用参数useUnicode和characterEncoding <br />1. |页使用GBKQ如果用str= request.getParameter("username")或者str= new String(request.getParameter("username").getBytes())Q那么在数据库里的数据是GBK码。网用UTF-8 和用str= request.getParameter("username")Q则存入数据库是UTF-8~码?<br />2. 如果使用str= new String(request.getParameter("username").getBytes("ISO-8859-1"))Q那么根据网|供的字体~码而存到数据库里,比如是UTF-8的网,那么存到数据库中是UTF-8~码Q如果用GBK|页Q那么存到数据库里的字就是GBK~码?<br />3. 如果使用str= new String(request.getParameter("username").getBytes("UTF-8"),"UTF-8")q一U组合能存到正确的数据外Q其他存到数据库里的数据则都是ؕ码或者错误码。在q个UTF-8l合的特例中Q网用的是GBKQ则存放到数据库里就是GBKQ网用UTF-8Q那么存到数据库里的是UTF-8?<br />4. |页是GBK的要存得UTF-8Q一定需?? company=new String(request.getParameter("company").getBytes(),"GBK")和company=new String(company.getBytes("UTF-8"))?<br />5. |页是UTF-8的,不能存得GBK在数据库里,一句话Q改变数据库q接方式不能存得GBK码?<br />以上所有的都是ZJSP|页和数据库交换数据Q下面讨Z下纯JAVA~程下的字体~码转换?<br />七、数据库q接方式使用UTF-8~码 <br />1. 数据库里的中文是UTF-8Q可以{换ؓGBK,但不能把GBK存入数据库?<br />2. 数据库是GBKQ如果{换ؓUTF-8Q用content=new String(rs.getBytes(2),"GBK")直接content存入数据库就可ؓUTF-8?<br />八、数据库q接方式使用GBK~码 <br />1. 数据库里的中文是UTF-8Q如果{换ؓGBKQ用content= new String(rs.getString(2).getBytes(),"UTF-8"),再直接用update或者insert语句插入到数据库Q即存得GBK。如果用content= new String(rs.getString(2).getBytes(),"GBK")或者content= new String(rs.getString(2).getBytes())Q再存入数据库即存得q是UTF-8~码?<br />2. 数据库里的中文是GBKQ如果{换ؓUTF-8Q用content= new String(rs.getString(2).getBytes("UTF-8"))或者content= new String(rs.getString(2).getBytes("UTF-8"),"GBK")Q再直接使用update或者insert语句插入到数据库,卛_得UTF-8?<br />3. 如果某个String是GBKQ要转换为UTF-8Q也是用content= new String(GBKstr.getBytes("UTF-8"))或者content= new String(GBKstr.getBytes("UTF-8"),"GBK"); 如果某个String是UTF-8Q要转换为GBKQ应该用new String(UTFstr.getBytes("GBK"),"UTF-8")?<br />九、数据库q接方式使用~省,即不跟参?<br />1. str2=new String(GBKstr.getBytes("UTF-8"),"ISO-8859-1")Q可以将数据库里的GBK~码转换为UTF-8?<br />2. dUTF-8然后存入UTF-8Q则用str1=new String(UTFstr.getBytes(),"ISO-8859-1")或者str1=new String(UTFstr.getBytes("GBK"),"ISO-8859-1")?<br />3. 不能实现数据库里的UTF-8转换为GBK?<br />如果采用UTF-8的数据库q接方式或者缺省数据连接方式,那么无法UTF-8转ؓGBKQ而GBK的数据库q接方式可以实现UTF-8和GBK的相互{换。徏议大安用GBK的数据连接方式。出处:<a >http://www.ccw.com.cn/cio/research/info/htm2005/20051118_13GHU.asp</a></p> <img src ="http://www.tkk7.com/waterjava/aggbug/78500.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/waterjava/" target="_blank">狼爱上狸</a> 2006-11-01 16:43 <a href="http://www.tkk7.com/waterjava/archive/2006/11/01/78500.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>如何得到汉字的unicode~码Q?/title><link>http://www.tkk7.com/waterjava/archive/2006/11/01/78484.html</link><dc:creator>狼爱上狸</dc:creator><author>狼爱上狸</author><pubDate>Wed, 01 Nov 2006 08:01:00 GMT</pubDate><guid>http://www.tkk7.com/waterjava/archive/2006/11/01/78484.html</guid><wfw:comment>http://www.tkk7.com/waterjava/comments/78484.html</wfw:comment><comments>http://www.tkk7.com/waterjava/archive/2006/11/01/78484.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/waterjava/comments/commentRss/78484.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/waterjava/services/trackbacks/78484.html</trackback:ping><description><![CDATA[ <font size="2">在jdk的bin目录如:D:\j2sdk1.4.2\bin><br />在cmd模式下键入:<br />D:\j2sdk1.4.2\bin>native2ascii<br />然后打汉字,回R׃出现unicode的编码了</font> <img src ="http://www.tkk7.com/waterjava/aggbug/78484.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/waterjava/" target="_blank">狼爱上狸</a> 2006-11-01 16:01 <a href="http://www.tkk7.com/waterjava/archive/2006/11/01/78484.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>把class打包成jar文ghttp://www.tkk7.com/waterjava/archive/2006/10/25/77109.html狼爱上狸狼爱上狸Wed, 25 Oct 2006 00:57:00 GMThttp://www.tkk7.com/waterjava/archive/2006/10/25/77109.htmlhttp://www.tkk7.com/waterjava/comments/77109.htmlhttp://www.tkk7.com/waterjava/archive/2006/10/25/77109.html#Feedback0http://www.tkk7.com/waterjava/comments/commentRss/77109.htmlhttp://www.tkk7.com/waterjava/services/trackbacks/77109.html
jar cvf mybean.jar cn

mybean.jar=文g?br />cn=总\?下面可能有\径a1,a2,a3{?br />

狼爱上狸 2006-10-25 08:57 发表评论
]]>
tomcat 5.0.28的问?/title><link>http://www.tkk7.com/waterjava/archive/2006/10/12/74879.html</link><dc:creator>狼爱上狸</dc:creator><author>狼爱上狸</author><pubDate>Thu, 12 Oct 2006 15:08:00 GMT</pubDate><guid>http://www.tkk7.com/waterjava/archive/2006/10/12/74879.html</guid><wfw:comment>http://www.tkk7.com/waterjava/comments/74879.html</wfw:comment><comments>http://www.tkk7.com/waterjava/archive/2006/10/12/74879.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/waterjava/comments/commentRss/74879.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/waterjava/services/trackbacks/74879.html</trackback:ping><description><![CDATA[ <p>1.配置成首늚问题<br /><br />          <Logger className="org.apache.catalina.logger.FileLogger"<br />                 directory="logs"  prefix="localhost_log." suffix=".txt"<br />            timestamp="true"/><br />        q里增加Q?br />         <Context path="" docBase="C:/Tomcat/webapps/myweb" debug="0" reloadable="true" crossContext="true"/><br /><br />  要说的是myweb/web-inf/web.xml的文件最好改下名Q我的从weblogic转过来,看了很多论坛Q因里没改名Q一直错误,q不知道怎回事,改了名就好了Q该是冲H问题?br /><br />2. q问题<br /><br />如果你没有ؕ码,不用看,有了qQ你成乱麻Qd要解冻I现在论坛有说q,有说那,只要解决了你的难题的Q就是好Ҏ?br /><br />我的问题Ӟ从数据库中读出没qQ写入出Cؕ码,我的Ҏ是:<br /><br />(1).在filters中做个SetCharacterEncodingFilter.java的bean文g?br /><br />package filters;</p> <p>import java.io.IOException;<br />import javax.servlet.Filter;<br />import javax.servlet.FilterChain;<br />import javax.servlet.FilterConfig;<br />import javax.servlet.ServletException;<br />import javax.servlet.ServletRequest;<br />import javax.servlet.ServletResponse;<br />import javax.servlet.UnavailableException;</p> <p>public class SetCharacterEncodingFilter implements Filter{<br />protected String encoding = null;<br />protected FilterConfig filterConfig = null;<br />protected boolean ignore = true;</p> <p>public void destroy() {<br /> this.encoding = null;<br /> this.filterConfig = null;<br />}</p> <p>public void doFilter(ServletRequest request, ServletResponse response,<br />FilterChain chain)<br />throws IOException, ServletException {</p> <p>// Conditionally select and set the character encoding to be used<br />if (ignore || (request.getCharacterEncoding() == null)) {<br /> String encoding = selectEncoding(request);<br /> if (encoding != null)<br />   request.setCharacterEncoding(encoding);<br />}</p> <p>// Pass control on to the next filter<br />chain.doFilter(request, response);<br />}</p> <p>public void init(FilterConfig filterConfig) throws ServletException {</p> <p>this.filterConfig = filterConfig;<br />this.encoding = filterConfig.getInitParameter("encoding");<br />String value = filterConfig.getInitParameter("ignore");<br />if (value == null)<br />this.ignore = true;<br />else if (value.equalsIgnoreCase("true"))<br />this.ignore = true;<br />else if (value.equalsIgnoreCase("yes"))<br />this.ignore = true;<br />else<br />this.ignore = false;<br />}</p> <p>protected String selectEncoding(ServletRequest request) {<br />return (this.encoding);<br />}<br />}<br /><br />~译上段代码Ӟ要在classpath中注册servlet.jar文g?br />(2).在web.xml中引入:<br /><br /><filter><br /> <filter-name>Set Character Encoding</filter-name><br /> <filter-class>filters.SetCharacterEncodingFilter</filter-class><br /> <init-param><br />  <param-name>encoding</param-name><br />  <param-value>GBK</param-value><br /> </init-param><br /></filter></p> <p><filter-mapping><br /> <filter-name>Set Character Encoding</filter-name><br /> <url-pattern>/*</url-pattern><br /></filter-mapping><br /><br />(3)在server.xml中修?br /><br />                port="8080"  maxThreads="150" minSpareThreads="25" maxSpareThreads="75"<br />               enableLookups="false" redirectPort="8443" acceptCount="100"<br />               debug="0" connectionTimeout="20000" <br />               disableUploadTimeout="true" URIEncoding="ISO-8859-1" /><br /><br />     有种说法是把URIEncoding="ISO-8859-1"可换成URIEncoding="GBK"Q自己测试,对的是道理?br /><br />最后顺便说下mysql-connector-java-5.0.3-bin.jar的jdbcq接代码Q与以前低版本的不一栗?br /><br />String sDBDriver="com.mysql.jdbc.Driver";<br />String sConnStr="jdbc:mysql://localhost:3306/gain?user=root&password=password";<br /><br /><br /></p> <img src ="http://www.tkk7.com/waterjava/aggbug/74879.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/waterjava/" target="_blank">狼爱上狸</a> 2006-10-12 23:08 <a href="http://www.tkk7.com/waterjava/archive/2006/10/12/74879.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>推荐几个Eclipse常用l典插ghttp://www.tkk7.com/waterjava/archive/2006/05/12/45792.html狼爱上狸狼爱上狸Fri, 12 May 2006 02:44:00 GMThttp://www.tkk7.com/waterjava/archive/2006/05/12/45792.htmlhttp://www.tkk7.com/waterjava/comments/45792.htmlhttp://www.tkk7.com/waterjava/archive/2006/05/12/45792.html#Feedback1http://www.tkk7.com/waterjava/comments/commentRss/45792.htmlhttp://www.tkk7.com/waterjava/services/trackbacks/45792.htmlJS和AS插gQhttp://sourceforge.net/projects/jseditor
XML插gQhttp://xmlbuddy.com
正则表达式测试插Ӟhttp://brosinski.com/stephan/archives/000028.php
XPath试插gQhttp://www.purpletech.com/xpe/index.jsp
更多Eclipse插gQhttp://eclipse-plugins.2y.net/eclipse/index.jsp

狼爱上狸 2006-05-12 10:44 发表评论
]]>
java中实现国际化http://www.tkk7.com/waterjava/archive/2006/05/10/45332.html狼爱上狸狼爱上狸Wed, 10 May 2006 00:30:00 GMThttp://www.tkk7.com/waterjava/archive/2006/05/10/45332.htmlhttp://www.tkk7.com/waterjava/comments/45332.htmlhttp://www.tkk7.com/waterjava/archive/2006/05/10/45332.html#Feedback0http://www.tkk7.com/waterjava/comments/commentRss/45332.htmlhttp://www.tkk7.com/waterjava/services/trackbacks/45332.html实现国际?
  ׃要实C英日文的昄Q采取以下步骤:

  开发和~译代码时指定字W集为UTF-8。Eclipse可以在项目属性中讄?使用qo器,如果所有请求都l过一个Servlet控制分配器,那么使用Servlet的filter执行语句Q将所有来自浏览器的请求(requestQ{换ؓUTF-8Q因为浏览器发过来的h包根据浏览器所在的操作pȝ~码Q可能是各种形式~码。request.setCharacterEncoding("UTF-8")。需要配|web.xml Ȁz该Filter。在JSP头部声明Q?

<%@ page contentType="text/html;charset= UTF-8" %>?br />
  在Jsp的html代码中,声明UTF-8:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

  讑֮数据库连接方式是UTF-8。例如连接MYSQL旉|URL如下Q?br />jdbc:mysql://localhost:3306/feedback_db?useUnicode=true&amp;characterEncoding=UTF-8
其他和外界交互时能够讑֮~码时就讑֮UTF-8Q例如读取文Ӟ操作XML{?

不同时区旉昄
  ׃客户端可能处于不同的时区Q因此应该显CZ同服务器旉。由于与客户端有养I因此需利用一DjavaScript代码Q从客户端获取其所在的时区偏移量。该偏移量是针对GMT旉而言的,也就是格林威L_以分钟ؓ单位?

function getTimezone()
{ 
	var d = new Date();	
  document[getNetuiTagName("loginForm", this)][getNetuiTagName("timezone", this)].value=
    d.getTimezoneOffset(); 
  
}

  获取之后他传回服务器端q保存在session中。显C时间时Ҏq个偏移量来计算昄的时间?



狼爱上狸 2006-05-10 08:30 发表评论
]]>
解决apache+weblogic中Connection_Refused错误的解军_?/title><link>http://www.tkk7.com/waterjava/archive/2006/04/29/43918.html</link><dc:creator>狼爱上狸</dc:creator><author>狼爱上狸</author><pubDate>Sat, 29 Apr 2006 00:29:00 GMT</pubDate><guid>http://www.tkk7.com/waterjava/archive/2006/04/29/43918.html</guid><wfw:comment>http://www.tkk7.com/waterjava/comments/43918.html</wfw:comment><comments>http://www.tkk7.com/waterjava/archive/2006/04/29/43918.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/waterjava/comments/commentRss/43918.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/waterjava/services/trackbacks/43918.html</trackback:ping><description><![CDATA[ <br />q是出现Apache桥错误的重要原因Q第4条最重要Q?br />解决办法如下Q?br />1. 增加Weblogic Server中Accept Block的数|默认gؓ50<br />   BEA提示?5%的速度q行增加Q直C出现Connection_Block的错误提C?/q里我将其调高至200<br />2. 讄Apache的Httpd.conf中,KeepAlive为On<br />3. 减小Windows 2000中TcpTimedWaitDelay旉Q默认情况下?40Q未讄的情况下也是q个数|<br />   此项讄需要到注册表如下位|进行设|?br />   HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\TcpTimedWaitDelay <br />   如果注册表中没有TcpTimedWaitDelayq个目QBEA提示增加q个目Qƈ讄为双字节QDWORDQ类?br />   数D|ؓ30 ~ 240之间卛_ //q里我将其设|ؓ120<br />4.调整一下w2k的MaxUserPort<br />  默认情况下,pȝ提供的端口值在 1024 ?5000 之间。MaxUserPort 参数讄可以用于出站q接的最高端口倹{要讄该数|请定位到 HKEY_LOCALMACHINE\SYSTEM  \CurrentControlSet\Services\Tcpip\Parameters、如果该值尚不存在,则添加数?MaxUserPortQƈ其讄?0xFFFE?br />5.最好能有一个测试环境。在调整参数的时候,用一些压力测试工具对pȝ刉一些负载。通过观察pȝ的反应,来决定参数的调整?br /><img src ="http://www.tkk7.com/waterjava/aggbug/43918.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/waterjava/" target="_blank">狼爱上狸</a> 2006-04-29 08:29 <a href="http://www.tkk7.com/waterjava/archive/2006/04/29/43918.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java的Build工具—Ant应用指南http://www.tkk7.com/waterjava/archive/2006/04/27/43513.html狼爱上狸狼爱上狸Thu, 27 Apr 2006 03:23:00 GMThttp://www.tkk7.com/waterjava/archive/2006/04/27/43513.htmlhttp://www.tkk7.com/waterjava/comments/43513.htmlhttp://www.tkk7.com/waterjava/archive/2006/04/27/43513.html#Feedback0http://www.tkk7.com/waterjava/comments/commentRss/43513.htmlhttp://www.tkk7.com/waterjava/services/trackbacks/43513.html本文以最新发布的Ant 1.5.1ZQ介l这ƾ优U的Build工具的安装配|、基本应用和一些高U话题。最新的Ant下蝲地址?http://jakarta.apache.org/ant/ ?

Ant是一U基于Java的Build工具。理Z来说Q它有些cM于C中的makeQ但比make优越。现在存在的大多数Build工具Q如make、gnumake、nmake、jam{都存在q样或那L不Q比如依赖于特定的^台、配|文件过于复杂或者对格式无法查而容易出错等。与q些工具相比较,Ant的两个特性决定了它是一ƾ优U的Build工具Q?

1. ZJava的实现。具有良好的跨^台性,同时可以通过增加新的JavacL扩展Ant的功能,而无需M解不同^C不同的脚本语a?

2.ZXML的配|文件。Ant以XML树来描述Target/Task的关p,文gl构清晰、易L写,q且利用XMLҎ式的控制来避免由于配|文件的错误造成的Build操作p|?

安装与配|?

Ant的安装非常简单,把从|上下蝲的jakarta-ant-1.5.1-bin.zip解开C个目录下卛_Q以下假定安装在目录D:\jakarta-ant-1.5.1Q。接下来需要进行环境变量配|:

SET ANT_HOME=D:\jakarta-ant-1.5.1 //注意是Ant的安装目录,不是bin子目?br />SET PATH=%PATH%;%ANT_HOME%\bin;


在配|环境变量之前,L认已l正设|了JAVA_HOMEpȝ变量。输入ant命oQ看到如下输明已成功安装了Ant工具Q?

Buildfile: build.xml does not exist!
Build failed


提示信息表明在当前目录不存在build.xml配置文gQ但q本w已l说明Ant成功q行了?

快速入?

下面用一个最单也是最l典的例?HelloWorld来感受一下Ant吧?

//HelloWorld.java
package com.sharetop.antdemo;
public class HelloWorld {
public static void main( String args[] ) {
System.out.println("Hello world. ");
}
}


要让Ant~译q个文gQ首先需要编写一个Build配置文g。在一般情况下Q这个文件被命名为build.xml?

<?xml version="1.0" encoding="UTF-8" ?>
<project name="HelloWorld" default="run" basedir="." >
<property name="src" value="src"/>
<property name="dest" value="classes"/>
<property name="hello_jar" value="hello.jar" />
<target name="init">
<mkdir dir="${dest}"/>
</target>
<target name="compile" depends="init">
<javac srcdir="${src}" destdir="${dest}"/>
</target>
<target name="build" depends="compile">
<jar jarfile="${hello_jar}" basedir="${dest}"/>
</target>
<target name="run" depends="build">
<java classname="com.sharetop.antdemo.HelloWorld" classpath="${hello_jar}"/>
</target>
</project>


来看一下这个文件的内容Q它描述了以下信息:工程的名字ؓHelloWorldQ工E有四个targetQ分别是init、compil、build和runQ缺省是run。compile只有一个Q务javacQ源文g位于src目录下,输出的类文g要放在classes目录下。build的Q务是jarQ生成的jar文g为hello.jarQ它打包时以classes为根目录。而run则是执行q个HelloWorldc,用hello.jar作ؓclasspath。这四个target之间有一个依赖关p,q种关系用depends来指定。即如果Target A依赖于Target BQ那么在执行Target A之前会首先执行Target B。所以从下面q行~省TargetQrunQ的输出看,q四个Target的执行顺序是Qinit→compile→build→run。文件目录结构如?所C。HelloWorld.java文g在src\com\sharetop\antdemo子目录下?br />在命令行输入命oQantQ然后运行,可以看到如下输出Q?

如果配置文g名不是build.xmlQ比如是build_front.xmlQ那么,可以使用-buildfile命o参数指定Q?

G:\myDoc\ant_demo>ant -buildfile build_front.xml


也可以单独执行指定的某个targetQ比如,只编译不打包执行Q可以用下面输入命令即可:

G:\myDoc\ant_demo>ant compile

在相应的目录下会扑ֈ~译出的HelloWorld.class文g?

再看看上面的build.xml配置文gQ文件开头定义了3个属性,分别指定了源文g输出路径、类文g输出路径和生成的Jar文g名,后面对这些\径的引用都通过一?{property name}来引用。所以,要注意这样一个原则“目录的定义与目录的引用应该分开”?
基本应用

建立工程的目?

一般要Ҏ工程的实际情冉|建立工程的目录结构。但是,有一些比较通用的组lŞ式可供参考,比如所有的jakarta目都用类似的目录l构。下面让我们来看一下这U目录结构的特点?

?

目录 文g
bin 公共的二q制文gQ以及运行脚?
build 临时创徏的文Ӟ如类文g{?
dist 目标输出文gQ如生成Jar文g{?
doc/javadocs 文档?
lib 需要导出的Java?
src 源文?

对于一个简单的工程Q一般包括表1的几个目录。其中bin、lib、doc和src目录需要在CVS的控制之下。当然在q样的目录结构上Q也可以做一些调_例如Q可以徏立一个extra目录来放|需要发布的Jar文g、Inf文g及图像文件等。同P如果开发Web应用可以建立一个Web目录攄JSP、HTML{文件?

如果我们开发的是一个比较复杂的目Q包括多个子目Qƈ且各个子目是由不同的开发h员来完成的,那么要如何来设计它的目录l构Q首先有一Ҏ需要确定的Q不同的子项目应该拥有不同的Build文gQƈ且整个项目也应该有一个ȝBuild文g。可以通过Antd或是AntCalld调用子项目的Build文gQ如下例Q?

<target name="core" depends="init">
<ant dir="components" target="core"/>
<ant dir="waf/src" target="core"/>
<ant dir="apps" target="core"/>
</target>


在各个子目的耦合不是非常紧密的情况下Q各个子目应该有各自独立的目录l构Q也是说它们可以有自己的src、doc、build、dist{目录及自己的build.xml文gQ但是可以共享lib和bin目录。而对于那些耦合紧密的子目Q则推荐使用同一个src目录Q但是不同的子项目有不同的子目录Q各个子目的build.xml文g可以攑֜根目录下Q也可以Ud各个子项目的目录下?

~写Build文g

要用好Ant工具Q关键是要编写一个build.xml文g。要~写Z个结构良好、灵zd扩展的Build文gQ有两个问题要考虑Q一是了解Build文g的基本结构,二是了解Ant定义的大量Q务?

Ant的Build文g是一个标准的XML文gQ它包含一个根节点ProjectQ每个Project定义了至一个或多个TargetQ每个Target又是一pdTask的集合。它们之间的关系如图2所C?br />每个Task是一D可被执行的代码Q比如,前例中的javac、jar是两个最常用的Task。Ant定义了大量的核心TaskQ我们要考虑的第二个问题正是如何L握这大量的Task。其实唯一的方法就是边学习边实践,q方面最好的参考就是官方的Ant使用手册?

外部文g的?

使用外部的Property文g可以保存一些预讄的公共属性变量。这些属性可以在多个不同的Build文g中用?

可以一个外部的XML文g导入Build文g中,q样多个目的开发者可以通过引用来共享一些代码,同样Q这也有助于Build文g的重用,CZ代码如下所C:

<!DOCTYPE project [
<!ENTITY share-variable SYSTEM "file:../share-variable.xml">
<!ENTITY build-share SYSTEM "file:../build-share.xml">
]>
<project name="main" default="complie" basedir=".">
&share-variable;
&build-share;
... ...


在J2EE目中的应用

只要掌握了Ant的用方法,在J2EE目中的应用与在其它目中的应用q没有太大的不同Q但是仍有几Ҏ需要注意的?

一是要清楚War和Jar文g的目录结构,主要是War的配|文件web.xml文g的位|和EJB的配|文Ӟejb-jar.xml和weblogic-ejb-jar.xml{)的位|,在调用Jard打包文g时一定要记得把它们也包含q来。一般在~译之前p注意把这些需打包的文件拷入相应目录下。二是在J2EE目中可能会涉及C些特D的dQ比如在Weblogic中会调用ejbc预编译EJB的代码存根,或者需要在Ant中同时发布Jar到相应的服务器中{。可以用两种途径实现q些dQ一是扩展Antd实现q些dQ二是直接用Javad来执行这些命令。下面是打包、发布一个EJB的build.xml配置文g片断Q代码如下:

<target name="deploy_HelloEJB" depends="compile">
<delete dir="${temp}/ejb_make"/> <!-- 首先删除临时目录 -->
<delete file="${temp}/helloEJB.jar"/>
<!-- 删除WebLogic域中老版本的EJB -->
<delete file="${weblogic.deploy.dest}/helloEJB.jar"/>
<!-- 创徏META-INF目录Q放|ejb-jar.xml和weblogic-ejb-jar.xml -->
<mkdir dir="${temp}/ejb_make/META-INF"/>
<!-- 拯ejb-jar.xml和weblogic-ejb-jar.xml C时目?->
<copy todir="${temp}/ejb_make/META-INF">
<fileset dir="etc/baseinfo">
<include name="*.xml"/>
</fileset>
</copy>
<!-- 拯所有的helloEJBcd临时目录 -->
<copy todir="${temp}/ejb_make/">
<fileset dir="${dest.classes}/"> <!-- dest.classes是输出的cL件目?-->
<include name="${dest.classes}/helloEJB/**"/>
</fileset>
</copy>
<!-- 所有这些文件打包成helloEJB.jar -->
<jar jarfile="${temp}/helloEJB.jar" basedir="${temp}/ejb_make"/>
<!-- q行weblogic.ejbc~译 -->
<java classpath="${wl_cp}" classname="weblogic.ejbc" fork="yes" >
<classpath>
<fileset dir="lib">
<include name="*.jar" />
</fileset>
</classpath>
<arg value="${temp}/helloEJB.jar" />
<arg value="${temp}/helloEJB_deploy.jar" />
</java>
<!-- 拯/发布到WebLogic的{DOMAIN}\applications目录 -->
<copy file="${temp}/helloEJB_deploy.jar" todir="${weblogic.deploy.dest}"/>
</target>


用Ant配合JUnit实现单元试

Ant 提供了JUnitd,可以执行单元试代码。如何用JUnitQ以及如何编写测试用?TestCase)Q感兴趣的读者可以参阅JUnit的相x档。在Ant中用JUnit的方法非常简单,首先需要把junit.jar拷入ANT_HOME\lib下,认在这个目录下有optional.jarQ因为JUnit是Ant的扩展Q务,需要引用这个扩展包。然后就是在Build文g中加入JUnit的Q务,代码如下Q?

<target name="run" depends="client">
<junit printsummary="yes" fork="yes" haltonfailure="yes">
<classpath>
<pathelement location="client.jar" />
</classpath>
<formatter type="plain" />
<test name="com.sharetop.antdemo.HelloWorldTest" />
</junit>
</target>


高话题

为Ant开发扩展Q?

为Ant实现扩展d其实是非常容易的Q只需按照以下几个步骤卛_Q?

1. 创徏一个Javacȝ承org.apache.tools.ant.Taskc;

2. Ҏ个属性实现setҎ。Ant会根据需要自动完成类型{换;

3. 如果扩展的Q务需要嵌套其它的TaskQ那么这个Javacd需实现接口org.apache.tools.ant.TaskContainerQ?

4. 如果扩展的Q务要支持TextQ需要增加一个方法void addText(String)Q?

5. Ҏ个嵌套的元素Q实现create、add ?addConfigured ҎQ?

6. 实现public void executeҎQ?

7. 在build.xml文g中?<taskdef> 来引用自定义的Task?

下面以一个简单的例子来说明如何ؓAnt增加一个hellodQ它可以q箋打印多条信息Q打印的ơ数由属性count指定Q而打印的内容则由它内嵌的一个helloinfod的message属性指定,看上去这非常cMJSP中自定义标签的一些概念,实现代码如下Q?

//HelloInfoTask.java
package com.sharetop.antdemo;
import org.apache.tools.ant.*;
public class HelloInfoTask {
private String msg;
public void execute() throws BuildException {
System.out.println(msg);
}
public void setMessage(String msg) {
this.msg = msg;
}
}


下面是外部Taskcȝ代码Q?

//HelloTask.java
package com.sharetop.antdemo;
import org.apache.tools.ant.*;
public class HelloTask extends Task implements org.apache.tools.ant.TaskContainer
{
private Task info;
private int count;
public void execute() throws BuildException {
for(int i=0;i<count;i++)
info.execute();
}
public void setCount(int c){
this.count=c;
}
public void addTask(Task t){
this.info=t;
}
}


实现了这两个TaskQ在build.xml文g中定义它的task nameQ就可以在Target中执行它了。如果你不想使用 <taskdef> 标签来定义TaskQ也可以通过修改default.properties文g来实现引入新TaskQ这个文件位于org.apache.tools.ant.taskdefs 包里。下例是一个?标签来引入新Task的Build文g部分Q?

<target name="hello" depends="client">
<taskdef name="hello"
classname="com.sharetop.antdemo.HelloTask" classpath="client.jar"/>
<taskdef name="helloinfo"
classname="com.sharetop.antdemo.HelloInfoTask" classpath="client.jar"/>
<hello count="3" >
<helloinfo message="hello world" />
</hello>
</target>

每个Task是一D可被执行的代码Q比如,前例中的javac、jar是两个最常用的Task。Ant定义了大量的核心TaskQ我们要考虑的第二个问题正是如何L握这大量的Task。其实唯一的方法就是边学习边实践,q方面最好的参考就是官方的Ant使用手册?

外部文g的?

使用外部的Property文g可以保存一些预讄的公共属性变量。这些属性可以在多个不同的Build文g中用?

可以一个外部的XML文g导入Build文g中,q样多个目的开发者可以通过引用来共享一些代码,同样Q这也有助于Build文g的重用,CZ代码如下所C:

<!DOCTYPE project [
<!ENTITY share-variable SYSTEM "file:../share-variable.xml">
<!ENTITY build-share SYSTEM "file:../build-share.xml">
]>
<project name="main" default="complie" basedir=".">
&share-variable;
&build-share;
... ...


在J2EE目中的应用

只要掌握了Ant的用方法,在J2EE目中的应用与在其它目中的应用q没有太大的不同Q但是仍有几Ҏ需要注意的?

一是要清楚War和Jar文g的目录结构,主要是War的配|文件web.xml文g的位|和EJB的配|文Ӟejb-jar.xml和weblogic-ejb-jar.xml{)的位|,在调用Jard打包文g时一定要记得把它们也包含q来。一般在~译之前p注意把这些需打包的文件拷入相应目录下。二是在J2EE目中可能会涉及C些特D的dQ比如在Weblogic中会调用ejbc预编译EJB的代码存根,或者需要在Ant中同时发布Jar到相应的服务器中{。可以用两种途径实现q些dQ一是扩展Antd实现q些dQ二是直接用Javad来执行这些命令。下面是打包、发布一个EJB的build.xml配置文g片断Q代码如下:

<target name="deploy_HelloEJB" depends="compile">
<delete dir="${temp}/ejb_make"/> <!-- 首先删除临时目录 -->
<delete file="${temp}/helloEJB.jar"/>
<!-- 删除WebLogic域中老版本的EJB -->
<delete file="${weblogic.deploy.dest}/helloEJB.jar"/>
<!-- 创徏META-INF目录Q放|ejb-jar.xml和weblogic-ejb-jar.xml -->
<mkdir dir="${temp}/ejb_make/META-INF"/>
<!-- 拯ejb-jar.xml和weblogic-ejb-jar.xml C时目?->
<copy todir="${temp}/ejb_make/META-INF">
<fileset dir="etc/baseinfo">
<include name="*.xml"/>
</fileset>
</copy>
<!-- 拯所有的helloEJBcd临时目录 -->
<copy todir="${temp}/ejb_make/">
<fileset dir="${dest.classes}/"> <!-- dest.classes是输出的cL件目?-->
<include name="${dest.classes}/helloEJB/**"/>
</fileset>
</copy>
<!-- 所有这些文件打包成helloEJB.jar -->
<jar jarfile="${temp}/helloEJB.jar" basedir="${temp}/ejb_make"/>
<!-- q行weblogic.ejbc~译 -->
<java classpath="${wl_cp}" classname="weblogic.ejbc" fork="yes" >
<classpath>
<fileset dir="lib">
<include name="*.jar" />
</fileset>
</classpath>
<arg value="${temp}/helloEJB.jar" />
<arg value="${temp}/helloEJB_deploy.jar" />
</java>
<!-- 拯/发布到WebLogic的{DOMAIN}\applications目录 -->
<copy file="${temp}/helloEJB_deploy.jar" todir="${weblogic.deploy.dest}"/>
</target>


用Ant配合JUnit实现单元试

Ant 提供了JUnitd,可以执行单元试代码。如何用JUnitQ以及如何编写测试用?TestCase)Q感兴趣的读者可以参阅JUnit的相x档。在Ant中用JUnit的方法非常简单,首先需要把junit.jar拷入ANT_HOME\lib下,认在这个目录下有optional.jarQ因为JUnit是Ant的扩展Q务,需要引用这个扩展包。然后就是在Build文g中加入JUnit的Q务,代码如下Q?

<target name="run" depends="client">
<junit printsummary="yes" fork="yes" haltonfailure="yes">
<classpath>
<pathelement location="client.jar" />
</classpath>
<formatter type="plain" />
<test name="com.sharetop.antdemo.HelloWorldTest" />
</junit>
</target>


狼爱上狸 2006-04-27 11:23 发表评论
]]>
ANT 下蝲,ant的配?/title><link>http://www.tkk7.com/waterjava/archive/2006/04/27/43510.html</link><dc:creator>狼爱上狸</dc:creator><author>狼爱上狸</author><pubDate>Thu, 27 Apr 2006 03:11:00 GMT</pubDate><guid>http://www.tkk7.com/waterjava/archive/2006/04/27/43510.html</guid><wfw:comment>http://www.tkk7.com/waterjava/comments/43510.html</wfw:comment><comments>http://www.tkk7.com/waterjava/archive/2006/04/27/43510.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.tkk7.com/waterjava/comments/commentRss/43510.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/waterjava/services/trackbacks/43510.html</trackback:ping><description><![CDATA[下蝲http://www.apache.org/dist/ant/binaries下的apache-ant-1.6.1-bin.zip    <br />接压安装? <br /> <br />ant的配法:  <br />1。解压ant的包到本地目录? <br />2。在环境变量中设|ANT_HOMEQgؓ你的安装目录? <br />3。在环境变量中设|JAVA_HOMEQgؓ你的jdk安装目录? <br />4。把ANT_HOME/bin加到你系l的path目录中去? <br /> <br />在cmd模式下输? ant  -version回RQ看到输明配|成功。 ?img src ="http://www.tkk7.com/waterjava/aggbug/43510.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/waterjava/" target="_blank">狼爱上狸</a> 2006-04-27 11:11 <a href="http://www.tkk7.com/waterjava/archive/2006/04/27/43510.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>apache的日常维?/title><link>http://www.tkk7.com/waterjava/archive/2006/04/21/42357.html</link><dc:creator>狼爱上狸</dc:creator><author>狼爱上狸</author><pubDate>Fri, 21 Apr 2006 08:45:00 GMT</pubDate><guid>http://www.tkk7.com/waterjava/archive/2006/04/21/42357.html</guid><wfw:comment>http://www.tkk7.com/waterjava/comments/42357.html</wfw:comment><comments>http://www.tkk7.com/waterjava/archive/2006/04/21/42357.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/waterjava/comments/commentRss/42357.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/waterjava/services/trackbacks/42357.html</trackback:ping><description><![CDATA[ <strong>一:Apache的主要缺?br /></strong>1:HTTP拒绝服务<br />2:~冲区溢?br />3:被攻击者获得root权限<br />4:配置文g的保?br />5:服务器访问控?br />6:密码保护<br />7:Apache日志文g<br />8:安全相关的指?br />9:SSI(Server-Side Includes)的安?br />10:其它安全工具<br />11:ȝ<br /><br />lD<br /><br /><br />本文讨论UNIXq_下,Apache WEB服务器安装和配置的安全问题。我们假定阅L文的pȝ理员已l针对自q点的情况选择了相关的模块Qƈ且能够进行配|、创建和排除故障。本文的主要目的是帮助你历一个安全的Apache歪脖(web icon_razz.gif)服务器?br /><br />在众多的Web服务器品中QApache是应用最为广泛的一个品,同时也是一个设计上非常安全的程序。但是,同其它应用程序一PApache也存在安全缺陗本文主要针对三个安全缺陯行讨论,包括Q用HTTP协议q行的拒l服务攻?denial of service)?~冲区溢出攻M及被d者获得root权限。注意:合理的配|能够保护Apache免遭多种dQ但是在|络层上的拒l服务攻d不是调整Apache的配|所能够防止的。本文所涉及的是使用HTTP(应用?协议q行的拒l服务攻凅R?br /><br /><b><font color="#003399">一:Apache的主要缺?br /></font></b><br /><font color="#cc3300">1:HTTP拒绝服务</font><br /><br />d者通过某些手段使服务器拒绝对HTTP应答。这会Apache对系l资?CPU旉和内?需求的剧增Q最l造成pȝ变慢甚至完全瘫痪?br /><br /><span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体"><font color="#cc3300">2:~冲区溢?/font></span><span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体"><br /><br />d者利用程序编写的一些缺P使程序偏L常的程。程序用静态分配的内存保存h数据Q攻击者就可以发送一个超长请求ɾ~冲区溢出。比如一些Perl~写的处理用戯求的|关脚本。一旦缓冲区溢出Q攻击者可以执行其恶意指o或者ɾpȝ宕机?br /><br /></span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体"><font color="#cc3300">3:被攻击者获得root权限<br /></font></span><span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体"><br />Apache一般以root权限q行(父进E?Q攻击者通过它获得root权限Q进而控制整个系l?br />获得最新的Apache<br />使用最安全版本对于加强Apache Web服务器的安全是至关重要的?br />你可以从Apache的官方网站http://www.apache.org获得Apache的最新版本?br /><br /></span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体"><font color="#cc3300">4:配置文g的保?br /></font></span><span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体"><br />Apache Web服务器有三个主要的配|文Ӟ它们一般位?usr/local/apache/conf目录。这三个文g是:httpd.con、srm.conf和access.conf。这些文件是整个Apache的控制中心,因此需要对三个配置文g有所了解。httpd.conf文g是主配置文gQsrm.conf允许你填加资源文Ӟaccess.conf讄文g的访问权限。这些文件的配置可以参考http://httpd.apache.org/docs/mod/core.html<br /><br /></span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体"><font color="#cc3300">5:服务器访问控?/font></span><span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体"><br /><br />access.conf文g包含一些指令控制允总么用戯问Apache目录。应该把deny from all作ؓ初始化指令,然后使用allow from指o打开讉K权限。你可以允许来自某个域、IP地址或者IPD늚讉K。例如:<br /><br />order deny,allow<br />deny from all<br />allow from sans.org<br /><br /><br /></span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体"><font color="#cc3300">6:密码保护<br /></font></span><span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体"><br />使用.htaccess文gQ可以把某个目录的访问权限赋予某个用戗系l管理员需要在httpd.conf或者srm.conf文g中用AccessFileName指o打开目录的访问控制。以下是一?htaccessCZ文gQ?br /><br />AuthName PrivateFiles<br />AuthType Basic<br />AuthUserFile /path/to/httpd/users<br />require foo <---一个有效的用户?br /><br />然后Q用如下命令填加一个用P<br /><br /># htpasswd -c /path/to/httpd/users foo<br /><br /><br /></span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体"><font color="#cc3300">7:Apache日志文g<br /></font></span><span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体"><br />pȝ理员可以用日志格式指令来控制日志文g的信息。用LogFormat "%a %l"指oQ可以把发出HTTPh览器的IP地址和主机名记录到日志文件。出于安全的考虑Q你臛_应该那些验证p|的WEB用户Q在http.conf文g中加入LogFormat "%401u"指o可以实现q个目的。这个指令还有其它的许多参数Q用户可以参考Apache的文档。另外,Apache的错误日志文件对于系l管理员来说也是非常重要的,错误日志文g中包括服务器的启动、停止以及CGI执行p|{信息?br /><br /></span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体"><font color="#cc3300">8:安全相关的指?br /></font></span><span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体"><br />在Apache配置文g中,有一些安全相关的指o可以使用。这些指令的详细用法可以参考http://httpd.apache.org/docs/mod/directives.html?br /><br />使用以下指o可以帮助你减拒l服务的威胁Q?br /><br />LimitRequestbody: 数字参数Q控制HTTPh的大?br />LimitRequestFields: 数字参数Q控制请求头的数目?br />KeepAlive: 讄q接的生存期?br />KeepAliveTimeout: 限制{待h的时间?br /><br />使用以下指o可以帮助你叫嚣缓冲区溢出的危险:<br /><br />LimitRequestFieldSize: 限制每个h头的大小?br />LimitRequestLine: 限制每个h行的大小?br /><br />CGI(ommon Gateway Interface,通用|关接口)的安全威?br /><br /><br />CGI的安全性非帔R要,d者可以利用CGI的缺陯得系l信息、执行系l命令、占用系l资源。如果一个CGIE序使用静态分配的内存Q就可能为缓冲区溢出d提供Z。ؓ了减这U风险,E序员应该在CGI代码中用动态分配内存。除了CGI~写人员应该注意外,pȝ理员可以采取对CGIq行装(例如QsuEXEC或者CGI Wrap)的办法加强CGI的安全性。通过q种方式可以使CGIE序以某个独立的用户权限q行Q即使发生缓冲区溢出Q也只媄响那个用L目录/文g?br /><br />perl是一U功能非常强大的脚本语言。主要用于文本的处理Q程序员q可以通过perl脚本使用pȝ调用。如果程序编写的不好Q就会ؓd者闯入服务器大开方便之门。因此,使用perl脚本一定要心Q以免出现此cLz。在perl脚本中,处理h数据之前Q最好能够调用专门的查例E对输入的合法性进行检查。除此之外,q要保Apache不是以root的权限运行的QPerl脚本被限制在某个特定的目录下q行?br /><br /></span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体"><font color="#cc3300">9:SSI(Server-Side Includes)的安?br /></font></span><span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体"><br />使用SSIQ程序员可以建立一些常用的例程Q在需要时把这些例E包含进他们的代码中。SSIq允许有条g地执行外部程序,d者可能利用这个条件让服务器执行他们的恶意E序。在access.conf文g中用IncludesNoEXEC指oQ可以关闭执行SSI文g的功能。不q这条指令会造成服务器不执行CGI脚本或者程序?br /><br /></span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体"><font color="#cc3300">10:其它安全工具<br /></font></span><span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体"><br />使用TCP Wrappers和Tripwire可以Z的系l提供额外的保护。你可以使用TCP Wrappers来控制Telnet或者FTP的访问权限。Tripwire是一个数据完整性检工P可以帮助pȝ理员监视系l是否被改动q,你可以在Tripwire的配|文件中~制特定的策略,监视Web服务器的配置文g、数据和CGI文g是否被修攏V?br /><br /></span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体"><font color="#cc3300">11:ȝ<br /></font></span><span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体"><br /><br />Apache是一个优U的歪脖服务器Q虽然Apache的开发者非常注重其安全性,但是׃Apache非常庞大Q难免会存在安全隐患。Apache的安装维护中需要注意以下问题:<br /><br />1: 查文件和目录的权限是否恰当?br />2: httpd.conf、srm.conf和access.conf的设|是否适当<br />3: 使服务器日志文g能够记录可能详l的信息?br />4: Ҏ些需要特别保护的目录使用密码保护(.htaccess)?br />5: 对CGI脚本或者程序进行封装?br />6: 如果CGI使用Perl~写Q要详细查其安全?br />7: 查SSI指o<br />8: 使用TCP Wrappers和Tripwire。(linux知识宝库Q?</span><img src ="http://www.tkk7.com/waterjava/aggbug/42357.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/waterjava/" target="_blank">狼爱上狸</a> 2006-04-21 16:45 <a href="http://www.tkk7.com/waterjava/archive/2006/04/21/42357.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>正确配置和维护Apache WEB Server 安全?/title><link>http://www.tkk7.com/waterjava/archive/2006/04/21/42356.html</link><dc:creator>狼爱上狸</dc:creator><author>狼爱上狸</author><pubDate>Fri, 21 Apr 2006 08:44:00 GMT</pubDate><guid>http://www.tkk7.com/waterjava/archive/2006/04/21/42356.html</guid><wfw:comment>http://www.tkk7.com/waterjava/comments/42356.html</wfw:comment><comments>http://www.tkk7.com/waterjava/archive/2006/04/21/42356.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/waterjava/comments/commentRss/42356.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/waterjava/services/trackbacks/42356.html</trackback:ping><description><![CDATA[ <font size="2">   <b>前言Q?/b>在目前的Internet时代Q主已成ؓ树立公司形象和展C我天地的一个重要手D,配置一台强大且安全的Web Server显得尤光要。在众多的Web Server产品中,Apache是应用最为广泛的一个品,同时也是一个设计上非常安全的程序。但是,同其它应用程序一PApache也存在安全缺陗本文将详细介绍如何正确配置和维护Apache WEB Server的安全性问题等?br />   <b> 一QApache服务器的介绍</b><br /><br />    Apache服务器它是Internet|上应用最为广泛的Web服务器Y件之一。Apache服务器源自美国国家超U技术计应用中心(NCSAQ的Web服务器项目中。目前已在互联网中占据了领导C。Apache服务器得l过_ֿ配置之后Q才能它适应高负P大吞吐量的互联网工作。快速、可靠、通过单的API扩展QPerl/Python解释器可被编译到服务器中Q且完全免费Q完全源代码开放。如果你需要创Z个每天有数百万h讉K的Web服务器,Apache可能是最佳选择?br /><br /></font> <font size="2"> <b>    二,Apache服务器的主要安全~陷<br /></b> <br />    正如我们前言所说尽Apache服务器应用最为广泛,设计上非常安全的E序。但是同其它应用E序一PApache也存在安全缺陗毕竟它是完全源代码QApache服务器的安全~陷主要是用HTTP协议q行的拒l服务攻?denial of service)、缓冲区溢出d以及被攻击者获得root权限三缺陷和最新的恶意的攻击者进行“拒l服务?DoS)d。合理的|络配置能够保护Apache服务器免遭多U攻凅R我们来介绍一下主要的安全~陷Q?br /><br />    Q?Q用HTTP协议q行的拒l服务攻?denial of service)的安全缺?br /><br />    q种Ҏd者会通过某些手段使服务器拒绝对HTTP应答。这样会使Apache对系l资?CPU旉和内?需求的剧增Q最l造成Apachepȝ变慢甚至完全瘫痪?br /><br />    </font> <font size="2">Q?Q缓冲区溢出的安全缺?br /><br />    该方法攻击者利用程序编写的一些缺P使程序偏L常的程。程序用静态分配的内存保存h数据Q攻击者就可以发送一个超长请求ɾ~冲区溢出。比如一些Perl~写的处理用戯求的|关脚本。一旦缓冲区溢出Q攻击者可以执行其恶意指o或者ɾpȝ宕机?br /><br />  </font> <font size="2">  Q?Q被d者获得root权限的安全缺?br /><br />    该安全缺陷主要是因ؓApache服务器一般以root权限q行(父进E?Q攻击者会通过它获得root权限Q进而控制整个Apachepȝ?br /><br />    Q?Q恶意的d者进行“拒l服务?DoS)d的安全缺?br />    q个最新在6?7日发现的漏洞Q它主要是存在于Apache的chunk encoding中,q是一个HTTP协议定义的用于接受web用户所提交数据的功能?利用黑客E序可以对于q行在FreeBSD 4.5, OpenBSD 3.0 / 3.1, NetBSD 1.5.2q_上的Apache服务器均可进行有效的d.<br /><br />    所有说使用最高和最新安全版本对于加强Apache Web服务器的安全是至关重要的。请q大Apache服务器管理员?/font> <a href="http://www.apache.org/dist/httpd/下蝲补丁E序以确保其WEB服务器安?> <font color="#000000">http://www.apache.org/dist/httpd/下蝲补丁E序以确保其WEB服务器安?/font> </a> <font size="2">Q?br /><br />  </font> <span style="FONT-FAMILY: 宋体"> <font color="#000099" size="2"> <b>  三, 正确l护和配|Apache服务?br /></b> </font> </span> <span lang="EN-US" style="FONT-FAMILY: 宋体"> <br /> <font size="2">    虽然Apache服务器的开发者非常注重安全性,׃Apache服务器其庞大的项目,隑օ会存在安全隐患。正维护和配置Apache WEB服务器就很重要了。我们应注意的一些问题:<br /><br />    Q?QApache服务器配|文?br />    Apache Web服务器主要有三个配置文gQ位?usr/local/apache/conf目录下。这三个文g是:<br />    httpd.con----->主配|文?br />    srm.conf------>填加资源文g<br />    access.conf--->讄文g的访问权?br />注:具体配置可以参考:</font> <a > <font color="#000000">http://httpd.apache.org/docs/mod/core.html</font> </a> <br /> <br /> <font size="2"> <font color="#cc3300">   Q?QApache服务器的日志文g</font><br />    我们可以使用日志格式指o来控制日志文件的信息。用Logformat "%a %l"指oQ可以把发出HTTPh览器的IP地址和主机名记录到日志文件。出于安全的考虑Q在日志中我们应知道臛_应该那些验证p|的WEB用户Q在http.conf文g中加入Logformat "%401u"指o可以实现q个目的。这个指令还有其它的许多参数Q用户可以参考Apache的文档。另外,Apache的错误日志文件对于系l管理员来说也是非常重要的,错误日志文g中包括服务器的启动、停止以及CGI执行p|{信息。更多请参看Apache日志pd1-5?br /><br />    <font color="#cc3300">Q?QApache服务器的目录安全认证</font><br />    在Apache Server中是允许使用 .htaccess做目录安全保护的Q欲dq保护的目录需要先键入正确用户帐号与密码。这样可做ؓ专门理|页存放的目录或做ؓ会员区等?br />在保护的目录攄一个档案,档名?htaccss<br />AuthName "会员专区"<br />AuthType "Basic"<br />AuthUserFile "/var/tmp/xxx.pw" ----->把password攑֜|站?br />require valid-user<br /><br />到apache/bin目录Q徏password?br /><br />% ./htpasswd -c /var/tmp/xxx.pw username1 ----->W一ơ徏档要用参?-c"<br /><br />% ./htpasswd /var/tmp/xxx.pw username2<br />q样可以保护目录内的内容,q入要用合法的用P<br />注:采用了Apache内附的模l。也可以采用在httpd.conf中加入: <br />options indexes followsymlinks <br />allowoverride authconfig <br />order allow,deny <br />allow from all <br /><br /> <font color="#cc3300">  Q?QApache服务器访问控?/font><br />    我们p看三个配|文件中的第三个文g了,即access.conf文gQ它包含一些指令控制允总么用戯问Apache目录。应该把deny from all设ؓ初始化指令,再用allow from指o打开讉K权限?br /><br /><br />order deny,allow<br />deny from all<br />allow from safechina.net<br /><br /><br />讄允许来自某个域、IP地址或者IPD늚讉K?br /><br /> <font color="#cc3300">   Q?QApache服务器的密码保护问题</font><br />     我们再?htaccess文g把某个目录的讉K权限赋予某个用户。系l管理员需要在httpd.conf或者srm.conf文g中用AccessFileName指o打开目录的访问控制。如Q?br />AuthName PrivateFiles<br />AuthType Basic<br />AuthUserFile /path/to/httpd/users<br />require Phoenix<br /><br /># htpasswd -c /path/to/httpd/users Phoenix<br /><br />   </font> </span> <span style="FONT-FAMILY: 宋体"> <font color="#000099" size="2"> <b> 四,讄Apache服务器的WEB和文件服务器<br /></b> </font> </span> <span lang="EN-US" style="FONT-FAMILY: 宋体"> <br /> <font size="2">    我们在Apache服务器上存放WEB服务器的文gQ供用户讉KQƈ讄/home/ftp/pub目录为文件存攑֌域,?/font> <a > <font color="#000000">http://download.your.com/pub/来访问。在防火墙上讄apache反向代理技术,由防火墙代理讉K</font> </a> <font size="2">。 <br /> <br />  <font color="#cc3300">  Q?QApache服务器的讄 </font><br />  apache服务器采用默认配|。主目录?home/httpd/html,L域名为Phoenix.your.com,且别名到www.your.com? q且讄srm.conf加一行别名定义如下: <br />Alias /pub /home/ftp/pub/ <br /><br />更改默认应用E序cd定义如下Q <br />DefaultType application/octet-stream <br /><br />最后在/etc/httpd/conf/access.conf中增加一定义 <br /><br />Options Indexes <br />AllowOverride AuthConfig <br />order allow,deny <br />allow from all <br /><br />注:Options Indexes允许在找不到index.html文g的情况下允许列出目录/文g列表。AllowOverride AuthConfig允许做基本的用户名和口o验证。这L话,需要在/home/ftp/pub目录下放?htaccessQ内容如下: <br /><br />[root@shopu pub]# more .htaccess <br />AuthName Branch Office Public Software Download Area <br />AuthType Basic <br />AuthUserFile /etc/.usrpasswd <br />require valid-user <br /><br />? htpasswd -c /etc/.usrpasswd user1  分别创徏不同的允许访?pub下文件服务的外部用户名和口o。 <br /><br />Q?Q在防火墙上配置反向代理技? <br />  ?etc/httpd/conf/httpd.conf  中加?NameVirtualHost xxx.xxx.xxx.xxx <br /># xxx.xxx.xxx.xxx ----->是防火墙外部在互联网上永久IP地址 <br />servername www.your.com <br />errorlog /var/log/httpd/error_log <br />transferlog /var/log/httpd/access_log <br />rewriteengine on <br />proxyrequests off <br />usecanonicalname off <br />rewriterule ^/(.*)$ http://xxx.xxx.xx.x/$1 Apache服务器的IP地址?br /><br /><br />servername http://download.your.com/pub/<br />errorlog /var/log/httpd/download/error_log <br />transferlog /var/log/httpd/download/access_log <br />rewriteengine on <br />proxyrequests off <br />usecanonicalname off <br />rewriterule ^/(.*)$ http://xxx.xxx.xx.x/$1 同上Apache服务器的IP地址?br /><br />讄防火墙上的DNSQ让download.your.com和www.your.com都指向防火墙的外部网地址xxx.xxx.xxx.xxx。用http://www.your.com讉K主页Q用http://download.your.com/pub/讉K公共文g的下载区?br /><br />注:q需要在apache服务器主Z建立目录/var/log/httpd/download/Q否则会出错。另外,也可以设|防火墙L上的/home/httpd/html/index.html的属性ؓ750来阻止访问,q是防外部用戯讉K到防火墙上的Apache服务器的http://www.your.com中。 <br /><br />ȝQApache Server是一个非怼UQ非常棒的服务器Q只要你正确配置和维护好Apache服务器,你就会感受到Apache Server 所带来的好处,同样希望你能够通过阅读本文辑ֈ理论和实践双丰收的目的。谢谢。(linux知识宝库Q?/font> </span> <img src ="http://www.tkk7.com/waterjava/aggbug/42356.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/waterjava/" target="_blank">狼爱上狸</a> 2006-04-21 16:44 <a href="http://www.tkk7.com/waterjava/archive/2006/04/21/42356.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>让APACHE防止多线E下?/title><link>http://www.tkk7.com/waterjava/archive/2006/04/21/42354.html</link><dc:creator>狼爱上狸</dc:creator><author>狼爱上狸</author><pubDate>Fri, 21 Apr 2006 08:43:00 GMT</pubDate><guid>http://www.tkk7.com/waterjava/archive/2006/04/21/42354.html</guid><wfw:comment>http://www.tkk7.com/waterjava/comments/42354.html</wfw:comment><comments>http://www.tkk7.com/waterjava/archive/2006/04/21/42354.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/waterjava/comments/commentRss/42354.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/waterjava/services/trackbacks/42354.html</trackback:ping><description><![CDATA[ <span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体"> <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /?> <o:p>下面是sane@nsfocus.com写的一些关于mod_limitipconn.c的文档,可以参考一下:<br /><br />[作者: sane@nsfocus.com ]<br /><br />mod_limitipconn.c是一个非官方的apache模块Q可以用来作为WEB文g的下载限?br />Q但是它是用ExtendedStatus On形式Q工作在应用层。当同一个IP的连接到?br />限制的时候,apache对geth发送:<br /><br />HTTP/1.1 503 Service Temporarily Unavailable<br /><br />从而用户不能下蝲Q但q不能阻止这U攻击,仍旧允许q接的。不q这个东东对<br />|管来说q是很有用的Q特别是下蝲站的|管。简单介l一下安装(动态模块方?br />安装Q假设你的apache已经装在/usr/local/apache目录下)Q?br /><br />下蝲Qhttp://dominia.org/djao/limit/mod_limitipconn-0.04.tar.gz<br /><br /># tar xzf mod_limitipconn-0.04.tar.gz<br /># cd mod_limitipconn-0.04<br /># vi Makefile<br /><br />把第一行的Q?br /><br />APXS = apxs<br /><br />改ؓ<br /><br />APXS = /usr/local/apache/bin/apxs<br /><br />然后Q?br /><br /># make<br /># make install<br /><br />修改apache配置文gQ?br /><br /># vi /usr/local/apache/conf/httpd.conf<br /><br />ExtendedStatus On ###make install时这句前面的#没有LQ一定要L<br /><br />###make install已经加了下面两句Q确认存在就行了<br />LoadModule limitipconn_module libexec/mod_limitipconn.so<br />AddModule mod_limitipconn.c<br /><br />###下面是对web目录下的文g下蝲限制<br /><br /><br />MaxConnPerIP 3 ###限制web根目录同一个IP只能同时开3q程下蝲<br /><br /># q有其它选项Q如Q?br /># NoIPLimit image/*<br /># OnlyIPLimit audio/mpeg video<br /># 可以讄多个Location<br /><br /><br /><br />重启apacheQ用多线E的下蝲工具下蝲Ӟ大于3个线E,其余的将得到信息Q?br /><br />HTTP/1.1 503 Service Temporarily Unavailable<br /><br />或者根据User_Agent判断Q把已知的多U程工具都给deny ?br />in httpd.conf<br />.....<br />BrowserMatch "NetAnt" badguy<br />BrowserMatch "GetRight" badguy<br />BrowserMatch "JetCar" badguy<br />BrowserMatch "Mass Downloader" badguy<br />BrowserMatch "ReGet" badguy<br />BrowserMatch "DLExpert" badguy<br />BrowserMatch "FlashGet" badguy<br />BrowserMatch "Offline Explorer" badguy<br />BrowserMatch "Teleport" badguy<br />...........<br /><br />order deny,allow<br />deny from env=badguy<br />allow from all<br /><br /><br />注意httpd里面应该?mod_setenvif模块?/o:p> </span> <img src ="http://www.tkk7.com/waterjava/aggbug/42354.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/waterjava/" target="_blank">狼爱上狸</a> 2006-04-21 16:43 <a href="http://www.tkk7.com/waterjava/archive/2006/04/21/42354.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>win2000下apache2.0.55+weblogic8.15的配|方?/title><link>http://www.tkk7.com/waterjava/archive/2006/04/21/42352.html</link><dc:creator>狼爱上狸</dc:creator><author>狼爱上狸</author><pubDate>Fri, 21 Apr 2006 08:40:00 GMT</pubDate><guid>http://www.tkk7.com/waterjava/archive/2006/04/21/42352.html</guid><wfw:comment>http://www.tkk7.com/waterjava/comments/42352.html</wfw:comment><comments>http://www.tkk7.com/waterjava/archive/2006/04/21/42352.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/waterjava/comments/commentRss/42352.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/waterjava/services/trackbacks/42352.html</trackback:ping><description><![CDATA[ <p>1.把C:\bea\weblogic81\server\bin\mod_wl_20.so拯到C:\Program Files\Apache Group\Apache2\modules?<br />2.修改C:\Program Files\Apache Group\Apache2\conf\httpd.conf文g<br />   增加<br />LoadModule weblogic_module modules/mod_wl_20.so </p> <p># WEBLOGIC MODULE <br /><IfModule mod_weblogic.c><br />WebLogicHost 127.0.0.1 <br />WebLogicPort 7001 <br />MatchExpression *.jsp<br /></IfModule><br /><br />?br />DocumentRoot "C:/Program Files/Apache Group/Apache2/htdocs"<br />改ؓ<br />DocumentRoot "C:\bea\user_projects\applications\mydomain\DefaultWebApp"<br /><br />?br /><Directory "C:/Program Files/Apache Group/Apache2/htdocs"><br />改ؓ<br /><Directory "C:\bea\user_projects\applications\mydomain\DefaultWebApp"><br /><br />3 在C:\Program Files\Apache Group\Apache2\bin下输?br />   apache -t<br />   试<br />   如果okQ则成功<br />4.重启apache服务<br /></p> <img src ="http://www.tkk7.com/waterjava/aggbug/42352.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/waterjava/" target="_blank">狼爱上狸</a> 2006-04-21 16:40 <a href="http://www.tkk7.com/waterjava/archive/2006/04/21/42352.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Weblogic8.1里面使用JDataStore的方?/title><link>http://www.tkk7.com/waterjava/archive/2006/04/16/41304.html</link><dc:creator>狼爱上狸</dc:creator><author>狼爱上狸</author><pubDate>Sun, 16 Apr 2006 00:09:00 GMT</pubDate><guid>http://www.tkk7.com/waterjava/archive/2006/04/16/41304.html</guid><wfw:comment>http://www.tkk7.com/waterjava/comments/41304.html</wfw:comment><comments>http://www.tkk7.com/waterjava/archive/2006/04/16/41304.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/waterjava/comments/commentRss/41304.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/waterjava/services/trackbacks/41304.html</trackback:ping><description><![CDATA[ <table cellspacing="0" cellpadding="0" width="100%" border="0"> <tbody> <tr valign="top"> <td width="99%">Weblogic8.1里面使用JDataStore的方?/td> <td width="1%"> </td> </tr> <tr> <td class="message_content" style="BORDER-TOP: #ccc 1px solid" colspan="2"> <table style="TABLE-LAYOUT: fixed; WORD-BREAK: break-all; WORD-WRAP: break-word" width="100%"> <tbody> <tr> <td>JDataStore是JBuilder自带的数据库Q最q摸索了几天l于在Weblogic8.1下面成功<br />部v了一个操作数据库的Web applicationQؓ了给所有像我一L初学者指指\Q下<br />面简单说说具体的操作?br /><br />1.Weblogic里面没有JDataStore的数据驱动,所以要先到JBuilder的安装文件夹下面Q?br />把lib文g夹下面的jdsremote.jar文g复制到Weblogic安装文g?比如D:\BEA)下面?br />D:\BEA\weblogic81\server\lib里面Q然后到D:\BEA\user_projects\mydomain下面<br />修改startWeblogic.cmd文gQ在set CLASSPATH=后面加上<br />%WL_HOME%\server\lib\jdsremote.jar;<br />q里%WL_HOME%代表某个文g夹,比如QWL_HOME=D:\BEA\weblogic81<br /><br />2.JDataStore的数据驱动名为:com.borland.datastore.jdbc.DataStoreDriver<br />数据库URL应该写成如下格式Q?br />jdbc:borland:dsremote://localhost/E:\My Program\User_Table.jds<br />下面是我写的一D늨序,权当参考吧?br /><br />public boolean find(String username,String password) throws Exception<br />{<br />Class.forName("com.borland.datastore.jdbc.DataStoreDriver").newInstance();<br />String url="jdbc:borland:dsremote://localhost/E:\\My Program\\User_Table.jds";<br />Connection con=DriverManager.getConnection(url,"DataStoreExplorer","user");<br />Statement sta=con.createStatement();<br />String sqlstr="select * from my_user where username='" + username + "' and password='" + password + "'";<br />ResultSet ret=sta.executeQuery(sqlstr);<br />if (ret.next()) return true;<br />else return false;<br />}<br />最后,记得先运行JDataStore ServerQ否则会出现被refuse的错?)</td> </tr> </tbody> </table> </td> </tr> </tbody> </table> <img src ="http://www.tkk7.com/waterjava/aggbug/41304.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/waterjava/" target="_blank">狼爱上狸</a> 2006-04-16 08:09 <a href="http://www.tkk7.com/waterjava/archive/2006/04/16/41304.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <p>лǵվܻԴȤ</p> <a href="http://www.tkk7.com/" title="亚洲av成人片在线观看">亚洲av成人片在线观看</a> <div class="friend-links"> </div> </div> </footer> վ֩ģ壺 <a href="http://meinvtaotu.com" target="_blank">һɫƬ</a>| <a href="http://c2277.com" target="_blank">Ƶ</a>| <a href="http://tltcn.com" target="_blank">ҹʱ</a>| <a href="http://1178767.com" target="_blank">߹ۿר</a>| <a href="http://chinahongfeng.com" target="_blank">ҹӰ߹ۿ</a>| <a href="http://ssdtsz.com" target="_blank">Ů18ëƬaëƬƵ</a>| <a href="http://wwwkk5679.com" target="_blank">ƬѸ</a>| <a href="http://yeyaweiban.com" target="_blank">AV벻</a>| <a href="http://f2dai.com" target="_blank">aëƬƵ</a>| <a href="http://okgou58.com" target="_blank">ܲƵ</a>| <a href="http://91vk.com" target="_blank">þþþþ޾ƷĻ </a>| <a href="http://njbyz.com" target="_blank">һػaaëƬѹۿ</a>| <a href="http://7788xxx.com" target="_blank">Ʒ˿</a>| <a href="http://www44414.com" target="_blank">ɬɬɬƵ߹ۿ</a>| <a href="http://www44wawa.com" target="_blank">Ѹþ</a>| <a href="http://www-xg5777.com" target="_blank">޳վ</a>| <a href="http://dzhyyy.com" target="_blank">ҹƵ</a>| <a href="http://hongyue8.com" target="_blank">69˳鶹Ƶ</a>| <a href="http://xingdagx.com" target="_blank">www޾Ʒþþ</a>| <a href="http://haodiaose35pao.com" target="_blank">AVպAV뵼</a>| <a href="http://www-bajie.com" target="_blank">ձһaƵѹۿ</a>| <a href="http://ganbadei.com" target="_blank">Դ߹ۿѰ</a>| <a href="http://01shanzhai.com" target="_blank">ƷAVһ</a>| <a href="http://wwwpaogou123.com" target="_blank">þþ޾Ʒ</a>| <a href="http://fz166.com" target="_blank">ѾƷһ߹ۿ</a>| <a href="http://hbwhgd.com" target="_blank">ôӲˬѲ</a>| <a href="http://01shanzhai.com" target="_blank">ɫAëƬѿ</a>| <a href="http://918989b.com" target="_blank">ƵպƵ</a>| <a href="http://hbjpxnyqckj.com" target="_blank">޳aƬ77777kkkk</a>| <a href="http://66661660.com" target="_blank">պƷһҳ</a>| <a href="http://1444000.com" target="_blank">ѧŮëƬƵ</a>| <a href="http://137499.com" target="_blank">뾫Ʒһѿ</a>| <a href="http://dou18.com" target="_blank">㽶97Ƶ</a>| <a href="http://lcqkp.com" target="_blank">ޱ뾫ƷAAAƬ</a>| <a href="http://317777aa.com" target="_blank">޹ۺ</a>| <a href="http://otkaxap.com" target="_blank">99þ޾ƷëƬ</a>| <a href="http://345504.com" target="_blank">Ʒާѡ벥</a>| <a href="http://www045888.com" target="_blank">ѹʵj߹ۿ</a>| <a href="http://luyifeile.com" target="_blank">ĻѸ </a>| <a href="http://senimei9.com" target="_blank">޸߹ۿ</a>| <a href="http://vastraje.com" target="_blank">޾Ʒ</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>