JSP访问(读写)Mysql数据库及乱码处理
时间:2006-01-20 来源:shadow-lx
在阅读本文前请先正确设置JSP、Tomcat、Mysql数据库及JDBC驱动,如有疑问请阅读相关资料。
推荐文章:http://www.numb1.com/com/jsp/show.php?no=05083001
按照文章的代码作肯定能解决乱码问题
乱码的处理
第一种方法:
修改String u ="jdbc:mysql://localhost/numb1?user=root&password="为:String u ="jdbc:mysql://localhost/numb1?user=root&password=&useUnicode=true&characterEncoding=gb2312";
如果MySQL版本是4.1以上的话,“useUnicode=true&characterEncoding=gb2312”加不加都可以,如果不能解决问题的话我们就采用第二中方法。
第二种方法:
先定义一函数
<%!
public String getStr(String s){
String str=s;
try{
byte b[]=str.getBytes("ISO-8859-1");
str=new String(b);
return str;
}
catch(Exception e){return null;}
}
%>
1. 数据库的建立
下一步就是建立数据库,首先从CMD(即DOS)进入mysql,新建一数据库,
命令如下:
mysql> create database numb1;
进入新建的数据库:
mysql> use numb1
新建一表格:
mysql> CREATE TABLE `lyb` (
`id` int(11) NOT NULL auto_increment,
`name` varchar(20) default NULL,
`mail` varchar(30) default NULL,
`qq` varchar(15) default NULL,
`txt` text,
PRIMARY KEY (`id`)
);
然后
mysql> exit
C:\> exit
就OK了
2. 向数据库写信息
我们可以做个留言板的结构,下面是填写留言内容页面index.html代码:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>我要留言</title>
</head>
<body>
<form name="form1" method="post" action="act.jsp">
<table width="450" border="0" align="center" bgcolor="#e8e8e8">
<tr bgcolor="#f8f8f8">
<th colspan="2">我 要 留 言</th>
</tr>
<tr bgcolor="#f8f8f8">
<td><div align="right">姓名:</div></td>
<td><input name="name" type="text" id="name" size="20"></td>
</tr>
<tr bgcolor="#f8f8f8">
<td><div align="right">E-mail:</div></td>
<td><input name="mail" type="text" id="mail" size="20"></td>
</tr>
<tr bgcolor="#f8f8f8">
<td><div align="right">Q Q:</div></td>
<td><input name="qq" type="text" id="qq" size="20"></td>
</tr>
<tr bgcolor="#f8f8f8">
<td><div align="right">留言内容</div></td>
<td><textarea name="txt" cols="36" rows="5" id="txt"></textarea></td>
</tr>
<tr bgcolor="#f8f8f8">
<th colspan="2"><input type="submit" name="Submit" value="提交">
<input type="reset" name="Submit" value="重置"></th>
</tr>
</table>
</form>
</body>
</html>
上面是静态页面,这里就没有什么看不动的了,呵呵,如果您不想动手就自己做就直接复制代码吧!
下面是处理留言页面act.jsp的代码:
<%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" errorPage="" %>
<%!
public String gb2iso(String qs){
try{
if (qs == null) return "NULL";
else return new String(qs.getBytes("gb2312"),"iso-8859-1");
}
catch(Exception e){
log("gb2iso error:"+e.getMessage());
}
return "NULL";
}
%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>无标题文档</title>
</head>
<body>
<%
Class.forName("com.mysql.jdbc.Driver").newInstance(); //org.gjt.mm.mysql.Driver
String u ="jdbc:mysql://localhost/numb1?user=root&password=";
java.sql.Connection con = java.sql.DriverManager.getConnection(u);
java.sql.Statement statement =con.createStatement();
request.setCharacterEncoding("gb2312");
String name=request.getParameter("name");
String mail=request.getParameter("mail");
String qq=request.getParameter("qq");
String web=request.getParameter("web");
String txt=request.getParameter("txt");
String sql="insert into lyb values(0,'"+gb2iso(name)+"','"+gb2iso(mail)+"','"+gb2iso(qq)+"','"+gb2iso(txt)+"')";//gb2iso()函数是往数据库添加信息避免乱码出现
statement.executeUpdate(sql);
statement.close();
con.close();
out.print("您输入的数据已经成功写入数据库!");
response.sendRedirect("show.jsp");//response内建对象跳转到show.jsp页面
%>
</body>
</html>
好了,简单说明一下:
public String gb2iso(String qs)是声明一函数,用来处理乱码所带来的一系列问题。由于JAVA与Mysql编码略有不同,两者在相互传递的时候都要出现乱码,我们可以通过此函数来转化一下。下面连接数据库部分可以参看JSP连接Mysql数据库详解及乱码处理一文。也面之间中文传递也会出现乱码,request.setCharacterEncoding("gb2312")此语句是用来使中文信息正常显示的。
3. 从数据库中读去信息显示留言内容页面show.jsp代码
<%@ page contentType="text/html; charset=GBK" language="java" import="java.sql.*" errorPage=""%>
<%!
public String getStr(String s){
String str=s;
try{
byte b[]=str.getBytes("ISO-8859-1");
str=new String(b);
return str;
}
catch(Exception e){return null;}
}
%><center><b>下面是留言内容</b></center><br>
<table width="720" border="1" align="center" cellspacing="0">
<tr>
<th width="89">ID</th>
<th width="111">昵称</th>
<th width="187">E-mail</th>
<th width="100">QQ</th>
<th width="211">留言内容</th>
</tr>
<%
Class.forName("com.mysql.jdbc.Driver").newInstance(); //org.gjt.mm.mysql.Driver
String u ="jdbc:mysql://localhost/numb1?user=root&password=";//useUnicode=true&characterEncoding=gb2312";
java.sql.Connection con = java.sql.DriverManager.getConnection(u);
java.sql.Statement statement =con.createStatement();
String sql="select * from lyb";
java.sql.ResultSet rs = statement.executeQuery(sql);
while(rs.next()) {%>
<tr>
<td><div align="center"><%=getStr(rs.getString(1))%> </div></td>
<td><div align="center"><%=getStr(rs.getString(2))%> </div></td>
<td><div align="center"><%=getStr(rs.getString(3))%> </div></td>
<td><div align="center"><%=getStr(rs.getString(4))%> </div></td>
<td><div align="center"><%=getStr(rs.getString(5))%> </div></td>
</tr>
<%}%> </table>
<%
rs.close();
statement.close();
con.close();
%>
上列内容在JSP连接Mysql数据库详解及乱码处理 已经说过,在这里就不在多说了。到这里就结束了,上面程序是留言板的主体程序,如果想制作留言板的话,剩下的工作就是美化一下了,我们在这里就不再多说了,希望您看了后能有所收获。