0%

在项目中需要往cookie中写数据,之前遇到的问题是如果写入的内容超出了单个cookie的大小限制(4096字节,4KB),则服务器端的response就会异常。
今天的问题则是,虽然已经把很长的内容分割成立个好几段,并分别写入了不同的cookie中,但服务器端同样不能正常响应。 查资料得知,不知浏览器对同一个站点的cookie的个数,单个cookie文件的大小有限制,服务器还对每一次请求的httpheader的大小有限制。
对tomcat服务器来说,需要修改server.xml中的响应配置,在形如

1
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" maxHttpHeaderSize="40960"/> 

的部分进行相应配置,上面的maxHttpHeaderSize就规定了本服务器可以处理的HttpHeader的大小上限为40KB。

Read more »

在struts2项目中,希望把用户的表单输入保存在本地,而不是保存在数据库上,于是想到了cookie。 在action中可以这样写:

1
2
3
Cookie cookie=new Cookie("myCookie","cookieContent"); 
cookie.setMaxAge(3600*24);//过期时间为一天
ServletActionContext.getResponse.addCookie(cookie);

但是始终不能保存到客户端的硬盘上,刚开始的时候以为cookie的读写操作只能写在jsp页面中,或者只能通过javascript来操作, 后来发现不是这么回事。 关键的原因在于cookie是有大小限制的,如果想写入的内容超过了4KB,写操作便不能完成。

Microsoft Internet Explorer 符合以下的 RFC 2109 推荐最小限制:

  • 至少 300 的 cookie
  • 至少每 cookie (如构成 cookie 非终端设置 Cookie 标头的语法描述中的字符的大小为单位) 的 4096 字节
  • 至少 20 cookie,每个唯一的主机或域名
Read more »

Extjs3.4的GridPanel在IE8中会出现日期无法render的现象,要解决这个问题,需要在 store的reader的column相应的字段上加上如下代码

1
2
3
4
convert:function(v,record){
var date=new Date.parseDate(v,'Y-m-dTH:i:s');
return date.format('Y年m月d日')
}

主要的问题就在parseDate的格式上,只要确保parseDate用到的日期格式和从服务器端传回来的数据格式是一致的,Extjs就可以进行解析了。 若想要查看服务器端传回来的数据格式,使用chrome或者firefox的firebug插件就可以了。 ps:Extjs在IE8上总有这样那样的问题,IE9和chrome就相对聪明多了。

Read more »

公司的Dev-Server用来部署测试版应用程序,需要访问DB-Server来进行数据库操作。 之前一直没有问题,自从公司搬家之后Dev-Server便开始出现问题。 Dev-Server上本来部署着4个网站,其中的两个是访问安装在Dev-Server本机上的数据库,这两个没有什么问题。 但是剩下的两个需要访问DB-Server,于是便出现了下面的问题。 凡是涉及到数据库的操作均无法进行。查看tomcat的log文件没有发现任何错误。查看apache的log文件则提示如下错误:

1
2
[Tue Nov 22 20:14:10 2011] [error] ajp_read_header: ajp_ilink_receive failed
[Tue Nov 22 20:14:10 2011] [error] (120006)APR does not understand this error code:  proxy: read response failed from 127.0.0.1:8009 (localhost)

紧接着这两行错误之前的还有诸如(OS 10060)(OS 10054) (OS 10062)之类的错误。 这些错误的定义可以在MSDN的文档中查到。具体的原因有连接超时,连接被中断等等。。。 试了很多办法去解决这个问题都不行。 最后下载了最新的jre7,把tomcat的java虚拟机路径改成了jre7的bin/client/jvm.dll之后,问题就解决了。

Read more »

  • **.docm:**application/vnd.ms-word.document.macroEnabled.12
  • .docx: application/vnd.openxmlformats-officedocument.wordprocessingml.document
  • **.dotm: **application/vnd.ms-word.template.macroEnabled.12
  • .dotx: application/vnd.openxmlformats-officedocument.wordprocessingml.template
  • **.ppsm: **application/vnd.ms-powerpoint.slideshow.macroEnabled.12
  • .ppsx: application/vnd.openxmlformats-officedocument.presentationml.slideshow
  • .pptm: application/vnd.ms-powerpoint.presentation.macroEnabled.12
  • .pptx: application/vnd.openxmlformats-officedocument.presentationml.presentation
  • .xlsb: application/vnd.ms-excel.sheet.binary.macroEnabled.12
  • .xlsm: application/vnd.ms-excel.sheet.macroEnabled.12
  • **.xlsx: **application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
  • .xps: application/vnd.ms-xpsdocument
  • .potm: application/vnd.ms-powerpoint.template.macroEnabled.12
  • .potx: application/vnd.openxmlformats-officedocument.presentationml.template
  • .ppam: application/vnd.ms-powerpoint.addin.macroEnabled.12
  • .pptm: application/vnd.ms-powerpoint.presentation.macroEnabled.12
  • .xlam: application/vnd.ms-excel.addin.macroEnabled.12
  • .xlsb: application/vnd.ms-excel.sheet.binary.macroEnabled.12
  • .xltm: application/vnd.ms-excel.template.macroEnabled.12
  • .xltx: application/vnd.openxmlformats-officedocument.spreadsheetml
