欢迎光临
我们一直在努力

关于JSP中,中文问题(泛指字符问题),以及常见错误调试手记-JSP教程,Java技巧及代码

建站超值云服务器,限时71元/月

关于jsp中,中文问题(泛指字符问题),以及常见错误调试手记

sports98写于2001-1-9

序言:
在论坛中,生活中,工作中,有不少和我一样属于鸟级的用户,在面对着不明白的问题的时候就盲目了,多交流,多写写日记就好的多了

文章内容关于:2001-01-08日,编写/调试[用户注册程序]

编写环境:win2k(简体中文版) server sp2 + tomcat4.0 + j2sdk1.3+mysql4.0(alpha)
检测数据库内容环境:win2k(简体中文版) server sp2 + iis5.0 + php4.0+mysql4.0(alpha)+phpmyadmin2.0

程序代码(最终程序代码):
———————————————————————————————————————-
<%@ page  import="java.sql.*" contenttype="text/html;charset=gb2312" %>
<%//获取提交信息
string reg_name=new string();
string reg_nick=new string();
string reg_pws=new string();
string reg_pws_rp=new string();
string reg_sex=new string();
string reg_email=new string();
string reg_email_rp=new string();
string reg_address=new string();
string reg_tel=new string();
string reg_hand=new string();
string reg_counter=new string();
string reg_city=new string();
string reg_zip=new string();
string reg_company=new string();
string reg_calling=new string();
string reg_place=new string();
string reg_question=new string();
string reg_answer=new string();
string reg_submit=new string();
string reg_check=new string();
string reg_momo=new string();
string sql=new string();
string reg_teminfo=new string();                            //欢迎信息,在论坛内将要使用
int flag_system;
int flag=1;                                                    //定义注册用户标记,1为活动用户,0为非活动拥护
int up=0;                                                    //定义用户登陆情况,注册时候默认为0次
//转换字符设置将iso8859-1字符转为gbk字符,这样符合mysql字符,解决tomcat服务器下中文问题
reg_name=new string(request.getparameter("reg_truename").getbytes("gbk"),"iso8859-1");            //用户真实名称
reg_nick=new string(request.getparameter("reg_name").getbytes("gbk"),"iso8859-1");            //用户昵称
reg_pws=new string(request.getparameter("reg_pws").getbytes("gbk"),"iso8859-1");                //用户密码
reg_pws_rp=new string(request.getparameter("reg_pws_rp").getbytes("gbk"),"iso8859-1");        //校验密码
reg_sex=new string(request.getparameter("reg_sex").getbytes("gbk"),"iso8859-1");                //用户性别
reg_email=new string(request.getparameter("reg_email").getbytes("gbk"),"iso8859-1");            //电子邮件
reg_email_rp=new string(request.getparameter("reg_email_rp").getbytes("gbk"),"iso8859-1");    //校验电子邮件
reg_address=new string(request.getparameter("reg_address").getbytes("gbk"),"iso8859-1");        //详细地址
reg_tel=new string(request.getparameter("reg_tel").getbytes("gbk"),"iso8859-1");                //联系电话
reg_hand=new string(request.getparameter("reg_hand").getbytes("gbk"),"iso8859-1");        //手机或其他联系方式
reg_counter=new string(request.getparameter("reg_counter").getbytes("gbk"),"iso8859-1");        //国家
reg_city=new string(request.getparameter("reg_city").getbytes("gbk"),"iso8859-1");            //城市
reg_zip=new string(request.getparameter("reg_zip").getbytes("gbk"),"iso8859-1");                //邮政编码
reg_company=new string(request.getparameter("reg_company").getbytes("gbk"),"iso8859-1");        //公司名称
reg_calling=new string(request.getparameter("reg_calling").getbytes("gbk"),"iso8859-1");        //职位性质
reg_place=new string(request.getparameter("reg_place").getbytes("gbk"),"iso8859-1");            //职位
reg_question=new string(request.getparameter("reg_question").getbytes("gbk"),"iso8859-1");    //机密问题
reg_answer=new string(request.getparameter("reg_answer").getbytes("gbk"),"iso8859-1");        //机密答案
reg_submit=new string(request.getparameter("reg_submit").getbytes("gbk"),"iso8859-1");        //提交变量
reg_check=new string(request.getparameter("reg_check").getbytes("gbk"),"iso8859-1");            //是否检测过姓名标记
reg_momo=new string(request.getparameter("reg_momo").getbytes("gbk"),"iso8859-1");            //用户简单信息momo
////////////////////////
reg_teminfo="论坛内欢迎信息";
reg_teminfo=new string(reg_teminfo.getbytes("gbk"),"iso8859-1");
int reg_temflag=1;                                            //在论坛内寻找该字段以便弹出即时信息
boolean temp=reg_check.equals("120980");                    //判断标记,以后采用session进行保存判断值
try{
if(temp)
{
%>
    <html>
    <head><title>注册</title>
    </head>
    <style type="text/css">
    body {font:9pt;color:black;margin:0}
    td {font:9pt;color:black}
    </style>
    <body>
    <center>
<%
//////////////////////////////////////////判断用户注册信息////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////////////////////////////////////////
java.lang.string strconn;
class.forname("org.gjt.mm.mysql.driver").newinstance(); //声明驱动程序for mysql
//声明连接对象 connection c——c 为连接对象  connection 为声明语句
connection c = drivermanager.getconnection("jdbc:mysql://localhost/news?user=mysql&password=mysql&useunicode=true&characterencoding=8859_1"); //连接到数据库
statement s=c.createstatement(resultset.type_scroll_sensitive,resultset.concur_read_only);
resultset rs=s.executequery("select * from reg where nick="+reg_name+""); //声明执行对象
if(rs.next())
    {
    %>
    <table width=100% cellpadding=0>
        <tr><td height=100px></td>
        <tr><td align=center><font color=red>错误:非法操作注册程序!</font>
        <tr><td height=30px></td>
        <tr><td align=center><font color=red>提示:您已经注册或正在非法浏览本页面<br>本页面不允许刷新!</td>
        <tr><td height=30px></td>
        <tr><td align=center><button onclick="javascript:window.close()">关闭本页面</button></td>
    </table>
    <%
    }
else
    {
     sql="insert into reg (id,flag, name, nick, sex, pws, email, address, tel, hand, city, zip, company, counter, momo, teminfo, temflag, calling, place, question, answer, up) values (,"+flag+", "+reg_name+", "+reg_nick+", "+reg_sex+", "+reg_pws+", "+reg_email+", "+reg_address+", "+reg_tel+", "+reg_hand+", "+reg_city+", "+reg_zip+", "+reg_company+", "+reg_counter+", "+reg_momo+", "+reg_teminfo+", "+reg_temflag+", "+reg_calling+", "+reg_place+", "+reg_question+", "+reg_answer+", "+up+")";
     s.executeupdate(sql);
%>
    <br><br>
            <table width="400" cellpadding=0 cellspacing=0 style="border:1 solid black ">
                <tr><td colspan=2 height=15px></td>
                <tr><td colspan=2 align=center>恭喜!您已经注册成功,您的基本信息为…
                <tr><td colspan=2 height=15px></td>
                <tr><td align=right width="30%">用户名:<td align=left width="70%"><%=new string(reg_nick.getbytes("iso8859-1"),"gbk")%>
                <tr><td align=right>真实姓名:<td align=left><%=new string(reg_name.getbytes("iso8859-1"),"gbk")%>
                <tr><td align=right>性别:<td align=left><%=reg_sex%>
                <tr><td align=right>密码:<td align=left><%=reg_pws%>
                <tr><td align=right>电子邮件:<td align=left><%=reg_email%>
                <tr><td align=right>详细地址:<td align=left><%=new string(reg_address.getbytes("iso8859-1"),"gbk")%>
                <tr><td align=right>联系电话:<td align=left><%=new string(reg_tel.getbytes("iso8859-1"),"gbk")%>
                <tr><td align=right>第二联系方式:<td align=left><%=reg_hand%>
                <tr><td align=right>所在城市:<td align=left><%=reg_city%>
                <tr><td align=right>邮政编码:<td align=left><%=reg_zip%>
                <tr><td align=right>公司名称:<td align=left><%=new string(reg_company.getbytes("iso8859-1"),"gbk")%>
                <tr><td align=right>国家:<td align=left><%=reg_counter%>    
                <tr><td align=right>工作性质:<td align=left><%=reg_calling%>
                <tr><td align=right>职务:<td align=left><%=reg_place%>
                <tr><td colspan=2 height=15px></td>
                <tr><td colspan=2 align=center>提示:您已经登陆本站<font color=red><%=up%></font>次,您可以使用本帐户直接登陆论坛…
                <tr><td colspan=2 height=15px></td>
                <tr><td align=center><a href="/">返回主页</a><td align="center"><a href="">进入论坛</a></td>
        </table>
<%
        }
%>
    </center>
    </body>
    </html>
<%
}
else
{
%>
    <html>
    <head>
    <title>error</title>
    </head>
    <body><center><br><br>
    <font face="黑体" size=5 color=red>抱歉!非法的操作步骤!</font><br>
    <font face="impact" color=black>sorry!you have nullity at register!please register again!</font>
        </center>
    </body>
    </html>
<%
}
}
catch (exception t) {
    out.println("<br><br>错误:本页不允许刷新!<br>或您执行了非法操作!<br>error:this page cant refresh!<br>you have error</center></body></html>");
}
%>

