在jsp中调用tomcat的连接池得到的数据是乱码问题
在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
期待您百忙之中的答复。谢谢