我想用jsp显示数据表表头的值?可是显示出来是乱码!

我想用jsp显示数据表表头的值?可是显示出来是乱码!
mysql数据库中存储的是中文.代码如下:
ResultSetMetaData statName= rs.getMetaData();
for(int i=1;i<=statName.getColumnCount();i++){
out.print(statName.getColumnName(i));
}

无论直接输出还是编码转化都是乱码.数据库中显示正常。
new String(str.getBytes("iso-8859-1"),"GB2312");
jsp文件如下:
<%@ page language="java" import="java.sql.*" contentType="text/html;charset=gb2312"%>

<html>
<head>
<title>My JSP '1.jsp' starting page</title>
</head>

<body>
<%
Connection con=null;
Statement stmt=null;
ResultSet rs=null;
String sql="";
String xy="理学院";
String bynf="2006";
request.setCharacterEncoding("gb2312");
//response.setCharacterEncoding("gb2312");

sql="select taizhang2.姓名,taizhang2.身份证 from biyes,taizhang2 where biyes.身份证号=taizhang2.身份证 and 院系所 like '%"+xy+"%'and taizhang2.毕业年份='"+bynf+"'";
try{
Class.forName("com.mysql.jdbc.Driver").newInstance();//加载驱动程序
String url="jdbc:mysql://localhost:3306/dhgl";
con=DriverManager.getConnection(url,"root","root"); //建立连接
System.out.println("数据库连接成功,准备插入数据......");
stmt=con.createStatement();
rs=stmt.executeQuery(sql);
ResultSetMetaData statName= rs.getMetaData();
//System.out.println(statName.getColumnCount());
response.setCharacterEncoding("gb2312");
for(int j=1;j<=statName.getColumnCount();j++)
{
out.println(statName.getColumnName(j)+"<br/>");
}
}
catch(ClassNotFoundException ce)
{ System.out.println(ce); }
catch(SQLException se)
{ System.out.println(se); }
catch(Exception e)
{ System.out.println(e); }
%>
</body>