本程序依照
协议—–》预注册(判断呢称是否被注册)—–》成功(打印注册项目)—–》提交
(重新选择呢称)↑        |(失败)
|_________|

提交后-》判断是否为正常注册(temp为检测标记)
提交成功-》打印注册基本资料,添加cookie
注册失败-》打印失败(有可能是服务器问题)。
至此,程序完成

碰到问题:
按照调试阶段碰到的问题先后攥写,
1、    数据正常添加,但使用phpmyadmin查看数据库内,所有的汉字均显示为?????????。
2、    数据正常添加,但jsp页面没有按照设定的程序打印出资料。
3、    不可以刷新,一刷新程序重复执行一次,而发生数据库内字段冲突,导致jsp报错!

调试过程:
在这里,首先感谢[令少爷][ wayne.xiao]以及关心咱这只“鸟“的朋友们

关于第一个碰到的问题,
问题1、
首先调试了程序,并且在executeupdate前后都加上out来查看是否是程序造成的(转换类型),但是输出的均为正常。
进入phpmyadmin查看数据,所有的汉字均为?????。
具体内容可以查看
http://www.dev-club.com/club/bbs/showannounce.asp?id=1123399帖子
后经令少爷提示以及帮助,将字符改成gbk字符集合
(后来发现从数据库内提取出来的就要转换成iso8859-1字符集了,要不也是?????!!头疼的字符问题)
到此,问题告一段落!

