在jsp中调用tomcat的连接池得到的数据是乱码问题

jeehoo 2003-10-17 02:36:01
在zdnet的文章《Tomcat4的数据库连接池配置》,应该不少人看过。

我把文中的写法套用过自己系统的时候,出现一些不解的问题,希望能为我析疑。

我的文件

server.xml

<!-- Tomcat Root Context -->



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



<Resource name="jdbc/mysql" auth="Container"



type="javax.sql.DataSource"/>



<ResourceParams name="jdbc/mysql">



<parameter>



<name>factory</name>



<value>org.apache.commons.dbcp.BasicDataSourceFactory</value>



</parameter>



<parameter>



<name>driverClassName</name>



<value>org.gjt.mm.mysql.Driver</value>



</parameter>



<parameter>



<name>url</name>



<value>jdbc:mysql://localhost/addressbook</value>



</parameter>



<parameter>



<name>username</name>



<value>root</value>



</parameter>



<parameter>



<name>password</name>



<value></value>



</parameter>



<parameter>



<name>maxActive</name>



<value>20</value>



</parameter>



<parameter>



<name>maxIdle</name>



<value>10</value>



</parameter>



<parameter>



<name>maxWait</name>



<value>-1</value>



</parameter>



</ResourceParams>



</Context>



<!-- Tomcat Root Context end-->



测试的代码:testdb.jsp



<%@ page contentType="text/html;charset=8859_1"%>

<%@ page import= "java.sql.* "%>

<%@ page import= "javax.naming.* "%>

<%

try{

Context initCtx = new InitialContext();

Context ctx = (Context) initCtx.lookup("java:comp/env"); //获取连接池对象

Object obj = (Object) ctx.lookup("jdbc/mysql"); //类型转换

//Object obj = (Object) ctx.lookup("java:comp/env jdbc/mysql");

javax.sql.DataSource ds = (javax.sql.DataSource)obj;

Connection conn = ds.getConnection();

Statement stmt = conn.createStatement();

//String strSql = " insert into test(id,name) values('00001','holen') "; //stmt.executeUpdate(strSql);

String strSql = " select * from addressbook ";

ResultSet rs = stmt.executeQuery(strSql);

out.println(obj.toString());

out.println("<table border=1>");

int i=1;

for (i=1;i<20;i++)

{

if (rs.absolute(i))

{

out.println("<tr><td>");

out.println(rs.getString(1));

out.println("</td>");

out.println("<td>");

out.print(rs.getString(2));

out.println("</td>");

out.println("<td>");

out.print(rs.getString(3));

out.println("</td></tr>");

}

else

{

break;

}

}

out.println("</table>");

}catch(Exception ex){

ex.printStackTrace();

throw new SQLException("cannot get Connection pool.");

}

%>

<hr>



出现结果:

q

`

r
rrr
`

s

`

qq
qqq
qqq

qqqqq
qqq
qqqq


应该出现的结果:

1
jjx
zhejiang yuyao

2
222
zhejiang yuyao

3
tete
zhejiang yuyao

11
111
111

11111
111
1111




期待您百忙之中的答复。谢谢
...全文
58 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
wjcwjc 2003-10-21
  • 打赏
  • 举报
回复
为什么我的没有问题呀,我连的是sybase数据库,应该与你的数据库有关把
jeehoo 2003-10-20
  • 打赏
  • 举报
回复
现在的解决:
<parameter>

<name>url</name>
<value>jdbc:mysql://localhost:3306/addressbook?useUnicode=true&characterEncoding=GBK</value>

</parameter>

困惑是,我曾在后面加上
<parameter>

<name>useUnicode</name>

<value>true</value>

</parameter>

<parameter>

<name>characterEncoding</name>

<value>gb2312</value>

</parameter>
不过好像没起作用的说,为什么呢?
jeehoo 2003-10-20
  • 打赏
  • 举报
回复
现在的解决:
<parameter>

<name>url</name>
<value>jdbc:mysql://localhost:3306/addressbook?useUnicode=true&characterEncoding=GBK</value>

</parameter>

困惑是,我曾在后面加上
<parameter>

<name>useUnicode</name>

<value>true</value>

</parameter>

<parameter>

<name>characterEncoding</name>

<value>gb2312</value>

</parameter>
不过好像没起作用的说,为什么呢?
klbt 2003-10-17
  • 打赏
  • 举报
回复
字符集问题?

24,923

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 Apache
社区管理员
  • Apache
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