﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-网摘-文章分类-Hibernate</title><link>http://www.blogjava.net/jvict/category/33906.html</link><description /><language>zh-cn</language><lastBuildDate>Wed, 21 Apr 2010 15:24:02 GMT</lastBuildDate><pubDate>Wed, 21 Apr 2010 15:24:02 GMT</pubDate><ttl>60</ttl><item><title>Apache Commons DbUtils 快速上手 </title><link>http://www.blogjava.net/jvict/articles/318674.html</link><dc:creator>Documents</dc:creator><author>Documents</author><pubDate>Sun, 18 Apr 2010 09:30:00 GMT</pubDate><guid>http://www.blogjava.net/jvict/articles/318674.html</guid><wfw:comment>http://www.blogjava.net/jvict/comments/318674.html</wfw:comment><comments>http://www.blogjava.net/jvict/articles/318674.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jvict/comments/commentRss/318674.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jvict/services/trackbacks/318674.html</trackback:ping><description><![CDATA[<div><a href="http://java.chinaitlab.com/advance/796954.html">原文：http://java.chinaitlab.com/advance/796954.html</a><br />
另文：<a href="http://topmanopensource.javaeye.com/blog/348863">http://topmanopensource.javaeye.com/blog/348863</a><br />
Hibernate太复杂，iBatis不好用，JDBC代码太垃圾，DBUtils在简单与优美之间取得了完美平衡。</div>
<div>&nbsp;</div>
<div><strong>一、概述</strong></div>
<div>&nbsp;</div>
<div>DbUtils小巧的<a class="channel_keylink" href="http://java.chinaitlab.com/" target="_blank">Java</a>数据库操作工具，它在JDBC的基础上做了科学的封装，旨在简化JDBC代码混乱与重复。</div>
<div>&nbsp;</div>
<div>对于JDBC代码，存在很多问题，算是对<a class="channel_keylink" href="http://java.chinaitlab.com/" target="_blank">Java</a>的批判：</div>
<div>1、操作过程复杂，代码操作一个模式，大量的重复。</div>
<div>2、结果集难以处理，拿到一个ResultSet干屁啊，一个一个度，转称JavaBean，后来形成List，太麻烦了。</div>
<div>3、到处都强制检查SQLException，烦不烦啊，影响代码的美观和可读性。</div>
<div>&nbsp;</div>
<div>当然，以上的批判不是说JDBC设计不合理，二是缺乏更高层操作API的支持。因此才产生了众多的开源数据库操作的框架和工具包。</div>
<div>&nbsp;</div>
<div><strong>二、熟悉DBUtils的API</strong></div>
<div>&nbsp;</div>
<div>针对DBUitlsAPI的包，做个简单的翻译，以便迅速掌握API的使用。</div>
<div>
<div style="border-right: #aaaaaa 1px solid; padding-right: 5px; border-top: #aaaaaa 1px solid; padding-left: 5px; padding-bottom: 5px; border-left: #aaaaaa 1px solid; padding-top: 5px; border-bottom: #aaaaaa 1px solid; background-color: #fffafa">
<div>1、------------------------------------<br />
包org.apache.commons.dbutils <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DbUtils是一个为简化JDBC操作的小类库。</div>
<div>接口摘要<br />
ResultSetHandler 将ResultSet转换为别的对象的工具。<br />
RowProcessor 将ResultSet行转换为别的对象的工具。&nbsp; </div>
<div>类摘要<br />
BasicRowProcessor RowProcessor接口的基本实现类。 <br />
BeanProcessor BeanProcessor匹配列明到Bean属性名，并转换结果集列到Bean对象的属性中。<br />
DbUtils 一个JDBC辅助工具集合。 <br />
ProxyFactory 产生JDBC接口的代理实现。 <br />
QueryLoader 属性文件加载器，主要用于加载属性文件中的 SQL 到内存中。 <br />
QueryRunner 使用可插拔的策略执行SQL查询并处理结果集。<br />
ResultSetIterator 包装结果集为一个迭代器。 <br />
&nbsp; <br />
2、------------------------------------<br />
包org.apache.commons.dbutils.handlers <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ResultSetHandler接口的实现类 </div>
<div>类摘要<br />
AbstractListHandler 将ResultSet转为List的抽象类<br />
ArrayHandler 将ResultSet转为一个Object[]的ResultSetHandler实现类<br />
ArrayListHandler 将ResultSet转换为List&lt;Object[]&gt;的ResultSetHandler实现类<br />
BeanHandler 将ResultSet行转换为一个JavaBean的ResultSetHandler实现类<br />
BeanListHandler 将ResultSet转换为List&lt;JavaBean&gt;的ResultSetHandler实现类<br />
ColumnListHandler 将ResultSet的一个列转换为List&lt;Object&gt;的ResultSetHandler实现类<br />
KeyedHandler 将ResultSet转换为Map&lt;Map&gt;的ResultSetHandler实现类<br />
MapHandler 将ResultSet的首行转换为一个Map的ResultSetHandler实现类<br />
MapListHandler 将ResultSet转换为List&lt;Map&gt;的ResultSetHandler实现类<br />
ScalarHandler 将ResultSet的一个列到一个对象。</div>
<div>&nbsp;</div>
<div>3、------------------------------------<br />
包org.apache.commons.dbutils.wrappers <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 添加java.sql类中功能包装类。</div>
<div>类摘要<br />
SqlNullCheckedResultSet 在每个getXXX方法上检查SQL NULL值的ResultSet包装类。<br />
StringTrimmedResultSet 取出结果集中字符串左右空格的ResultSet包装类。<br />
</div>
</div>
</div>
<div>&nbsp;</div>
<div><strong>三、环境</strong></div>
<div>&nbsp;</div>
<div>Java5</div>
<div>commons-dbutils-1.2-bin.zip</div>
<div>mysql-noinstall-5.1.40-win32.zip</div>
<div>mysql-connector-java-5.1.10.zip</div>
<div>&nbsp;</div>
<div><a class="channel_keylink" href="http://download.chinaitlab.com/" target="_blank">下载</a>地址：</div>
<div><u>http://apache.freelamp.com/commons/dbutils/binaries/commons-dbutils-1.2-bin.zip</u></div>
<div><u>http://gd.tuwien.ac.at/db/mysql/Downloads/MySQL-5.1/mysql-noinstall-5.1.40-win32.zip</u></div>
<div><u><a href="http://gd.tuwien.ac.at/db/mysql/Downloads/Connector-J/mysql-connector-java-5.1.10.zip">http://gd.tuwien.ac.at/db/mysql/Downloads/Connector-J/mysql-connector-java-5.1.10.zip</a></u></div>
<img src ="http://www.blogjava.net/jvict/aggbug/318674.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jvict/" target="_blank">Documents</a> 2010-04-18 17:30 <a href="http://www.blogjava.net/jvict/articles/318674.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>转:基于CentOS的LAMP</title><link>http://www.blogjava.net/jvict/articles/305364.html</link><dc:creator>Documents</dc:creator><author>Documents</author><pubDate>Thu, 10 Dec 2009 01:27:00 GMT</pubDate><guid>http://www.blogjava.net/jvict/articles/305364.html</guid><wfw:comment>http://www.blogjava.net/jvict/comments/305364.html</wfw:comment><comments>http://www.blogjava.net/jvict/articles/305364.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jvict/comments/commentRss/305364.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jvict/services/trackbacks/305364.html</trackback:ping><description><![CDATA[<p>基于CentOS的LAMP 作者:NetSeek <br />
&nbsp;&nbsp; 大纲:<br />
一、系统安装<br />
二、编译安装基本环境<br />
三、配置虚拟主机及基本性能调优<br />
四、基本安全设置<br />
五、附录及相关介绍</p>
<p>一、系统安装<br />
1. 分区<br />
&nbsp;&nbsp;&nbsp;&nbsp; /boot 100M左右<br />
&nbsp;&nbsp;&nbsp;&nbsp; SWAP 物理内存的2倍(如果你的物理内存大于4G以上，分配4G即可)<br />
&nbsp;&nbsp;&nbsp;&nbsp; /&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 15G<br />
&nbsp;&nbsp;&nbsp;&nbsp; /usr/local 20G (用于安装软件)<br />
&nbsp;&nbsp;&nbsp;&nbsp; /data 剩余所有空间</p>
<p>2. 系统初始化脚本(根据具体需求关闭不需要的服务)<br />
&nbsp;&nbsp; <br />
代码:<br />
#vi init.sh<br />
-------------------cut begin-------------------------------------------<br />
#welcome<br />
cat &lt;&lt; EOF<br />
+--------------------------------------------------------------+<br />
|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; === Welcome to Centos System init ===&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |<br />
+--------------http://www.linuxtone.org------------------------+<br />
+----------------------Author:NetSeek--------------------------+<br />
EOF</p>
<p>#disable ipv6<br />
cat &lt;&lt; EOF<br />
+--------------------------------------------------------------+<br />
|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; === Welcome to Disable IPV6 ===&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |<br />
+--------------------------------------------------------------+<br />
EOF<br />
echo "alias net-pf-10 off" &gt;&gt; /etc/modprobe.conf<br />
echo "alias ipv6 off" &gt;&gt; /etc/modprobe.conf<br />
/sbin/chkconfig --level 35 ip6tables off<br />
echo "ipv6 is disabled!"</p>
<p>#disable selinux<br />
sed -i '/SELINUX/s/enforcing/disabled/' /etc/selinux/config <br />
echo "selinux is disabled,you must reboot!"</p>
<p>#vim<br />
sed -i "8 s/^/alias vi='vim'/" /root/.bashrc<br />
echo 'syntax on' &gt; /root/.vimrc</p>
<p>#zh_cn<br />
sed -i -e 's/^LANG=.*/LANG="zh_CN.GB18030"/'&nbsp;&nbsp; /etc/sysconfig/i18n</p>
<p>#tunoff services<br />
#--------------------------------------------------------------------------------<br />
cat &lt;&lt; EOF<br />
+--------------------------------------------------------------+<br />
|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; === Welcome to Tunoff services ===&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |<br />
+--------------------------------------------------------------+<br />
EOF<br />
#---------------------------------------------------------------------------------<br />
for i in `ls /etc/rc3.d/S*`<br />
do<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CURSRV=`echo $i|cut -c 15-`</p>
<p>echo $CURSRV<br />
case $CURSRV in<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; crond | irqbalance | microcode_ctl | network | random | sendmail | <br />
sshd | syslog | local | mysqld )<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; echo "Base services, Skip!"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; echo "change $CURSRV to off"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; chkconfig --level 235 $CURSRV off<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; service $CURSRV stop<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;;<br />
esac<br />
done<br />
-------------------cut end-------------------------------------------<br />
#sh init.sh (执行上面保存的脚本，仍后重启)<br />
脚本就是只留这几个服务 <br />
crond | irqbalance | microcode_ctl | network | random | sendmail | sshd | <br />
syslog | local | mysqld<br />
二、编译安装基本环境</p>
<p>1. 安装准备<br />
&nbsp;&nbsp;&nbsp;&nbsp; 1) 系统约定<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 软件源代码包存放位置&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /usr/local/src<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 源码包编译安装位置(prefix)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /usr/local/software_name<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 脚本以及维护程序存放位置&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /usr/local/sbin<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MySQL 数据库位置&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /data/mysql/data（可按情况设置）<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Apache 网站根目录&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /data/www/wwwroot（可按情况设置）<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Apache 虚拟主机日志根目录&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /data/www/logs（可按情况设置）<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Apache 运行账户&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; www:www (useradd -d /data/www/;chown <a href="http://www.www/">www.www</a> <br />
/data/www/wwwroot)</p>
<p>&nbsp;&nbsp;&nbsp; 2) 系统环境部署及调整<br />
&nbsp;&nbsp;&nbsp;&nbsp; 检查系统是否正常<br />
&nbsp;&nbsp;&nbsp;&nbsp; # tail -n100 /var/log/messages&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; （检查有无系统级错误信息）<br />
&nbsp;&nbsp;&nbsp;&nbsp; # dmesg （检查硬件设备是否有错误信息）<br />
&nbsp;&nbsp;&nbsp;&nbsp; # ifconfig（检查网卡设置是否正确）<br />
&nbsp;&nbsp;&nbsp;&nbsp; # ping <a href="http://www.linuxtone.org/">www.linuxtone.org</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; （检查网络是否正常）</p>
<p>&nbsp;&nbsp;&nbsp; 3) 使用 yum 程序安装所需开发包（以下为标准的 RPM 包名称）<br />
&nbsp;&nbsp;&nbsp;&nbsp; #rpm --import <a href="http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5">http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5</a><br />
&nbsp;&nbsp;&nbsp;&nbsp; #yum install ntp vim-enhanced gcc gcc-c++ gcc-g77 flex bison autoconf <br />
automake bzip2-devel \<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ncurses-devel zlib-devel libjpeg-devel libpng-devel libtiff-devel <br />
freetype-devel libXpm-devel \<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; gettext-devel pam-devel kernel</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp; 4) 定时校正服务器时钟，定时与中国国家授时中心授时服务器同步<br />
&nbsp;&nbsp;&nbsp;&nbsp; # crontab -e<br />
&nbsp;&nbsp;&nbsp;&nbsp; 加入一行：<br />
&nbsp;&nbsp;&nbsp;&nbsp; 15 3 * * * /usr/sbin/ntpdate 210.72.145.44 &gt; /dev/null 2&gt;&amp;1</p>
<p>2. 编译安装软件包<br />
&nbsp;&nbsp;&nbsp;&nbsp; 源码编译安装所需包(Source)<br />
&nbsp;&nbsp;&nbsp;&nbsp; 1) GD2<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # cd /usr/local/src<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # tar xvf gd-2.0.35.tar.gz<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # cd gd-2.0.35<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # ./configure --prefix=/usr/local/gd2<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # make<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # make install</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; 2) LibXML2<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # cd /usr/local/src<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # tar xvf libxml2-2.6.29.tar.bz2<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # cd libxml2-2.6.29<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # ./configure --prefix=/usr/local/libxml2<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # make<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # make install</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; 3) LibMcrypt<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # cd /usr/local/src<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # tar xvf libmcrypt-2.5.8.tar.bz2<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # cd libmcrypt-2.5.8<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # ./configure --prefix=/usr/local/libmcrypt<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # make<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # make install</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; 4) Apache日志截断程序<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # cd /usr/local/src<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # tar xvf cronolog-1.6.2.tar.gz<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # cd cronolog-1.6.2<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # ./configure --prefix=/usr/local/cronolog<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # make<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # make install</p>
<p>&nbsp;</p>
<p>3. 升级OpenSSL和OpenSSH<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # cd /usr/local/src<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # tar xvf openssl-0.9.8g.tar.gz <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # cd openssl-0.9.8g<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # ./config --prefix=/usr/local/openssl<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # make<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # make test<br />
# make install<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # cd ..<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # tar xvf openssh-5.0p1.tar.gz <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # cd openssh-5.0p1<br />
# ./configure \<br />
"--prefix=/usr" \<br />
"--with-pam" \<br />
"--with-zlib" \<br />
"--sysconfdir=/etc/ssh" \<br />
"--with-ssl-dir=/usr/local/openssl" \<br />
"--with-md5-passwords"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # make<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # make install<br />
&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; 1) 禁用 SSH V1 协议<br />
&nbsp;&nbsp;&nbsp; 找到#Protocol 2,1改为：Protocol 2</p>
<p>&nbsp;&nbsp;&nbsp; 2) 禁用服务器端GSSAPI<br />
&nbsp;&nbsp;&nbsp; 找到以下两行，并将它们注释：<br />
&nbsp;&nbsp;&nbsp; GSSAPIAuthentication yes<br />
&nbsp;&nbsp;&nbsp; GSSAPICleanupCredentials yes</p>
<p>&nbsp;&nbsp;&nbsp; 3) 禁用 DNS 名称解析<br />
找到：#UseDNS yeas改为：UseDNS no</p>
<p>&nbsp;&nbsp;&nbsp; 4)禁用客户端 GSSAPI<br />
&nbsp;&nbsp;&nbsp; # vi /etc/ssh/ssh_config 找到：GSSAPIAuthentication yes 将这行注释掉。<br />
&nbsp;&nbsp;&nbsp; 最后，确认修改正确后重新启动 SSH 服务<br />
&nbsp;&nbsp;&nbsp; # service sshd restart<br />
&nbsp;&nbsp;&nbsp; # ssh -v <br />
&nbsp;&nbsp;&nbsp; 确认 OpenSSH 以及 OpenSSL 版本正确。</p>
<p>以上SSH配置可利用以下脚本自动修改:<br />
代码:<br />
-------------------cut begin-------------------------------------------<br />
#init_ssh<br />
ssh_cf="/etc/ssh/sshd_config" <br />
sed -i -e '74 s/^/#/' -i -e '76 s/^/#/' $ssh_cf<br />
sed -i "s/#UseDNS yes/UseDNS no/" $ssh_cf<br />
#client<br />
sed -i -e '44 s/^/#/' -i -e '48 s/^/#/' $ssh_cf<br />
echo "ssh is init is ok.............."<br />
-------------------cut end---------------------------------------------<br />
三、编译安装A.M.P环境</p>
<p>1.下载软件编译安装<br />
&nbsp;&nbsp;&nbsp; 1)下载软件<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # cd /usr/local/src<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; httpd-2.2.8.tar.gz <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mysql-5.0.51b.tar.gz&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; php-5.2.6.tar.bz2<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ZendOptimizer-3.3.3-linux-glibc23-i386.tar.gz</p>
<p>&nbsp;&nbsp;&nbsp; 2) 安装MySQL<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 查看分析你的CPU型号:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a href="http://gentoo-wiki.com/Safe_Cflags">http://gentoo-wiki.com/Safe_Cflags</a> 查找您的GCC编译参数.<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 确定系统CPU类型：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # cat /proc/cpuinfo | grep "model name"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 执行后会看到系统中CPU的具体型号，记下CPU型号。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # tar xvf mysql-5.0.51b.tar.gz&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # cd mysql-5.0.51b<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # vi mysql.sh<br />
代码:<br />
-------------------cut begin-------------------------------------------<br />
CHOST="i686-pc-linux-gnu"<br />
CFLAGS="-march=prescott -O2 -pipe -fomit-frame-pointer"<br />
CXXFLAGS="${CFLAGS}"<br />
./configure \<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "--prefix=/usr/local/mysql" \<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "--localstatedir=/data/mysql/data" \<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "--with-comment=Source" \<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "--with-server-suffix=-LinuxTone" \<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "--with-mysqld-user=mysql" \<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "--without-debug" \<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "--with-big-tables" \<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "--with-charset=gbk" \<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "--with-collation=gbk_chinese_ci" \<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "--with-extra-charsets=all" \<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "--with-pthread" \<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "--enable-static" \<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "--enable-thread-safe-client" \<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "--with-client-ldflags=-all-static" \<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "--with-mysqld-ldflags=-all-static" \<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "--enable-assembler" \<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "--without-isam" \<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "--without-innodb" \<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "--without-ndb-debug"<br />
make &amp;&amp; make install<br />
mkdir -p /data/mysql/data<br />
useradd mysql -d /data/mysql -s /sbin/nologin<br />
/usr/local/mysql/bin/mysql_install_db --user=mysql<br />
cd /usr/local/mysql<br />
chown -R root:mysql .<br />
chown -R mysql /data/mysql/data<br />
cp share/mysql/my-huge.cnf /etc/my.cnf<br />
cp share/mysql/mysql.server /etc/rc.d/init.d/mysqld<br />
chmod 755 /etc/rc.d/init.d/mysqld<br />
chkconfig --add mysqld<br />
/etc/rc.d/init.d/mysqld start</p>
<p>cd /usr/local/mysql/bin<br />
for i in *; do ln -s /usr/local/mysql/bin/$i /usr/bin/$i; done</p>
<p>-------------------cut end---------------------------------------------<br />
#sh mysql.sh 即可开始编译.</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; 3) 编译安装Apache<br />
# cd /usr/local/src<br />
# tar xvf httpd-2.2.8.tar.gz <br />
# cd httpd-2.2.8<br />
&nbsp;&nbsp; <br />
代码:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # ./configure \<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "--prefix=/usr/local/apache2" \<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "--with-included-apr" \<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "--enable-so" \<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "--enable-deflate=shared" \<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "--enable-expires=shared" \<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "--enable-rewrite=shared" \<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "--enable-static-support" \<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "--disable-userdir"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # make<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # make install<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # echo '/usr/local/apache2/bin/apachectl start ' &gt;&gt; /etc/rc.local<br />
&nbsp;&nbsp; 4.)编译安装PHP<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # cd /usr/local/src<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # tar xjvf php-5.2.6.tar.bz2<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # cd php-5.2.6<br />
&nbsp;&nbsp; <br />
代码:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # ./configure \<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "--prefix=/usr/local/php" \<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "--with-apxs2=/usr/local/apache2/bin/apxs" \<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "--with-config-file-path=/usr/local/php/etc" \<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "--with-mysql=/usr/local/mysql" \<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "--with-libxml-dir=/usr/local/libxml2" \<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "--with-gd=/usr/local/gd2" \<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "--with-jpeg-dir" \<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "--with-png-dir" \<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "--with-bz2" \<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "--with-freetype-dir" \<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "--with-iconv-dir" \<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "--with-zlib-dir " \<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "--with-openssl=/usr/local/openssl" \<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "--with-mcrypt=/usr/local/libmcrypt" \<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "--enable-soap" \<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "--enable-gd-native-ttf" \<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "--enable-ftp" \<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "--enable-mbstring" \<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "--enable-exif" \<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "--disable-ipv6" \<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "--disable-cgi" \<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "--disable-cli"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #禁掉ipv6,禁掉cli模式，提升速度和安全性.请根据具体需求定制相关的编译数.<br />
# make<br />
# make install<br />
# mkdir /usr/local/php/etc<br />
# cp php.ini-dist /usr/local/php/etc/php.ini<br />
&nbsp;&nbsp; 5)Xcache的安装.<br />
&nbsp;&nbsp;&nbsp; #tar xvf xcache-1.2.2.tar.gz<br />
&nbsp;&nbsp; <br />
代码:<br />
&nbsp;&nbsp;&nbsp; #/usr/local/php/bin/phpize <br />
&nbsp;&nbsp;&nbsp; ./configure --enable-xcache --enable-xcache-coverager <br />
--with-php-config=/usr/local/php/bin/php-config \<br />
&nbsp;&nbsp;&nbsp; --enable-inline-optimization --disable-debug<br />
&nbsp;&nbsp; <br />
代码:<br />
&nbsp;&nbsp;&nbsp; #/usr/local/php/bin/phpize <br />
&nbsp;&nbsp;&nbsp; ./configure --enable-xcache --enable-xcache-coverager <br />
--with-php-config=/usr/local/php/bin/php-config \<br />
&nbsp;&nbsp;&nbsp; --enable-inline-optimization --disable-debug<br />
&nbsp;&nbsp; <br />
代码:<br />
-------------------cut begin-------------------------------------------<br />
[xcache-common]<br />
zend_extension&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = <br />
/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/xcache.so</p>
<p>[xcache.admin]<br />
xcache.admin.user&nbsp;&nbsp; = "admin"<br />
;如何生成md5密码: echo -n "password"| md5sum<br />
xcache.admin.pass&nbsp;&nbsp; = "035d849226a8a10be1a5e0fec1f0f3ce" #密码为52netseek</p>
<p>[xcache]<br />
; Change xcache.size to tune the size of the opcode cache<br />
xcache.size&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = 24M<br />
xcache.shm_scheme&nbsp;&nbsp; = "mmap"<br />
xcache.count&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = 4<br />
xcache.slots&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = 8K<br />
xcache.ttl&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = 0<br />
xcache.gc_interval = 0</p>
<p>; Change xcache.var_size to adjust the size of variable cache<br />
xcache.var_size&nbsp;&nbsp;&nbsp;&nbsp; = 8M<br />
xcache.var_count&nbsp;&nbsp;&nbsp; = 1<br />
xcache.var_slots&nbsp;&nbsp;&nbsp; = 8K<br />
xcache.var_ttl&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = 0<br />
xcache.var_maxttl&nbsp;&nbsp; = 0<br />
xcache.var_gc_interval =&nbsp;&nbsp;&nbsp;&nbsp; 300<br />
xcache.test&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = Off<br />
xcache.readonly_protection = On<br />
xcache.mmap_path&nbsp;&nbsp;&nbsp; = "/tmp/xcache"<br />
xcache.coredump_directory =&nbsp;&nbsp; ""<br />
xcache.cacher&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = On<br />
xcache.stat&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = On<br />
xcache.optimizer&nbsp;&nbsp;&nbsp; = Off</p>
<p>[xcache.coverager]<br />
xcache.coverager&nbsp;&nbsp;&nbsp; = On<br />
xcache.coveragedump_directory = ""<br />
-------------------cut end---------------------------------------------<br />
&nbsp;&nbsp; 6) 安装Zend Optimizer<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # cd /usr/local/src<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # tar xzvf ZendOptimizer-3.3.3-linux-glibc23-i386.tar.gz<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # ./ZendOptimizer-3.3.3-linux-glibc23-i386/install.sh<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 安装Zend Optimizer过程的最后不要选择重启Apache。</p>
<p><br />
2. 整合Apache与PHP及系统初化配置.<br />
&nbsp;&nbsp;&nbsp;&nbsp; 1)整合Apache与PHP<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # vi /usr/local/apache2/conf/httpd.conf<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 找到：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AddType application/x-gzip .gz .tgz<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在该行下面添加<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AddType application/x-httpd-php .php</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; 找到：<br />
&nbsp;&nbsp;&nbsp;&nbsp; &lt;IfModule dir_module&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DirectoryIndex index.html<br />
&nbsp;&nbsp;&nbsp;&nbsp; &lt;/IfModule&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp; 将该行改为<br />
&nbsp;&nbsp;&nbsp;&nbsp; &lt;IfModule dir_module&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DirectoryIndex index.html index.htm index.php<br />
&nbsp;&nbsp;&nbsp;&nbsp; &lt;/IfModule&gt;</p>
<p>找到：<br />
#Include conf/extra/httpd-mpm.conf<br />
#Include conf/extra/httpd-info.conf<br />
#Include conf/extra/httpd-vhosts.conf (虚拟主机配置文件存放目录.)<br />
#Include conf/extra/httpd-default.conf<br />
去掉前面的&#8220;#&#8221;号，取消注释。<br />
注意：以上 4 个扩展配置文件中的设置请按照相关原则进行合理配置！</p>
<p>修改完成后保存退出。<br />
# /usr/local/apache2/bin/apachectl restart</p>
<p>&nbsp;&nbsp;&nbsp; 2)查看确认L.A.M.P环境信息、提升 PHP 安全性<br />
&nbsp;&nbsp;&nbsp;&nbsp; 在网站根目录放置 info.php 脚本，检查phpinfo中的各项信息是否正确。<br />
&nbsp;&nbsp;&nbsp;&nbsp; &lt;?php<br />
&nbsp;&nbsp;&nbsp;&nbsp; phpinfo();<br />
&nbsp;&nbsp;&nbsp;&nbsp; ?&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp; 确认 PHP 能够正常工作后，在 php.ini 中进行设置提升 PHP 安全性,禁掉危险的函数.<br />
&nbsp;&nbsp;&nbsp;&nbsp; # vi /etc/php.ini找到：disable_functions <br />
=设置为：phpinfo,passthru,exec,system,chroot,scandir,chgrp,chown,shell_exec,proc_open,proc_get_status,ini_alter,ini_alter,ini_restore,dl,pfsockopen,openlog,syslog,readlink,symlink,popepassthru,stream_socket_server</p>
<p>3)脚本自动完成初始化配置(以上配置可以用脚本自动化完成)<br />
#cat init_apache_php.sh<br />
&nbsp;&nbsp; <br />
代码:<br />
-------------------cut begin-------------------------------------------<br />
#!/bin/bash<br />
#Written by :NetSeek <a href="http://www.linuxtone.org/">http://www.linuxtone.org</a><br />
#init_httpd.conf<br />
http_cf="/usr/local/apache2/conf/httpd.conf"<br />
sed -i -e "s/User daemon/User www/" -i -e "s/Group daemon/Group www/" $http_cf<br />
sed -i -e '121 s/^/#/' -i -e '122 s/^/#/' $http_cf<br />
sed -i 's#DirectoryIndex index.html# DirectoryIndex index.php index.html <br />
index.htm#/g' $http_cf<br />
sed -i -e '374 s/^#//g' -i -e '389 s/^#//g' -i -e '392 s/^#//g' -i -e '401 <br />
s/^#//g' $http_cf<br />
#init_php(PHP安全设置及隐藏PHP版本)<br />
php_cf="/usr/local/php/etc/php.ini"<br />
sed -i '205 s#;open_basedir =#open_basedir = /data/www/wwwroot:/tmp#g' $php_cf<br />
sed -i '210 s#disable_functions =#disable_functions = <br />
phpinfo,passthru,exec,system,chroot,scandir,chgrp,chown,shell_exec,proc_open,proc_get_status,ini_alter,ini_alter,ini_restore,dl,pfsockopen,openlog,syslog,readlink,symlink,popepassthru,stream_socket_server#g' <br />
$php_cf <br />
sed -i '/expose_php/s/On/Off/' $php_cf<br />
sed -i '/display_errors/s/On/Off/' $php_cf<br />
-------------------cut end-------------------------------------------<br />
&nbsp;&nbsp; 三、配置虚拟主机及基本性能调优<br />
1) 配置虚拟主机:<br />
#vi /usr/local/apache2/conf/extra/httpd-vhosts.conf<br />
代码:<br />
NameVirtualHost *:80</p>
<p>&lt;VirtualHost *:80&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ServerAdmin <a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#99;&#110;&#115;&#101;&#101;&#107;&#64;&#103;&#109;&#97;&#105;&#108;&#46;&#99;&#111;&#109;">cnseek@gmail.com</a><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DocumentRoot "/data/www/wwwroot/linuxtone.org"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ServerName <a href="http://www.linuxtone.org/">www.linuxtone.org</a><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ServerAlias bbs.linxutone.org<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ErrorLog "logs/dummy-host.example.com-error_log"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CustomLog "|/usr/sbin/cronolog /data/logs/access_www.linuxtone.org.%Y%m%d" <br />
combined <br />
&lt;/VirtualHost&gt;2).基本性能调优参考:(更多的调优相关文章请关注:http://bbs.linuxtone.org/index.html性能调优相关的贴子)<br />
#vi /usr/local/apache2/conf/extra/httpd-default.conf<br />
复制内容到剪贴板<br />
代码:<br />
Timeout 15<br />
KeepAlive Off<br />
MaxKeepAliveRequests 50<br />
KeepAliveTimeout 5<br />
UseCanonicalName Off<br />
AccessFileName .htaccess<br />
ServerTokens Prod <br />
ServerSignature Off <br />
HostnameLookups Off<br />
#vi /usr/local/apache2/conf/extra/httpd-mpm.conf<br />
复制内容到剪贴板<br />
代码:<br />
&lt;IfModule mpm_prefork_module&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ServerLimit&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2000<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; StartServers&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 10<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MinSpareServers&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 10<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MaxSpareServers&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 15<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MaxClients&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2000<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MaxRequestsPerChild&nbsp;&nbsp; 10000<br />
&lt;/IfModule&gt;<br />
3).Apache日志处理相关问题汇总贴(<a href="http://bbs.linuxtone.org/thread-102-1-1.html">http://bbs.linuxtone.org/thread-102-1-1.html</a>)<br />
&nbsp;&nbsp;&nbsp;&nbsp; 利用awstats分析网站日志:http://bbs.linuxtone.org/thread-56-1-1.html</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; 忽略不需要的日志配置参考具体请据据具体问题分析：<br />
&nbsp;&nbsp;&nbsp;&nbsp; LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %&gt;s %b \"%{Referer}i\" <br />
\"%{User-Agent}i\"" combined<br />
&nbsp;&nbsp;&nbsp;&nbsp; #下面加入如下内容:<br />
复制内容到剪贴板<br />
代码:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # filter the localhost visit<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SetEnvIf Remote_Addr "127\.0\.0\.1" dontlog<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # filter some special directories<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SetEnvIf Request_URI "^ZendPlatform.*$" dontlog<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SetEnvIf Request_URI \.healthcheck\.html$ dontlog<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SetEnvIf Remote_Addr "::1" dontlog<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SetEnvIf Request_URI "\.getPing.php$" dontlog<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SetEnvIf Request_URI "^/error\.html$" dontlog<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SetEnvIf Request_URI "\.gif$" dontlog<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SetEnvIf Request_URI "\.jpg$" dontlog<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SetEnvIf Request_URI "\.css$" dontlog<br />
4). Apache防盗链(Apache防盗链相关问题汇总:http://bbs.linuxtone.org/thread-101-1-1.html)<br />
复制内容到剪贴板<br />
代码:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; RewriteEngine on<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; RewriteCond %{HTTP_REFERER} !^$<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; RewriteCond %{HTTP_REFERER} !^http://(www\.)?mydomain.com/.*$ [NC]<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; RewriteRule \.(gif|jpg)$ http://网站域名/nolink.png [R,L]<br />
四、基本安全设置<br />
&nbsp;&nbsp;&nbsp; 1)iptables 封锁相关端口(推荐读CU白金大哥的两小时玩转iptables)<br />
&nbsp;&nbsp;&nbsp; 2)SSH全安(修改SSH端口限制来源IP登陆，或者参考<a href="http://bbs.linuxtone.org/thread-106-1-1.html">http://bbs.linuxtone.org/thread-106-1-1.html</a>)<br />
&nbsp;&nbsp;&nbsp; 3)Linux防Arp攻击策略(<a href="http://bbs.linuxtone.org/thread-41-1-1.html">http://bbs.linuxtone.org/thread-41-1-1.html</a>)<br />
&nbsp;&nbsp;&nbsp; 4)注意(还是那句老话:安全工作从细节做起!)<br />
&nbsp;&nbsp;</p>
 <img src ="http://www.blogjava.net/jvict/aggbug/305364.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jvict/" target="_blank">Documents</a> 2009-12-10 09:27 <a href="http://www.blogjava.net/jvict/articles/305364.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Hibernate+mysql乱码问题解决方案</title><link>http://www.blogjava.net/jvict/articles/225970.html</link><dc:creator>Documents</dc:creator><author>Documents</author><pubDate>Sun, 31 Aug 2008 15:20:00 GMT</pubDate><guid>http://www.blogjava.net/jvict/articles/225970.html</guid><wfw:comment>http://www.blogjava.net/jvict/comments/225970.html</wfw:comment><comments>http://www.blogjava.net/jvict/articles/225970.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jvict/comments/commentRss/225970.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jvict/services/trackbacks/225970.html</trackback:ping><description><![CDATA[<p>1, mysql安装时设置字符集utf-8（包括数据库字符集，以及表的字符集）, jdbc驱动用最新的 <br />
