| Yun's profile无尽的探索PhotosBlogLists | Help |
|
|
无尽的探索从混沌到有序 November 26 MySQL Reference: 12.4.3. Statements That Cause an Implicit CommitEach of the following statements (and any synonyms for them) implicitly end a transaction, as if you had done a
Transactions cannot be nested. This is a consequence of the implicit Statements that cause an implicit commit cannot be used in an XA transaction while the transaction is in an June 19 jQuery form提交时中文乱码 [转]关键字: ajax post 中文 乱码 在使用jsp开始时,一不小心就会出现中文乱码的情况。通常可以使用如下方法解决:
jQuery.each( a, function(){
s.push( encodeURIComponent(this.name) + "=" + encodeURIComponent( this.value ) );
});所以传给servlet的就是utf-8编码了,那么我们在过滤器中就必须使用utf-8进行转码。 对其中的过滤器做了下修正,在IE下和chrome下,request.getContentType()的值为"application/x-www-form-urlencoded",但是在firefox下,这个值为"application/x-www-form-urlencoded; charset=UTF-8",不是很明白ff为什么会是这个值。 filter代码如下:
package com.ajax.demo.action;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class AjaxPostFilter implements Filter {
private static final String IE_CONTENT_TYPE = "application/x-www-form-urlencoded";
private static final String FF_AJAX_CONTENT_TYPE = "application/x-www-form-urlencoded; charset=UTF-8";
private static final String XMLHTTP_REQUEST = "XMLHttpRequest";
private static final String AJAX_CHARACTER_ENCODING_UTF8 = "UTF-8";
public void destroy() {
// TODO Auto-generated method stub
}
public void doFilter(ServletRequest servletRequest,
ServletResponse servletResponse, FilterChain filterChain)
throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) servletRequest;
HttpServletResponse response = (HttpServletResponse) servletResponse;
String requestedWith = request.getHeader("x-requested-with");
String type = request.getContentType();
if (XMLHTTP_REQUEST.equals(requestedWith)&& (FF_AJAX_CONTENT_TYPE.equals(type)
||IE_CONTENT_TYPE.equals(type))) {
request.setCharacterEncoding(AJAX_CHARACTER_ENCODING_UTF8);
response.setCharacterEncoding(AJAX_CHARACTER_ENCODING_UTF8);
// request.getParameterMap();
}
filterChain.doFilter(request, response);
}
public void init(FilterConfig arg0) throws ServletException {
// TODO Auto-generated method stub
}
}
web.xml配置,我用的是struts
<filter> <filter-name>ajaxEncodeFilter</filter-name> <filter-class>com.ajax.demo.action.AjaxPostFilter</filter-class> </filter> <filter-mapping> <filter-name>ajaxEncodeFilter</filter-name> <url-pattern>*.do</url-pattern> </filter-mapping> <filter-mapping> <filter-name>ajaxEncodeFilter</filter-name> <url-pattern>*.jsp</url-pattern> </filter-mapping> 这个filter应该在你的EncodeFilter之后,RoyMax说要在之前,我试了下是不行的。 经过这样设置之后,jsp使用gbk采用ajax提交就不会存在中文乱码了。 在使用chrome进行测试时,还发现chrome的一个奇怪问题,对于返回的结果,使用jquery.ajax处理
success:function showResponse(responseText, statusText) {
//这里name为input text id,如果"aa"在前,那么name的值会改为aa+返回的结果
$('#name').val("aa"+responseText);
//如果改成$('#name').val(responseText+"aa"),那么name的值仍然是//responseText,“aa”没有加到后面去,不知道是什么原因参考:http://jasin2008.javaeye.com/blog/312854 February 15 又见情人节二月的北京,春寒料峭。 清晨,还听见屋外呼呼地吹着大风。我和老婆伸着腰,抖擞精神,起床来。岳母张老师已经准备好了丰盛的早餐:咖喱排骨,凉拌紫白菜丝,凉拌榨菜丝,还有煮元宵。我和老婆都来不及洗漱就被喊上桌,先吃饭了。 感谢岳母准备好这么丰富营养的早餐,我们吃得饱饱的。然后洗漱完毕,收拾好行李,动身从昌平往城区赶了。还在车上,老婆就和我商量今天日子怎么安排? 今天可不是一般的日子,是情人节,认识老婆以来的过的第二个情人节。 早早的日子里,老婆就咕噜着要礼物,说如果没有礼物,就要把我啃成胡萝卜。这是可爱的、应该的事情啊,但买礼物也是件头疼的事情。记得去年情人节,也是在仓促之间,给当时的还是女朋友身份的老婆,买了一盒德芙巧克力,老婆珍视地放在床头,放了许久才开封逐一地吃掉。 又见情人节。怎么过?礼物是什么?老婆告诉我,给我的礼物她已经准备好了。我给老婆礼物了?还是个秘密。我只是坦言告诉老婆,给她的礼物需要她自己亲自去挑选。于是建议我们先去看电影,然后五道口去选礼物。 时光如沙漏中的沙一点点流逝,早晨还在昌平,到达知春里的时候已经是正午时分了。告诉妈妈我们不吃午饭了,径直乘车386去中关村,然后走路去美嘉电影城。在中关村大街上,随处可见一对对的情侣手牵着手,也时不时的看到街头花贩向路上的情侣兜售玫瑰。来到电影城,里面人头攒动,来看来电影的情侣很多。在三楼售票厅,买票的人已经排成一条长龙一直排到楼梯间。和老婆商量,决定不看电影了,回家去看下载的《马达加斯加2》。在此之前,还是去五道口,给老婆挑选礼物。 乘车731来到五道口,下了车,我拉着老婆来到宝岛眼镜店,这才告诉老婆,我要为她挑选一副太阳镜作为情人节礼物。老婆欣喜不已。总算我这番心思没有白费,还好没有被老婆啃成胡萝卜。店里的太阳镜样式倒是不少,老婆初初地挑来选去的,没有特别满意的。我们又出去逛了逛其它的三家眼镜店,都没挑到合适的,最后还是回到宝岛眼镜店,挑中了一款粉红色大眼镜的太阳镜。另外宝岛眼镜做优惠买一赠一的活动,如是还挑了另一副墨绿色的运动型太阳镜。老婆兴奋不已,回来的路上都戴着粉红色太阳镜。后来,我还给老婆买了一束三朵的含有一朵蓝色妖姬的玫瑰花。这个情人节总算是有个好的交代了。 老婆在路上说,她希望天天都是情人节。是啊老婆,我也希望天天都是情人节,这样我们能够天天这样愉快的逛街开心地购物。 November 14 Linux下修改网卡IP和网关修改ifcfg-eth0文件内容: [root@yourmachine ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0 修改resolv.conf: [root@yourmachine ~]# vi /etc/resolv.conf nameserver 10.130.1.1 重新启动网络配置 September 12 Linux下安装Apache httpd + Subversion服务配置先决条件为了让你的版本库使用HTTP网络,你基本上需要两个包里的四个部分。你需要Apache httpd2.0和包括的mod_dav DAV模块,Subversion和与之一同分发的mod_dav_svn文件系统提供者模块,如果你有了这些组件,网络化你的版本库将非常简单,如:
你可以通过从源代码编译httpd和Subversion来完成前两个项目,也可以通过你的系统上的已经编译好的二进制包来安装。最新的使用Apache HTTP的Subversion的编译方法和Apache的配置方式可以看Subversion源代码树根目录的 基本的 Apache 配置一旦你安装了必须的组件,剩下的工作就是在 LoadModule dav_svn_module modules/mod_dav_svn.so 注意,如果mod_dav是作为共享对象编译(而不是静态链接到httpd程序),你需要为它使用 LoadModule dav_module modules/mod_dav.so LoadModule dav_svn_module modules/mod_dav_svn.so 基本HTTP认证最简单的客户端认证方式是通过HTTP基本认证机制,简单的使用用户名和密码来验证一个用户所自称的身份,Apache提供了一个htpasswd工具来管理可接受的用户名和密码,这些就是你希望赋予Subversion特别权限的用户,让我们给Sally和Harry赋予提交权限,首先,我们需要添加他们到密码文件。 $ ### First time: use -c to create the file $ ### Use -m to use MD5 encryption of the password, which is more secure $ htpasswd -cm /etc/svn-auth-file harry New password: ***** Re-type new password: ***** Adding password for user harry $ htpasswd -m /etc/svn-auth-file sally New password: ******* Re-type new password: ******* Adding password for user sally $ 下一步,你需要在 添加完这三个指示,你的 <Location /svn> DAV svn SVNParentPath /usr/local/svn AuthType Basic AuthName "Subversion repository" AuthUserFile /etc/svn-auth-file </Location> 这个 <Location /svn> DAV svn SVNParentPath /usr/local/svn AuthType Basic AuthName "Subversion repository" AuthUserFile /etc/svn-auth-file Require valid-user </Location> 授权选项此刻,你已经配置了认证,但是没有配置授权,Apache可以要求用户认证并且确定身份,但是并没有说明这个身份的怎样允许和限制,这个部分描述了两种控制访问版本库的策略。 整体访问控制最简单的访问控制形式是授权特定用户为只读版本库访问或者是读/写访问版本库。 你可以通过在 <Location /svn> DAV svn SVNParentPath /usr/local/svn # how to authenticate a user AuthType Basic AuthName "Subversion repository" AuthUserFile /path/to/users/file # only authenticated users may access the repository Require valid-user </Location> 有时候,你不需要这样严密,举个例子,Subversion自己在http://svn.collab.net/repos/svn的源代码允许全世界的人执行版本库的只读操作(例如检出我们的工作拷贝和使用浏览器浏览版本库),但是限定只有认证用户可以执行写操作。为了执行特定的限制,你可以使用 在 <Location /svn>
DAV svn
SVNParentPath /usr/local/svn
# how to authenticate a user
AuthType Basic
AuthName "Subversion repository"
AuthUserFile /path/to/users/file
# For any operations other than these, require an authenticated user.
<LimitExcept GET PROPFIND OPTIONS REPORT>
Require valid-user
</LimitExcept>
</Location>
这里只是一些简单的例子,想看关于Apache访问控制 每目录访问控制也可以使用Apache的httpd模块mod_authz_svn更加细致的设置访问权限,这个模块收集客户端传递过来的不同的晦涩的URL信息,询问mod_dav_svn来解码,然后根据在配置文件定义的访问政策来裁决请求。 如果你从源代码创建Subversion,mod_authz_svn会自动附加到mod_dav_svn,许多二进制分发版本也会自动安装,为了验证它是安装正确,确定它是在 LoadModule dav_module modules/mod_dav.so LoadModule dav_svn_module modules/mod_dav_svn.so LoadModule authz_svn_module modules/mod_authz_svn.so 为了激活这个模块,你需要配置你的 Apache非常的灵活,你可以从三种模式里选择一种来配置你的区块,作为开始,你选择一种基本的配置模式。(下面的例子非常简单;见Apache自己的文档中的认证和授权选项来查看更多的细节。) 最简单的区块是允许任何人可以访问,在这个场景里,Apache决不会发送认证请求,所有的用户作为“匿名”对待。 例 6.1. 匿名访问的配置实例。 <Location /repos>
DAV svn
SVNParentPath /usr/local/svn
# our access control policy
AuthzSVNAccessFile /path/to/access/file
</Location>
在另一个极端,你可以配置为拒绝所有人的认证,所有客户端必须提供证明自己身份的证书,你通过 例 6.2. 一个认证访问的配置实例。 <Location /repos> DAV svn SVNParentPath /usr/local/svn # our access control policy AuthzSVNAccessFile /path/to/access/file # only authenticated users may access the repository Require valid-user # how to authenticate a user AuthType Basic AuthName "Subversion repository" AuthUserFile /path/to/users/file </Location> Apache和svnserve都可以给用户赋予(或拒绝)访问许可,通常是对整个版本库:一个用户可以读版本库(或不),而且他可以写版本库(或不)。如果可能,也可以定义细粒度的访问规则。一组用户可以有版本库的一个目录的读写权限,但是没有其它的;另一个目录可以是只对一少部分用户可读。 两种服务器都使用同样的文件格式描述路径为基础的规则,如果是Apache,需要加载mod_authz_svn模块,然后添加 当你的服务器知道去查找规则文件时,就是需要定义规则的时候了。 访问文件的语法与svnserve.conf和运行中配置文件非常相似,以( 具体一点:这个小节的名称是 [calc:/branches/calc/bug-142] harry = rw sally = r 在第一个例子里,用户 当然,访问控制是父目录传递给子目录的,这意味着我们可以为Sally指定一个子目录的不同访问策略: [calc:/branches/calc/bug-142] harry = rw sally = r # give sally write access only to the 'testing' subdir [calc:/branches/calc/bug-142/testing] sally = rw 现在Sally可以读取分支的 也可以通过继承规则明确的的拒绝某人的访问,只需要设置用户名参数为空: [calc:/branches/calc/bug-142] harry = rw sally = r [calc:/branches/calc/bug-142/secret] harry = 在这个例子里,Harry对 需要记住的是最详细的的路径会被匹配,服务器首先找到匹配自己的目录,然后父目录,然后父目录的父目录,就这样继续下去,更具体的路径控制会覆盖所有继承下来的访问控制。 缺省情况下,没有人对版本库有任何访问,这意味着如果你已经从一个空文件开始,你会希望给所有用户对版本库根目录具备读权限,你可以使用星号( [/] * = r 这是一个普通的设置;注意在小节名中没有提到版本库名称,这让所有版本库对所有的用户可读。当所有用户对版本库有了读权利,你可以赋予特定用户对特定子目录的 星号( 访问文件也允许你定义一组的用户,很像Unix的 [groups] calc-developers = harry, sally, joe paint-developers = frank, sally, jane everyone = harry, sally, joe, frank, sally, jane 组可以被赋予通用户一样的访问权限,使用“at”( [calc:/projects/calc] @calc-developers = rw [paint:/projects/paint] @paint-developers = rw jane = r 组中也可以定义为包含其它的组: [groups] calc-developers = harry, sally, joe paint-developers = frank, sally, jane everyone = @calc-developers, @paint-developers 参考: |
|||
|
|