日期:2014-05-16  浏览次数:20327 次

jsp读书笔记2——jsp编码问题

今天在编写一个关于用不同的方式来设置form表单实验时发现了一个挺头痛的问题。程序如下:

第一种情况

<form name=form1 method="post">

?? user:<input type=text name=user1 ><br>

?? <input type=submit value=register>

</form>

?

第二种情况

<form name=form2 method="post">

?? user:<input type=text name=user2 value=<%= request.getParameter("user2") %>><br>

?? <input type=submit value=register>

</form>

?

第三种情况

<form name=form3 method="post">

?? user:<input type=text name=user3 value=${param.user3}><br>

?? <input type=submit value=register>

</form>

?

(1)???? 由于在jsp页面中直接写入中文,并且没有使用page指令设置页面的编码方式,于是在用浏览器访问时出现异常。

(2)???? 后来无意间在整个程序的最前面插入了一个空行,程序运行居然没问题了,用浏览器访问显示出了正常的内容。为什么加入了个回车换行程序就正常运行呢,不解,于是查看了一下有jsp程序生成的Servlet源程序。发现其实程序并不算完全没问题,因为在生成的Servlet源程序中jsp页面中的中文显示为乱码(浏览显示时正常)如下为生成的Servlet源程序中的一部分:

out.write("\r\n");

out.write("μúò????é??\r\n");

out.write("<form name=form1 method=\"post\">\r\n");

out.write("\tuser:<input type=text name=user1 ><br>\r\n");

out.write("\t<input type=submit value=register>\r\n");

out.write("</form>\r\n");

out.write("\r\n");

out.write("μú?t???é??\r\n");

out.write("<form name=form2 method=\"post\">\r\n");

out.write("\tuser:<input type=text name=user2 value=");