2. hibernate配置文件（hibernate.cfg.xml）中,加上属性 <br />
&lt;property name="connection.useUnicode"&gt;true&lt;/property&gt; <br />
&lt;property name="connection.characterEncoding"&gt;UTF-8&lt;/property&gt; <br />
<br />
3. web.xml设置Filter <br />
================================================= <br />
<br />
<br />
<img height="16" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" width="11" align="top" /><span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">filter</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
<img height="16" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" width="11" align="top" />&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">filter-name</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
<img height="16" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" width="11" align="top" />&nbsp;&nbsp;&nbsp;Set&nbsp;Web&nbsp;Application&nbsp;Character&nbsp;Encoding <br />
<img height="16" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" width="11" align="top" />&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;/</span><span style="color: rgb(128,0,0)">filter-name</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
<img height="16" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" width="11" align="top" />&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">filter-class</span><span style="color: rgb(0,0,255)">&gt;<font color="#000000">com.util.</font></span><span style="color: rgb(0,0,0)">SetEncodeFilter</span><span style="color: rgb(0,0,255)">&lt;/</span><span style="color: rgb(128,0,0)">filter-class</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
<img height="16" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" width="11" align="top" />&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">init-param</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
<img height="16" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" width="11" align="top" />&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">param-name</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)">defaultencoding</span><span style="color: rgb(0,0,255)">&lt;/</span><span style="color: rgb(128,0,0)">param-name</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
<img height="16" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" width="11" align="top" />&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">param-value</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)">UTF-8</span><span style="color: rgb(0,0,255)">&lt;/</span><span style="color: rgb(128,0,0)">param-value</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
<img height="16" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" width="11" align="top" />&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;/</span><span style="color: rgb(128,0,0)">init-param</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
<img height="16" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" width="11" align="top" />&nbsp;</span><span style="color: rgb(0,0,255)">&lt;/</span><span style="color: rgb(128,0,0)">filter</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
<img height="16" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" width="11" align="top" />&nbsp;</span><span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">filter-mapping</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
<img height="16" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" width="11" align="top" />&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">filter-name</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
<img height="16" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" width="11" align="top" />&nbsp;&nbsp;&nbsp;Set&nbsp;Web&nbsp;Application&nbsp;Character&nbsp;Encoding <br />
<img height="16" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" width="11" align="top" />&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;/</span><span style="color: rgb(128,0,0)">filter-name</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
<img height="16" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" width="11" align="top" />&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">url-pattern</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)">/*</span><span style="color: rgb(0,0,255)">&lt;/</span><span style="color: rgb(128,0,0)">url-pattern</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
<img height="16" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" width="11" align="top" />&nbsp;</span><span style="color: rgb(0,0,255)">&lt;/</span><span style="color: rgb(128,0,0)">filter-mapping</span><span style="color: rgb(0,0,255)">&gt;</span> </p>
<p><br />
============================================= <br />
SetEncodeFilter.java <br />
<br />
</p>
<br />
<span style="color: rgb(0,128,128)">&nbsp;1</span><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" /><span style="color: rgb(0,0,255)">package</span><span style="color: rgb(0,0,0)">&nbsp;com.util;<br />
</span><span style="color: rgb(0,128,128)">&nbsp;2</span><span style="color: rgb(0,0,0)"><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" /><br />
</span><span style="color: rgb(0,128,128)">&nbsp;3</span><span style="color: rgb(0,0,0)"><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" /></span><span style="color: rgb(0,0,255)">import</span><span style="color: rgb(0,0,0)">&nbsp;java.io.IOException;<br />
</span><span style="color: rgb(0,128,128)">&nbsp;4</span><span style="color: rgb(0,0,0)"><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" /><br />
</span><span style="color: rgb(0,128,128)">&nbsp;5</span><span style="color: rgb(0,0,0)"><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" /></span><span style="color: rgb(0,0,255)">import</span><span style="color: rgb(0,0,0)">&nbsp;javax.servlet.Filter;<br />
</span><span style="color: rgb(0,128,128)">&nbsp;6</span><span style="color: rgb(0,0,0)"><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" /></span><span style="color: rgb(0,0,255)">import</span><span style="color: rgb(0,0,0)">&nbsp;javax.servlet.FilterChain;<br />
</span><span style="color: rgb(0,128,128)">&nbsp;7</span><span style="color: rgb(0,0,0)"><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" /></span><span style="color: rgb(0,0,255)">import</span><span style="color: rgb(0,0,0)">&nbsp;javax.servlet.FilterConfig;<br />
</span><span style="color: rgb(0,128,128)">&nbsp;8</span><span style="color: rgb(0,0,0)"><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" /></span><span style="color: rgb(0,0,255)">import</span><span style="color: rgb(0,0,0)">&nbsp;javax.servlet.ServletException;<br />
</span><span style="color: rgb(0,128,128)">&nbsp;9</span><span style="color: rgb(0,0,0)"><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" /></span><span style="color: rgb(0,0,255)">import</span><span style="color: rgb(0,0,0)">&nbsp;javax.servlet.ServletRequest;<br />
</span><span style="color: rgb(0,128,128)">10</span><span style="color: rgb(0,0,0)"><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" /></span><span style="color: rgb(0,0,255)">import</span><span style="color: rgb(0,0,0)">&nbsp;javax.servlet.ServletResponse;<br />
</span><span style="color: rgb(0,128,128)">11</span><span style="color: rgb(0,0,0)"><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" /><br />
</span><span style="color: rgb(0,128,128)">12</span><span style="color: rgb(0,0,0)"><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top" ?none??; none??; inline??; inline??;? display=""  Codehighlighter1_308_1487_Closed_Text.style. Codehighlighter1_308_1487_Closed_Image.style. Codehighlighter1_308_1487_Open_Text.style. /><img style="display: none" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedBlock.gif" align="top" ?none??; none??; inline??; inline??;? display=""  Codehighlighter1_308_1487_Closed_Text.style. Codehighlighter1_308_1487_Open_Text.style. Codehighlighter1_308_1487_Open_Image.style. /></span><span style="color: rgb(0,0,255)">public</span><span style="color: rgb(0,0,0)">&nbsp;</span><span style="color: rgb(0,0,255)">class</span><span style="color: rgb(0,0,0)">&nbsp;SetEncodeFilter&nbsp;</span><span style="color: rgb(0,0,255)">implements</span><span style="color: rgb(0,0,0)">&nbsp;Filter&nbsp;</span><span style="border-right: rgb(128,128,128) 1px solid; border-top: rgb(128,128,128) 1px solid; display: none; border-left: rgb(128,128,128) 1px solid; border-bottom: rgb(128,128,128) 1px solid; background-color: rgb(255,255,255)"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span><span style="color: rgb(0,0,0)">{&nbsp;<br />
</span><span style="color: rgb(0,128,128)">13</span><span style="color: rgb(0,0,0)"><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: rgb(0,128,128)">14</span><span style="color: rgb(0,0,0)"><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">protected</span><span style="color: rgb(0,0,0)">&nbsp;FilterConfig&nbsp;filterConfig&nbsp;</span><span style="color: rgb(0,0,0)">=</span><span style="color: rgb(0,0,0)">&nbsp;</span><span style="color: rgb(0,0,255)">null</span><span style="color: rgb(0,0,0)">;&nbsp;<br />
</span><span style="color: rgb(0,128,128)">15</span><span style="color: rgb(0,0,0)"><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;<br />
</span><span style="color: rgb(0,128,128)">16</span><span style="color: rgb(0,0,0)"><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">protected</span><span style="color: rgb(0,0,0)">&nbsp;String&nbsp;defaultEncoding&nbsp;</span><span style="color: rgb(0,0,0)">=</span><span style="color: rgb(0,0,0)">&nbsp;</span><span style="color: rgb(0,0,255)">null</span><span style="color: rgb(0,0,0)">;&nbsp;<br />
</span><span style="color: rgb(0,128,128)">17</span><span style="color: rgb(0,0,0)"><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;<br />
</span><span style="color: rgb(0,128,128)">18</span><span style="color: rgb(0,0,0)"><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" ?none??; none??; inline??; inline??;? display=""  Codehighlighter1_417_512_Closed_Text.style. Codehighlighter1_417_512_Closed_Image.style. Codehighlighter1_417_512_Open_Text.style. /><img style="display: none" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif" align="top" ?none??; none??; inline??; inline??;? display=""  Codehighlighter1_417_512_Closed_Text.style. Codehighlighter1_417_512_Open_Text.style. Codehighlighter1_417_512_Open_Image.style. />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="border-right: rgb(128,128,128) 1px solid; border-top: rgb(128,128,128) 1px solid; display: none; border-left: rgb(128,128,128) 1px solid; border-bottom: rgb(128,128,128) 1px solid; background-color: rgb(255,255,255)">/**&nbsp;*/</span><span><span style="color: rgb(0,128,0)">/**</span><span style="color: rgb(0,128,0)">//*&nbsp;(non-Javadoc)&nbsp;<br />
</span><span style="color: rgb(0,128,128)">19</span><span style="color: rgb(0,128,0)"><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: rgb(128,128,128)">@see</span><span style="color: rgb(0,128,0)">&nbsp;javax.servlet.Filter#init(javax.servlet.FilterConfig)&nbsp;<br />
</span><span style="color: rgb(0,128,128)">20</span><span style="color: rgb(0,128,0)"><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,128,0)">*/</span></span><span style="color: rgb(0,0,0)">&nbsp;<br />
</span><span style="color: rgb(0,128,128)">21</span><span style="color: rgb(0,0,0)"><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" ?none??; none??; inline??; inline??;? display=""  Codehighlighter1_579_747_Closed_Text.style. Codehighlighter1_579_747_Closed_Image.style. Codehighlighter1_579_747_Open_Text.style. /><img style="display: none" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif" align="top" ?none??; none??; inline??; inline??;? display=""  Codehighlighter1_579_747_Closed_Text.style. Codehighlighter1_579_747_Open_Text.style. Codehighlighter1_579_747_Open_Image.style. />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">public</span><span style="color: rgb(0,0,0)">&nbsp;</span><span style="color: rgb(0,0,255)">void</span><span style="color: rgb(0,0,0)">&nbsp;init(FilterConfig&nbsp;arg0)&nbsp;</span><span style="color: rgb(0,0,255)">throws</span><span style="color: rgb(0,0,0)">&nbsp;ServletException&nbsp;</span><span style="border-right: rgb(128,128,128) 1px solid; border-top: rgb(128,128,128) 1px solid; display: none; border-left: rgb(128,128,128) 1px solid; border-bottom: rgb(128,128,128) 1px solid; background-color: rgb(255,255,255)"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span><span style="color: rgb(0,0,0)">{&nbsp;<br />
</span><span style="color: rgb(0,128,128)">22</span><span style="color: rgb(0,0,0)"><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,128,0)">//</span><span style="color: rgb(0,128,0)">&nbsp;TODO&nbsp;Auto-generated&nbsp;method&nbsp;stub&nbsp;</span><span style="color: rgb(0,128,0)"><br />
</span><span style="color: rgb(0,128,128)">23</span><span style="color: rgb(0,128,0)"><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="color: rgb(0,0,0)">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">this</span><span style="color: rgb(0,0,0)">.filterConfig&nbsp;</span><span style="color: rgb(0,0,0)">=</span><span style="color: rgb(0,0,0)">&nbsp;arg0;&nbsp;<br />
</span><span style="color: rgb(0,128,128)">24</span><span style="color: rgb(0,0,0)"><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">this</span><span style="color: rgb(0,0,0)">.defaultEncoding&nbsp;</span><span style="color: rgb(0,0,0)">=</span><span style="color: rgb(0,0,0)">&nbsp;filterConfig.getInitParameter(</span><span style="color: rgb(0,0,0)">"</span><span style="color: rgb(0,0,0)">defaultencoding</span><span style="color: rgb(0,0,0)">"</span><span style="color: rgb(0,0,0)">);&nbsp;<br />
</span><span style="color: rgb(0,128,128)">25</span><span style="color: rgb(0,0,0)"><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: rgb(0,0,0)">&nbsp;<br />
</span><span style="color: rgb(0,128,128)">26</span><span style="color: rgb(0,0,0)"><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;<br />
</span><span style="color: rgb(0,128,128)">27</span><span style="color: rgb(0,0,0)"><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" ?none??; none??; inline??; inline??;? display=""  Codehighlighter1_756_915_Closed_Text.style. Codehighlighter1_756_915_Closed_Image.style. Codehighlighter1_756_915_Open_Text.style. /><img style="display: none" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif" align="top" ?none??; none??; inline??; inline??;? display=""  Codehighlighter1_756_915_Closed_Text.style. Codehighlighter1_756_915_Open_Text.style. Codehighlighter1_756_915_Open_Image.style. />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="border-right: rgb(128,128,128) 1px solid; border-top: rgb(128,128,128) 1px solid; display: none; border-left: rgb(128,128,128) 1px solid; border-bottom: rgb(128,128,128) 1px solid; background-color: rgb(255,255,255)">/**&nbsp;*/</span><span><span style="color: rgb(0,128,0)">/**</span><span style="color: rgb(0,128,0)">//*&nbsp;(non-Javadoc)&nbsp;<br />
</span><span style="color: rgb(0,128,128)">28</span><span style="color: rgb(0,128,0)"><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: rgb(128,128,128)">@see</span><span style="color: rgb(0,128,0)">&nbsp;javax.servlet.Filter#doFilter(javax.servlet.ServletRequest,&nbsp;javax.servlet.ServletResponse,&nbsp;javax.servlet.FilterChain)&nbsp;<br />
</span><span style="color: rgb(0,128,128)">29</span><span style="color: rgb(0,128,0)"><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,128,0)">*/</span></span><span style="color: rgb(0,0,0)">&nbsp;<br />
</span><span style="color: rgb(0,128,128)">30</span><span style="color: rgb(0,0,0)"><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">public</span><span style="color: rgb(0,0,0)">&nbsp;</span><span style="color: rgb(0,0,255)">void</span><span style="color: rgb(0,0,0)">&nbsp;doFilter(&nbsp;<br />
</span><span style="color: rgb(0,128,128)">31</span><span style="color: rgb(0,0,0)"><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ServletRequest&nbsp;request,&nbsp;<br />
</span><span style="color: rgb(0,128,128)">32</span><span style="color: rgb(0,0,0)"><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ServletResponse&nbsp;response,&nbsp;<br />
</span><span style="color: rgb(0,128,128)">33</span><span style="color: rgb(0,0,0)"><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FilterChain&nbsp;chain)&nbsp;<br />
</span><span style="color: rgb(0,128,128)">34</span><span style="color: rgb(0,0,0)"><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" ?none??; none??; inline??; inline??;? display=""  Codehighlighter1_1086_1245_Closed_Text.style. Codehighlighter1_1086_1245_Closed_Image.style. Codehighlighter1_1086_1245_Open_Text.style. /><img style="display: none" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif" align="top" ?none??; none??; inline??; inline??;? display=""  Codehighlighter1_1086_1245_Closed_Text.style. Codehighlighter1_1086_1245_Open_Text.style. Codehighlighter1_1086_1245_Open_Image.style. />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">throws</span><span style="color: rgb(0,0,0)">&nbsp;IOException,&nbsp;ServletException&nbsp;</span><span style="border-right: rgb(128,128,128) 1px solid; border-top: rgb(128,128,128) 1px solid; display: none; border-left: rgb(128,128,128) 1px solid; border-bottom: rgb(128,128,128) 1px solid; background-color: rgb(255,255,255)"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span><span style="color: rgb(0,0,0)">{&nbsp;<br />
</span><span style="color: rgb(0,128,128)">35</span><span style="color: rgb(0,0,0)"><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,128,0)">//</span><span style="color: rgb(0,128,0)">&nbsp;TODO&nbsp;Auto-generated&nbsp;method&nbsp;stub&nbsp;</span><span style="color: rgb(0,128,0)"><br />
</span><span style="color: rgb(0,128,128)">36</span><span style="color: rgb(0,128,0)"><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="color: rgb(0,0,0)">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;request.setCharacterEncoding(selectEncoding(request));&nbsp;<br />
</span><span style="color: rgb(0,128,128)">37</span><span style="color: rgb(0,0,0)"><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;chain.doFilter(request,&nbsp;response);&nbsp;<br />
</span><span style="color: rgb(0,128,128)">38</span><span style="color: rgb(0,0,0)"><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: rgb(0,0,0)">&nbsp;<br />
</span><span style="color: rgb(0,128,128)">39</span><span style="color: rgb(0,0,0)"><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;<br />
</span><span style="color: rgb(0,128,128)">40</span><span style="color: rgb(0,0,0)"><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;<br />
</span><span style="color: rgb(0,128,128)">41</span><span style="color: rgb(0,0,0)"><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" ?none??; none??; inline??; inline??;? display=""  Codehighlighter1_1278_1368_Closed_Text.style. Codehighlighter1_1278_1368_Closed_Image.style. Codehighlighter1_1278_1368_Open_Text.style. /><img style="display: none" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif" align="top" ?none??; none??; inline??; inline??;? display=""  Codehighlighter1_1278_1368_Closed_Text.style. Codehighlighter1_1278_1368_Open_Text.style. Codehighlighter1_1278_1368_Open_Image.style. />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">public</span><span style="color: rgb(0,0,0)">&nbsp;</span><span style="color: rgb(0,0,255)">void</span><span style="color: rgb(0,0,0)">&nbsp;destroy()&nbsp;</span><span style="border-right: rgb(128,128,128) 1px solid; border-top: rgb(128,128,128) 1px solid; display: none; border-left: rgb(128,128,128) 1px solid; border-bottom: rgb(128,128,128) 1px solid; background-color: rgb(255,255,255)"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span><span style="color: rgb(0,0,0)">{&nbsp;<br />
</span><span style="color: rgb(0,128,128)">42</span><span style="color: rgb(0,0,0)"><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: rgb(0,128,128)">43</span><span style="color: rgb(0,0,0)"><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">this</span><span style="color: rgb(0,0,0)">.defaultEncoding&nbsp;</span><span style="color: rgb(0,0,0)">=</span><span style="color: rgb(0,0,0)">&nbsp;</span><span style="color: rgb(0,0,255)">null</span><span style="color: rgb(0,0,0)">;&nbsp;<br />
</span><span style="color: rgb(0,128,128)">44</span><span style="color: rgb(0,0,0)"><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">this</span><span style="color: rgb(0,0,0)">.filterConfig&nbsp;</span><span style="color: rgb(0,0,0)">=</span><span style="color: rgb(0,0,0)">&nbsp;</span><span style="color: rgb(0,0,255)">null</span><span style="color: rgb(0,0,0)">;&nbsp;<br />
</span><span style="color: rgb(0,128,128)">45</span><span style="color: rgb(0,0,0)"><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: rgb(0,0,0)">&nbsp;<br />
</span><span style="color: rgb(0,128,128)">46</span><span style="color: rgb(0,0,0)"><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;<br />
</span><span style="color: rgb(0,128,128)">47</span><span style="color: rgb(0,0,0)"><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;<br />
</span><span style="color: rgb(0,128,128)">48</span><span style="color: rgb(0,0,0)"><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" ?none??; none??; inline??; inline??;? display=""  Codehighlighter1_1435_1482_Closed_Text.style. Codehighlighter1_1435_1482_Closed_Image.style. Codehighlighter1_1435_1482_Open_Text.style. /><img style="display: none" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif" align="top" ?none??; none??; inline??; inline??;? display=""  Codehighlighter1_1435_1482_Closed_Text.style. Codehighlighter1_1435_1482_Open_Text.style. Codehighlighter1_1435_1482_Open_Image.style. />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">protected</span><span style="color: rgb(0,0,0)">&nbsp;String&nbsp;selectEncoding(ServletRequest&nbsp;request)&nbsp;</span><span style="border-right: rgb(128,128,128) 1px solid; border-top: rgb(128,128,128) 1px solid; display: none; border-left: rgb(128,128,128) 1px solid; border-bottom: rgb(128,128,128) 1px solid; background-color: rgb(255,255,255)"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span><span style="color: rgb(0,0,0)">{&nbsp;<br />
</span><span style="color: rgb(0,128,128)">49</span><span style="color: rgb(0,0,0)"><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;<br />
</span><span style="color: rgb(0,128,128)">50</span><span style="color: rgb(0,0,0)"><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">return</span><span style="color: rgb(0,0,0)">&nbsp;</span><span style="color: rgb(0,0,255)">this</span><span style="color: rgb(0,0,0)">.defaultEncoding;&nbsp;<br />
</span><span style="color: rgb(0,128,128)">51</span><span style="color: rgb(0,0,0)"><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: rgb(0,0,0)">&nbsp;<br />
</span><span style="color: rgb(0,128,128)">52</span><span style="color: rgb(0,0,0)"><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;<br />
</span><span style="color: rgb(0,128,128)">53</span><span style="color: rgb(0,0,0)"><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span><span style="color: rgb(0,0,0)">&nbsp;</span>
<p>&nbsp;</p>
<p>4.提交表单的jsp页面设置<br />
&lt;%@ page language="java"&nbsp; contentType="text/html; charset=UTF-8"%&gt;</p>
<br />
<p>&nbsp;</p>
<p><strong style="color: rgb(255,0,0)"><span style="font-size: 14pt; font-family: 宋体">至此问题已经解决</span></strong><strong style="color: rgb(255,0,0)"><span lang="EN-US" style="font-size: 14pt">,</span></strong><strong style="color: rgb(255,0,0)"><span style="font-size: 14pt; font-family: 宋体"><clk>但是还有一些<nobr style="color: #6600ff; border-bottom: #6600ff 1px dotted; background-color: transparent; text-decoration: underline" target="_blank"  false;? this);? kwC(event,0)?>我们</nobr>应该了解的</clk></span></strong><strong style="color: rgb(255,0,0)"><span lang="EN-US" style="font-size: 14pt">,</span></strong><strong style="color: rgb(255,0,0)"><span style="font-size: 14pt; font-family: 宋体">下面我简述一下</span></strong><strong><span lang="EN-US" style="font-size: 14pt"><span style="color: rgb(255,0,0)">:</span></span></strong></p>
<p style="text-indent: 21pt; line-height: 150%"><font size="4"><span style="font-family: 宋体">为每个<span lang="EN-US">jsp</span>页面设置了其编码格式<span lang="EN-US">(utf-8)</span>，但传递数据到另一页面时依然显示为乱 码？　　首先要需要了解的是<span lang="EN-US">web</span>容器默认编码是<span lang="EN-US">iso-8859-1</span>，一个汉字占用两个字节，而在<span lang="EN-US">utf-8</span>中一个汉字占用三个字节。所以在数据传递过 程中，必须手动设定容器编码格式，否则会出现字符位丢失的情况。即<span lang="EN-US">3</span>个字节变为两个字节，自然会变成乱码。为什么保存到数据库中的数据都变成了乱码？　　 原理同上，首先要搞清楚使用的数据库默认的编码格式，比如<span lang="EN-US">mysql</span>默认的字符编码是<span lang="EN-US">ISO-8859-1</span>。所以必须手动修改其默认编码格式。　　清楚了 以上问题后，再来看如何解决<span lang="EN-US">utf-8</span>的乱码问题。</span></font></p>
<p style="line-height: 150%"><font size="4"><span style="font-family: 宋体">１．设置<span lang="EN-US">web</span>容器的编码格式。为你的<span lang="EN-US">servlet</span>的<span lang="EN-US">doGet</span>或<span lang="EN-US">doPost</span>方法开始处加入如下代 码：<span lang="EN-US">request.setCharacterEncoding("utf-8");&nbsp;&nbsp;&nbsp;response.setCharacterEncoding ("utf-8");</span></span></font></p>
<p style="line-height: 150%"><font size="4"><span style="font-family: 宋体">２．为每个<span lang="EN-US">jsp</span>页面指定其编码格式。<span lang="EN-US">&lt;%@ page pageEncoding="utf-8"%&gt;</span></span></font></p>
<p style="line-height: 150%"><font size="4"><span style="font-family: 宋体">３．在连接数据库用的<span lang="EN-US">URL</span>后加入：<span lang="EN-US">useUnicode=true; characterEncoding=utf-8</span>　如：　<span lang="EN-US">url="jdbc:mysql:///db1?useUnicode=true; characterEncoding=utf-8"</span></span></font></p>
<p style="line-height: 150%"><font size="4"><span style="font-family: 宋体">４．为指定数据库默认编码格式。在<span lang="EN-US">C:\WINDOWS</span>目录下找到<span lang="EN-US">my.ini</span>文件，并在<span lang="EN-US"> [mysqld]</span>中加入<span lang="EN-US">default-character-set=gbk</span>，重新启动<span lang="EN-US">mysql</span><clk><nobr style="color: #6600ff; border-bottom: #6600ff 1px dotted; background-color: transparent; text-decoration: underline" target="_blank"  false;? this);? kwC(event,2)?>服务</nobr>。　</clk></span></font></p>
<p style="line-height: 150%"><font size="4"><span style="font-family: 宋体">至此，乱码问题全部解决。</span></font></p>
<p style="line-height: 150%"><font size="4"><span style="font-family: 宋体">起初总搞上去不清， 为什么要将<span lang="EN-US">mysql</span>的默认编码格式设置为<span lang="EN-US">gbk</span>，后来由相关的资料得知<span lang="EN-US">utf-8</span>默认输入编码方式为<span lang="EN-US">gbk</span>，默认输出编码方式为<span lang="EN-US">utf-16be</span>。　 　</span></font></p>
<p style="line-height: 150%"><span style="font-family: 宋体"><font size="4">个人认为，将数据进行<span lang="EN-US">utf-8</span>进行编码的目的<span lang="EN-US">(</span>即将中文编码为％的形式<span lang="EN-US">)</span>，主要是为了在多层服务间进行数据传输时，防止发生字符丢失<span lang="EN-US">(</span>如<span lang="EN-US">msn)</span>。普 通的<span lang="EN-US">web</span><clk><nobr style="color: #6600ff; border-bottom: #6600ff 1px dotted; background-color: transparent; text-decoration: underline" target="_blank"  false;? this);? kwC(event,5)?>程序</nobr>显然没有必要这样做，只要使用以上方法进行处理，就可以有效的解决乱码问题，从而结省存储空间。如果都像公司的</clk><span lang="EN-US">SC</span>系统那样，将一个汉字编 码为<span lang="EN-US">18</span>个字符后，再存储到数据库中，抛开效率不说，就存储空间的浪费就够人受的，要知道，那是需要银子地！</font></span></p>
<img src ="http://www.blogjava.net/jvict/aggbug/225970.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jvict/" target="_blank">Documents</a> 2008-08-31 23:20 <a href="http://www.blogjava.net/jvict/articles/225970.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>struts、dao、hibernate项目中遇到的问题</title><link>http://www.blogjava.net/jvict/articles/225671.html</link><dc:creator>Documents</dc:creator><author>Documents</author><pubDate>Fri, 29 Aug 2008 16:34:00 GMT</pubDate><guid>http://www.blogjava.net/jvict/articles/225671.html</guid><wfw:comment>http://www.blogjava.net/jvict/comments/225671.html</wfw:comment><comments>http://www.blogjava.net/jvict/articles/225671.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jvict/comments/commentRss/225671.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jvict/services/trackbacks/225671.html</trackback:ping><description><![CDATA[<p>&#183;内容部份使用<span  style="color: #4b4b4b; font-family: georgia; font-size: 14px; font-weight: bold; line-height: 20px; "><a id="homepage1_HomePageDays_DaysList_ctl00_DayItem_DayList_ctl00_TitleUrl" class="postTitle2" href="http://www.blogjava.net/jvict/archive/2008/09/11/228373.html" style="text-decoration: none; margin-top: 0px; padding-top: 0px; color: #638f27; ">FCKeditor</a><a id="homepage1_HomePageDays_DaysList_ctl00_DayItem_DayList_ctl00_TitleUrl" class="postTitle2" href="http://www.blogjava.net/jvict/archive/2008/09/11/228373.html" style="text-decoration: none; margin-top: 0px; padding-top: 0px; "><font  color="#000000" face="Simsun" size="4"><span  style="font-size: 16px; font-weight: normal; line-height: normal;">来进行操作Word等带格式文档</span></font></a></span></p>
<p>&#183;<span style="color: red">一个容易忽略的问题，使用Hibernate SessionFactory连接数据库并创建了session时</span><br />
buildSessionFactory.openSession<br />
　&#160;&#160;&#160;&#160;当使用完关闭 session.close()后，连接依然处于打开状态，只有当SessionFactory(工厂并闭时才真正关闭）<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;即SessionFactory.close()后才ＯＫ，不然访问到达指定连接数后就会打不开数据库连接报错，Ｔoo many connections<br />
<br />
&#183;使用EL表达式输出日期格式配合JSTL (详细：<a href="http://bbs.163jsp.com/posts/listByUser/127.html">http://bbs.163jsp.com/posts/listByUser/127.html</a> ）<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&lt;%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %><br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&lt;fmt:formatDate value="${param.date}" pattern="yyyy-MM-dd" /><br />
<br />
&#183;<span style="color: red">mysql中文问题，开始一直无法插入中文，怎么改变字符集都不行</span>。<br />
　　是因为改变字符集后没有重新用新的字符集建表，原来创建的表还是老的字符集。重新创建后即可决<br />
<br />
<br />
&#183;在页面中无法使用EL表达式语言,<br />
<font color="#ff0000">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;原因与解决方法：<br />
</font>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;可能是使用了JSTL<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;在jsp的开头需要加一条指令如下：<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&lt;%@&#160;page&#160;isELIgnored="false"%><br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;这样EL就可以正常显示了,可以同时使用JSP 2.0 EL与JSTL了<br />
<br />
&#183;<span style="color: red">缺少javaee.jar包</span>引起Tomcat 异常出错<br />
</p>
<p><br />
&#183;<span style="color: red">tomcat java.lang.NoClassDefFoundError: javax/el/ExpressionFactory</span><br />
&#160;　　少了包:el-api.jar, el-ri.jar<br />
<br />
&#183;Hibernate调试没有问题，当采用Struts或Web页面前台调用时出错，原因为Hibernate和struts包不一致，<br />
下载新的commons-collections-2.1.1.jar包更新后正常</p>
<br />
&#183;ActionErrors 无法显示：ApplicationResources.properties 没有在指定的目录中，cn.....struts目录<br />
<br />
&#183;Action中向外传递错误信息时，需要使用下面格式：<br />
&#160;&#160;&#160;&#160;&#160;&#160;<span style="color: #3366ff">&#160;ActionErrors errors =new ActionErrors();<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;errors.add(errors.GLOBAL_MESSAGE, new ActionMessage("failure"));<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;this.saveErrors(request, errors);<br />
</span>
<img src ="http://www.blogjava.net/jvict/aggbug/225671.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jvict/" target="_blank">Documents</a> 2008-08-30 00:34 <a href="http://www.blogjava.net/jvict/articles/225671.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关于MyEclipse 6.0.0 GA开发SSH应用的 Error Creating SessionFactory %%%% java.lang.SecurityException: class "org.apache.commons.collections.SequencedHashMap"'异常的解决方案 </title><link>http://www.blogjava.net/jvict/articles/225659.html</link><dc:creator>Documents</dc:creator><author>Documents</author><pubDate>Fri, 29 Aug 2008 14:13:00 GMT</pubDate><guid>http://www.blogjava.net/jvict/articles/225659.html</guid><wfw:comment>http://www.blogjava.net/jvict/comments/225659.html</wfw:comment><comments>http://www.blogjava.net/jvict/articles/225659.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jvict/comments/commentRss/225659.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jvict/services/trackbacks/225659.html</trackback:ping><description><![CDATA[<p>替换 commons-collections-2.1.1 后正常。<br />
<br />
昨天有读者提到用 MyEclipse 6.0.0 开发 Struts + Hibernate应用的时候，单独测试Hibernate的类没有问题，但是当Web层和Struts整合后，就抛出如下异常：</p>
<p>%%%% Error Creating SessionFactory %%%%&nbsp; java.lang.SecurityException: class "org.apache.commons.collections.SequencedHashMap"'s signer information does not match signer information of other classes in the same package&nbsp; </p>
<p>因为我用的6.0.1，所以怎么也没出现这个异常。后来Google搜到很多人遇到了这个故障，猜测是commons-collections.jar的问题，可能和MyEclipse 6.0.0自带的包有问题导致。例如下面的是一个解决方案：<a title="http://ttitfly.javaeye.com/blog/131955" href="http://ttitfly.javaeye.com/blog/131955">http://ttitfly.javaeye.com/blog/131955</a></p>
<p>&nbsp;</p>
<p>解决方案：</p>
<p>1）下载 MyEclipse 6.0.1 来开发；</p>
<p>2）或者去<a title="http://commons.apache.org/collections/ " href="http://commons.apache.org/collections/%20">http://commons.apache.org/collections/ </a>下载一个新的包，把原来的commons-collections-xxx.jar给删了，然后用新的包替换。注意：一定要到应用的发布目录去做这个工作，而且替换后不能重新发布应用，然后立即重启Tomcat再测试。</p>
<p>&nbsp;</p>
<p>如果再报下面的错误： <br />
ERROR [org.hibernate.proxy.BasicLazyInitializer] - CGLIB Enhancement failed: dao.User <br />
java.lang.NoSuchMethodError: org.objectweb.asm.ClassVisitor.visit(IILjava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)V <br />
at net.sf.cglib.core.ClassEmitter.begin_class(ClassEmitter.java:77) <br />
则是： <br />
Spring 和 Hibernate 共用的一些 jar 文件发生了版本冲突, 删除 WEB-INF/lib/asm-2.2.3.jar即可</p>
<img src ="http://www.blogjava.net/jvict/aggbug/225659.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jvict/" target="_blank">Documents</a> 2008-08-29 22:13 <a href="http://www.blogjava.net/jvict/articles/225659.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>在Hibernate中执行JDBC SQL语句</title><link>http://www.blogjava.net/jvict/articles/225174.html</link><dc:creator>Documents</dc:creator><author>Documents</author><pubDate>Thu, 28 Aug 2008 00:57:00 GMT</pubDate><guid>http://www.blogjava.net/jvict/articles/225174.html</guid><wfw:comment>http://www.blogjava.net/jvict/comments/225174.html</wfw:comment><comments>http://www.blogjava.net/jvict/articles/225174.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jvict/comments/commentRss/225174.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jvict/services/trackbacks/225174.html</trackback:ping><description><![CDATA[使用hibernate的session,取得一个连接,然后用jdbc.&nbsp;&nbsp;&nbsp;<br />
session.connection().prepareStatement("truncate &nbsp; table &nbsp; Table1").execute();&nbsp;&nbsp; <br />
<br />
此时事务勿需提交,效果一样<br />
//&nbsp;&nbsp;this.session.beginTransaction().commit();<br />
<br />
<img src ="http://www.blogjava.net/jvict/aggbug/225174.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jvict/" target="_blank">Documents</a> 2008-08-28 08:57 <a href="http://www.blogjava.net/jvict/articles/225174.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>用hibernate 连接SQLServer2005</title><link>http://www.blogjava.net/jvict/articles/223920.html</link><dc:creator>Documents</dc:creator><author>Documents</author><pubDate>Sat, 23 Aug 2008 16:17:00 GMT</pubDate><guid>http://www.blogjava.net/jvict/articles/223920.html</guid><wfw:comment>http://www.blogjava.net/jvict/comments/223920.html</wfw:comment><comments>http://www.blogjava.net/jvict/articles/223920.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jvict/comments/commentRss/223920.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jvict/services/trackbacks/223920.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 原文: http://blog.csdn.net/sonicluo3/archive/2007/06/24/1664367.aspx最近一段时间都在学习hibernate和SQLServer .发现SQLServer有个问题就是默认安装的时候1433端口是不会打开的所以必需在连接前手动去打开.首先看看数据库表的创建use&nbsp;demo;CREATE&nbsp;TA...&nbsp;&nbsp;<a href='http://www.blogjava.net/jvict/articles/223920.html'>阅读全文</a><img src ="http://www.blogjava.net/jvict/aggbug/223920.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jvict/" target="_blank">Documents</a> 2008-08-24 00:17 <a href="http://www.blogjava.net/jvict/articles/223920.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>