Read more »

在使用Hibernate+Struts2进行项目开发的时候,有时需要对数据库中的多个表进行连接操作。 为了减少访问数据库的次数,可以将连接表的操作写入到procedure即存储过程当中。 通过procedure进行多个表的连接,然后返回查询结果。 查询结果中包含原本属于多个实体的多个属性。 于是可以构建一个实体类 MyEntity,在hibernate的MyEntity.hbm.xml中可以这样写:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="model.YourEntity">
<id name="yourEntityID"></id>
<property name="yourEntityProperty1"></property>
</class>
<sql-query name="callYourProcedure" callable="true">
<return class="model.YourEntity">
<return-property name="yourEntityID"
column="yourTableID">
</return-property>
<return-property name="yourEntityProperty1"
column="yourTableProperty1">
</return-property>
</return>
{call yourProcedureName}
</sql-query>
</hibernate-mapping>

而相应的Java实体类中要包含相应的属性和getter/setter。 procedure返回的查询结果的列名也要一一对应。 这样我们就不需要将Java实体类映射到数据库中具体的表了,只需要映射存储过程就行了。

Read more »

一开始想通过Ajax异步方式(Ext.Ajax.request())实现文件下载,却一直没有成功。 在firebug中查看response的时候,发现Ajax异步方式,服务器端将文件的2进制流写入了XMLHTTPRequest对象,于是一直无法将文件取出。 其实一开始的时候思路就是错的,下载文件不能通过异步方式实现。 那么怎样在Extjs中实现Ajax式(不刷新页面,只弹出下载对话框)的下载呢? 只需要在body中创建一个隐藏(hidden)表单(form)就可以了。 比如下载按钮的handler可以写成下面这种形式:  

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
handler : function () {
var body = Ext.getBody();
var frame = body.createChild({
tag: 'iframe'
, cls: 'x-hidden'
, id: 'iframe'
, name: 'iframe'
});

var form = body.createChild({
tag: 'form',
cls: 'x-hidden',
id: 'form',
action: 'your-action-URL',
target: 'iframe'
});

form.dom.submit();
}
Read more »

在使用Extjs+Struts2进行项目开发的时候,前台将json数据传到服务器端进行处理。 通过字符串接收传来的json数据,格式为[{“staffID”:1013900,”tehaiStatusCD”:00},{“staffID”:1018351,”tehaiStatusCD”:00}] 遇到的问题是,无法使用JSONArray.fromObject()方法对该字符串进行解析。通过JUnit测试发现了 java.lang.NoClassDefFoundError: net/sf/ezmorph/Morpher错误,说明缺少相应的jar包。 在这个网站上找到了名为ezmorph-1.0.1.jar的jar包。将其添加到项目中。 再查看一下这个网站上列出的该包的依赖关系,保证你的项目中还加入了以下几个包 junit.jar commons-lang.jar commons-beanutils.jar commons-logging.jar log4j.jar 问题就解决了。 thank google

Read more »

在重装了windows 7 系统(当然是盗版)之后,键盘一直不能使用日语布局。在网上查中文的资料一直没有理想的结果。今天试着日语google了一下,当即找到了解决方案。 如下所示 要解决这个问题,在注册表的HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\i8042prt\Parameters  位置中设定如下值

值的名称 值的种类
LayerDriver JPN REG_SZ kbd106.dll
OverrideKeyboardIdentifier REG_SZ PCAT_106KEY
OverrideKeyboardSubtype DWORD 2
OverrideKeyboardType DWORD 7

ps:感慨一下,日本人写的这些手册一类的东西真是赏心悦目啊

Read more »

** 我爱问艾未未**

搜集自twitter上草泥马们对艾未未(艾神,艾婶)的提问推

Aiww:

1、一次问一个问题,或者我只回答一个。2、问的短才是问的聪明。3、可以问隐私。4、我的回答可以是反问。

如果人们愿意,用不了五年。RT @sudo_i: 问艾神 @aiww五年或十年之内中国能走入民主社会吗?为了我们的下一代,周围有条件的人都选择离开,也有好多人很迷茫,看不到希望 。#aiww

我很单薄,但是比邪恶要强大。RT @shenxianyuan: @aiww我问一个,看了卫报你写给卡梅伦的信,你自己觉得论证单薄吗?我觉得挺单薄啊。这样不好。

能被你看到。RT @luxi78: @aiww您希望您在推上的付出能得到一个什么样的结果

艾老已经在教我。RT @laoyang945: @aiww请问你会让艾老在中国上学吗?老师叫你去见他你会去吗?

有很黑的意义。RT @ptoq: @aiww艾神呀,可否谈一下美国黑人民权运动对于中国民主进程的借鉴意义

Read more »