问题2
无法正常显示!当我按上面将需要输入与输出的字符均转为字符集后,却发现注册后无法显示信息。所显示的页面的html的默认的输出空页面(但executeupdate已经执行,数据库内资料已经添加)!找了半天没找到问题,赶快求救!:j:jjjjjjj
经过提示,先将所有的执行步骤加入 try内,然后查看出错在哪里,发现出错在打印注册成功资料那里?左看右看没发现什么啊!!!
“gbk“靠!又是字符集问题!!!我把”gbk“给写成”gdk”l了lllllllll
(很严重哦!!才学程序设计的时候所有的书本都说不要写错啊)
那是变量的名称,没想到只因为一个字符集合的名称害得我忙了2个小时!!
所有的鸟,不论大鸟,小鸟,可不要再犯我这个低级错误了啊!
至此问题解决

问题3、
页面刷新问题,由于2问题的解决采用了try,这个问题也就解决了,
在catch (exception t) {}中捕获错误(数据库报出的错误!)另外在try中也有个捕捉错误的地方,不过我这里有时候他能报错有时候不报错!很讨厌,不过由于用catch (exception t) {}捕获这个错误,所以这个问题也就解决了。

小结:
程序设计,很枯燥,不过也很美丽,当你完成她的时候,感觉是非常的爽!
不过大姑娘绣花要心细点~~  低级错误尽量避免,拼写的时候要注意不要错了哦!
还有,下步准备将程序写到bean里,这样的写法对于页面来说不容易布置,
对于代码的安全,少了一个安全级,对于错误的处理,增加了麻烦,所以吗~~大家自己看了

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » 关于JSP中,中文问题(泛指字符问题),以及常见错误调试手记-JSP教程,Java技巧及代码
分享到: 更多 (0)