﻿<?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-Reg-随笔分类-BUG</title><link>http://www.blogjava.net/Reg/category/44621.html</link><description /><language>zh-cn</language><lastBuildDate>Sat, 26 Jun 2010 23:05:02 GMT</lastBuildDate><pubDate>Sat, 26 Jun 2010 23:05:02 GMT</pubDate><ttl>60</ttl><item><title>java.lang.NoSuchMethodError: com.opensymphony.xwork2.ActionContext.get(Ljava/lang/Object;)Ljava/lang/Object;&lt;br /&gt;java.lang.ClassNotFoundException: com.opensymphony.xwork2.util.TextUtils&lt;br/&gt;</title><link>http://www.blogjava.net/Reg/archive/2010/04/21/318934.html</link><dc:creator>艾波</dc:creator><author>艾波</author><pubDate>Wed, 21 Apr 2010 02:17:00 GMT</pubDate><guid>http://www.blogjava.net/Reg/archive/2010/04/21/318934.html</guid><wfw:comment>http://www.blogjava.net/Reg/comments/318934.html</wfw:comment><comments>http://www.blogjava.net/Reg/archive/2010/04/21/318934.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Reg/comments/commentRss/318934.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Reg/services/trackbacks/318934.html</trackback:ping><description><![CDATA[<span  style="color: #fd83c9; font-family: Arial; font-size: 12px; line-height: 20px; ">
<p style="line-height: normal; "><span  style=" font-size: 16px; font-weight: bold; line-height: 20px; ">struts2.1.8不认jsonplugin插件解决办法</span></p>
<p style="line-height: normal; ">我用到了struts的最新版本2.1.8，第一次用新版本，对新版本的改动还不很了解。</p>
<p style="line-height: normal; ">只加入了以下jar包：</p>
<p style="line-height: normal; ">commons-fileupload-1.2.1.jar</p>
<p style="line-height: normal; ">commons-io-1.3.2.jar</p>
<p style="line-height: normal; ">commons-logging-1.0.4.jar</p>
<p style="line-height: normal; ">freemarker-2.3.15.jar</p>
<p style="line-height: normal; ">ognl-2.7.3.jar</p>
<p style="line-height: normal; ">spring-test-2.5.6.jar</p>
<p style="line-height: normal; ">struts2-core-2.1.8.jar</p>
<p style="line-height: normal; ">xwork-core-2.1.6.jar</p>
<p style="line-height: normal; ">这两天用到了json插件，我按照以前的版本加入jsonlugin插件，但是搞了一天struts 的action就是不认json插件，第二天换用2.1.6版本的包却可以使用，又换回2.1.8版本还是不行，最后在下载好的lib文件夹里找到了以下jar包：</p>
<p style="line-height: normal; ">json-lib-2.1.jar</p>
<p style="line-height: normal; ">struts2-json-plugin-2.1.8.jar</p>
<p style="line-height: normal; ">struts2-junit-plugin-2.1.8.jar</p>
<p style="line-height: normal; ">上面三个包加入项目里之后，再删除jsonplugin-0.33.jar包</p>
<p style="line-height: normal; ">一切都运行正常了</p>
</span>
<img src ="http://www.blogjava.net/Reg/aggbug/318934.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Reg/" target="_blank">艾波</a> 2010-04-21 10:17 <a href="http://www.blogjava.net/Reg/archive/2010/04/21/318934.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>java.lang.AbstractMethodError: com.microsoft.jdbc.base.BaseDatabaseMetaData.supportsGetGeneratedKeys()Z</title><link>http://www.blogjava.net/Reg/archive/2010/04/12/318064.html</link><dc:creator>艾波</dc:creator><author>艾波</author><pubDate>Mon, 12 Apr 2010 07:12:00 GMT</pubDate><guid>http://www.blogjava.net/Reg/archive/2010/04/12/318064.html</guid><wfw:comment>http://www.blogjava.net/Reg/comments/318064.html</wfw:comment><comments>http://www.blogjava.net/Reg/archive/2010/04/12/318064.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Reg/comments/commentRss/318064.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Reg/services/trackbacks/318064.html</trackback:ping><description><![CDATA[<p>解决：问谷老师得知是microsoft提供的数据库驱动存在bug。需要换一种驱动连接，使用jtds（下载地址：http://sourceforge.net/projects/jtds/files/）下载jtds1.2版，解压得到jtds-1.2.jar，引用到eclipse中项目目录下（去除原驱动引用），更改hibernate配置文件：</p>
<p>原驱动连接配置：</p>
<p>&nbsp;&lt;property name="connection.driver_class"&gt;com.microsoft.jdbc.sqlserver.SQLServerDriver&lt;/property&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;property name="connection.url"&gt;jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=hibernate&lt;/property&gt;<br />
更改jtds连接：&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;property name="connection.driver_class"&gt;net.sourceforge.jtds.jdbc.Driver&lt;/property&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;property name="connection.url"&gt;jdbc:jtds:sqlserver://127.0.0.1:1433;DatabaseName=hibernate&lt;/property&gt;</p>
<p>问题得到解决。补充：java代码调原驱动连接数据库是没有问题的，搭配hibernate会有此问题。</p>
<p><br />
转载自：http://blog.csdn.net/myloveyoyo1314/archive/2010/01/07/5152902.aspx</p>
<p>之前出现这个问题时一直没在意,以为是重装了系统后软件中少了什么东西导致的,因为在连接mysql5.1时正常,连接sql2000时就是连不上,郁闷,终于在网上找到了解答,原来是sql驱动和hibernate的兼容性问题,现问题已解决,留此文备查.</p>
<p>&nbsp;</p>
<p>本文来自CSDN博客，转载请标明出处：http://blog.csdn.net/jsship/archive/2010/03/13/5377210.aspx</p>
<img src ="http://www.blogjava.net/Reg/aggbug/318064.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Reg/" target="_blank">艾波</a> 2010-04-12 15:12 <a href="http://www.blogjava.net/Reg/archive/2010/04/12/318064.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>java.lang.AbstractMethodError: com.microsoft.jdbc.sqlserver.SQLServerConnection.getHoldability()I </title><link>http://www.blogjava.net/Reg/archive/2010/04/12/318059.html</link><dc:creator>艾波</dc:creator><author>艾波</author><pubDate>Mon, 12 Apr 2010 06:37:00 GMT</pubDate><guid>http://www.blogjava.net/Reg/archive/2010/04/12/318059.html</guid><wfw:comment>http://www.blogjava.net/Reg/comments/318059.html</wfw:comment><comments>http://www.blogjava.net/Reg/archive/2010/04/12/318059.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Reg/comments/commentRss/318059.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Reg/services/trackbacks/318059.html</trackback:ping><description><![CDATA[<p style="text-indent: 2em">java.lang.AbstractMethodError: com.microsoft.jdbc.sqlserver.SQLServerConnection.getHoldability()I </p>
<p style="text-indent: 2em">at com.mchange.v2.c3p0.impl.NewPooledConnection.carefulCheckHoldability(NewPooledConnection.java:117) at com.mchange.v2.c3p0.impl.NewPooledConnection.&lt;init&gt;(NewPooledConnection.java:109) at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:198) at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:171) at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.acquireResource(C3P0PooledConnectionPool.java:137) at com.mchange.v2.resourcepool.BasicResourcePool.doAcquire(BasicResourcePool.java:1014) at com.mchange.v2.resourcepool.BasicResourcePool.access$800(BasicResourcePool.java:32) at com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask.run(BasicResourcePool.java:1810) at com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:547)</p>
<p style="text-indent: 2em"><strong>后来发现我从spring2.5中取的C3P0JAR包，与HIBERNATE中提供的不一致，换了就好 了</strong> </p>
<img src ="http://www.blogjava.net/Reg/aggbug/318059.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Reg/" target="_blank">艾波</a> 2010-04-12 14:37 <a href="http://www.blogjava.net/Reg/archive/2010/04/12/318059.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JSP乱码问题剖析与终极解决方案</title><link>http://www.blogjava.net/Reg/archive/2010/01/20/310217.html</link><dc:creator>艾波</dc:creator><author>艾波</author><pubDate>Wed, 20 Jan 2010 05:02:00 GMT</pubDate><guid>http://www.blogjava.net/Reg/archive/2010/01/20/310217.html</guid><wfw:comment>http://www.blogjava.net/Reg/comments/310217.html</wfw:comment><comments>http://www.blogjava.net/Reg/archive/2010/01/20/310217.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Reg/comments/commentRss/310217.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Reg/services/trackbacks/310217.html</trackback:ping><description><![CDATA[<span class="t_tag" onclick="tagshow(event)" href="tag.php?name=%B7%FE%CE%F1%C6%F7">服务器</span>返回乱码页面，请求的数据发送到服务器后取出来是乱码，以上两个问题是web开发人员经常遇到的问题，解决这类问题需要理解乱码问题的根源所在。<br />
<br />
1. 字符编码<br />
字符是以二进制编码的形式保存在存储器中的，如：&#8220;我&#8221;这个字，可以用gbk的方式保存(用字节表示是[-50, -46])，也可以用utf-8的方式保存(用字节表示是[-26, -120, -111])。程序在读取数据块时需要一个字节一个字节的读取，然后将字节转换为字符，显然如果程序不知道字节是表示的什么编码的字符，读出来就会出问题，这就如同你说了一句话，我如果事先不知道你说的将是什么语言，就没法去<span class="t_tag" onclick="tagshow(event)" href="tag.php?name=%B7%AD%D2%EB">翻译</span>了，如果你说的<span class="t_tag" onclick="tagshow(event)" href="tag.php?name=%D3%A2%D3%EF">英语</span>，我以为是日语，然后按日语的方式来理解到我的主观意识，显然结果就是不知你在说什么了，就成了我们程序中的乱码。所以对于前面我所表示的字节数组byte[] data = {-26, -120, -111},我们必须这样做才能得到正确的字符: String s = new String(data, "utf-8")，（注：这里用了字符串，因为字符串就是由一个个字符组成的），如果我们不指定参数里面的"utf-8"，那么系统就会用<span class="t_tag" onclick="tagshow(event)" href="tag.php?name=%B2%D9%D7%F7%CF%B5%CD%B3">操作系统</span>默认的编码了，这可能是gbk或是什么任何编码。<br />
<br />
2. jsp服务器返回乱码页面<br />
&nbsp;&nbsp;2.1 pageEncoding<br />
&nbsp;&nbsp;在jsp页面的page指令中我们指定了pageEncoding属性，这个属性就是告诉jsp容器如何读取这个jsp页面，所以这个属性必须与jsp页面保存的编码保持一致。也就是说，如果你页面的编码保存为gbk, 而pageEncoding设置成了utf-8，则jsp容器在读这个jsp页面的时候就会出错(如果存在非英文字符的话)。jsp容器读jsp的目的是将其翻译成java代码，所以如果读错了jsp页面，翻译出来的java代码也就会出错，如果这种错误影响了java文件的语法，就会在访问时出现无法编译jsp的语法错误，如果没有影响到语法，就会出现最终显示的html页面上有乱码的错误。所以如果遇到显示乱码，则检查pageEncoding是否正确。<br />
&nbsp;&nbsp;2.2 contentType<br />
&nbsp;&nbsp;page指令中的contentType属性用于指定返回给<span class="t_tag" onclick="tagshow(event)" href="tag.php?name=%E4%AF%C0%C0%C6%F7">浏览器</span>的数据的文档类型，服务器通过http头信息返回给浏览器这个信息，所以在浏览器 html代码中用户是看不到的。同时contentType属性还可以指定页面的编码，即服务器即以什么编码发送页面数据。比如说中文数据，可以用gbk 或utf-8的方式来发送，这个编码跟jsp页面的编码没有关系，只要设定的编码支持页面中的字符就行了。相同于有了一个字符串s="中国人",然后用 s.getBytes("gbk")的方式来发送s。所以由于contentType错误出现乱码的概念不高，但也要注意一下，比如说如果设置成了"iso8859-1"，则浏览器就会显示乱码了。contentType还有一个用，就是浏览器将会依据这个编码来显示页面，在IE下点右键，然后选择&#8220;编码&#8221;，你就可以注意到页面是以什么编码显示的了。<br />
&nbsp;&nbsp;2.3 如果是servlet返回的结果<br />
&nbsp;&nbsp;上面说的是jsp，如果servlet的话就要注意设置response.setCharacterEncoding(""),如果没有设置，服务器会默认为是iso8859-1，设置后得到的writer（即response.getWriter()）对象，就会依据这个编码来向客户端写数据，writer对象的构造与以下方式类似：PrintWriter pw = new PrinterWriter(new OutputStreamWriter(socket.getOutputStream(), "编码"))，这里提到了通过socket得到输出流，不明白的话可以参考我的另一篇文章。pw.write("你好")，实际上就是先通过byte[] data = "你好".getBytes("编码"),然后将data写给客户端。<br />
)<br />
<br />
3. 服务器得到客户端传过来的数据为乱码<br />
&nbsp;&nbsp;3.1 通用解决方案<br />
&nbsp;&nbsp;String param = request.getParameter("paramName")，如果浏览器传过来的为中文，则取出来的数据将是乱码。为什么呢？因为客户端只能将数据的编码传给服务器，如[-26, -120, -111]，但服务器并不知道这是什么字符集的编码，于是假定为iso8859-1, 用这种方式构造了字符串s = new String(data, "iso8859-1")，显然这样肯定是乱码。解决方案很简单，我们得到值param后，用byte data[] = param.getBytes("iso8859-1"),这样data就是客户端传过来的真实编码，然后我们再重新创建字符串：param = new String(data, "正确的编码");<br />
&nbsp;&nbsp;3.2 POST请求<br />
&nbsp;&nbsp;如于post请求处理起来更简单，get请求与post请求向服务器发送数据的方式不一样，get请求的参数是通过HTTP头信息中的第一行数据发送的，是URI的一部分，而post请求则是在发送完HTTP头信息后作为单独的数据块发送的。因此对于get请求的参数，我们在使用request之前服务器已经读出来了，已经是乱码了，只能用前面的方案，但对于post请求的数据，我们在调用getParameter或getReader之前，服务器并没有去处理，所以我们可以在getParameter之前先告诉服务器正确的编码，通过request.setCharacterEncoding("正确的编码")，然后再读取参数。<br />
<br />
4 AJax<br />
&nbsp;&nbsp;对于ajax请求注意要用utf-8编码，request和response都需要使用utf-8
 <img src ="http://www.blogjava.net/Reg/aggbug/310217.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Reg/" target="_blank">艾波</a> 2010-01-20 13:02 <a href="http://www.blogjava.net/Reg/archive/2010/01/20/310217.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JSP基本登录模块Ⅴ(防SQL注入攻击)&lt;font color=red&gt;【转】&lt;/font&gt;</title><link>http://www.blogjava.net/Reg/archive/2009/11/25/303575.html</link><dc:creator>艾波</dc:creator><author>艾波</author><pubDate>Wed, 25 Nov 2009 02:34:00 GMT</pubDate><guid>http://www.blogjava.net/Reg/archive/2009/11/25/303575.html</guid><wfw:comment>http://www.blogjava.net/Reg/comments/303575.html</wfw:comment><comments>http://www.blogjava.net/Reg/archive/2009/11/25/303575.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/Reg/comments/commentRss/303575.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Reg/services/trackbacks/303575.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;&nbsp;在JSP基本登录模块Ⅳ中，如果在密码栏输入&#8220;'&nbsp;or&nbsp;'1'='1&#8221;，我们发现不知道密码也可以登录成功。这是因为当我们的密码为&#8220;'&nbsp;or&nbsp;'1'='1&#8221;时，SQL语句变为：Select&nbsp;*&nbsp;FROM&nbsp;member&nbsp;Where&nbsp;...&nbsp;&nbsp;<a href='http://www.blogjava.net/Reg/archive/2009/11/25/303575.html'>阅读全文</a><img src ="http://www.blogjava.net/Reg/aggbug/303575.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Reg/" target="_blank">艾波</a> 2009-11-25 10:34 <a href="http://www.blogjava.net/Reg/archive/2009/11/25/303575.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>