jsp常见问题
最近在学习jsp,就把自己常见的问题都搜集一下,放上来供大家参阅,会不定时更新
1.Attribute value request.getParameter("username") is quoted with " which must be escaped when used within the value
解答
Stringusername=request.getParameter("username");
<jsp:paramname="username" value="<%= username%>"></jsp:param>
上面这样写,程序没有报错,可以运行
<jsp:param name="username"value="<%= request.getParameter("username")%>"></jsp:param>
上面这样写的话,程序会报错
我去了CSDN查了一下,发现
“将value后面的"username”改为\"username\",这样的话,则可以通过编译并顺利执行
或者
<jsp:paramname="username" value='<%=request.getParameter("username") %>'></jsp:param>
把value之后的双引号改为单引号
我估计原因是由于4个双引号之间,会以前2个作为截止标记,这样的话就会出错,如果用了\的话,就会当中间2个双引号作为转义字符,则可以顺利执行。
2.有一样东西是需要注意的:当我们在一个页面将中文传到另一个页面的时候由于前一个页面的中文是GB2312,另一个页面需要用request.setCharacterEncoding(“gb2312”);来将字符的encode改为gb2312,
或者用一个函数str=new String(byteb[]=str.getBytes(“iso-8859-1”))来将中文改为iso-8859-1类型。
或者这样也有同样效果String name=new String(usersForm.getName().getBytes("iso-8859-1"),"GBK");
3.在jsp页面里,把中文存储到数据库中,通常会发生乱码的情况,
我的方法是:
保存的时候转换为iso-8859-1,从数据库取出来的时候转换为你自己的编码
new String(str.getBytes( "gbk "), "iso-8859-1 ");
new String(str.getBytes( "iso-8859-1 "), "gbk ");
4.大家如果觉得每次都引入相同的java类比较麻烦的话,可以先做一个lib.jsp页面,把需要引用的类给写好
例如:
lib.jsp
<%@ page import="com.mysql.jdbc.Driver" %>
<%@ page import="java.sql.*" %>
<%@ page import="java.util.*" %>
<%@ page import="java.io.*" %>
之后在需要引用lib.jsp的页面那里调用
<%@ include file="lib.jsp" %>
则可以省上很多打字的时间了
5.重新说一下如何解决中文乱码的问题
首先,获取参数的页面,只要设置request.setCharacterEncoding(“gb2312”)即可获取不怕乱码的中文参数
在输出数据库数据的页面,定义以下的一个函数
<%!
String gets(String str)
{
try
{
byte b[]=str.getBytes("iso-8859-1");
str=new String(b);
}
catch(Exception e){}
return str;
}
%>
比如说。。我数据库是找出title这个字段,那么就用以下那个方式来显示出来,就不怕乱码了。
<%=gets(rs.getString("title")) %>
6.
有一点要特别注意!
像GBK,UTF-8这样的名字,在mysql与JAVA中有不同的规定,写的时候要格外注意,否则会出错。
比如GBK,在JAVA中要写成GBK,但在mysql中要写成gbk(连接数据库的URL)
比如UTF-8,在JAVA中要写成UTF-8,但在Mysql中要写成utf8
其它的字集符也有类似的区别