07-08
14

今天碰到的两个细节问题解决方法

两个小问题,具体如下
一,关于插入单引号'到数据库出错问题<<数据表test,字段有title(varchar),content(text)>>

在上一个问题test1.jsp中有一个form指向test2.jsp,在test2.jsp中插入得到的数据,test2.jsp的部分代码如下:
String title=new String(request.getParameter("title").getBytes("iso-8859-1"),"gb2312");
String content=new String(request.getParameter("content").getBytes("iso-8859-1"),"gb2312");
String sql="insert into test(title,content) values('"+title+"','"+content+"')";
stmt.executeUpdate(sql);
当test1.jsp输入的数据有单引号'时,就出现错误,错误肯定出在sql语句上,不知道怎么处理?

二,关于从数据库中提取"<%%>"标签对,数据库结构同上
代码如下:
String sql="select * from test";
ResultSet rs=stmt.executeQuery(sql);
while(rs.next())
{
out.print(rs.getString("title")+":"+rs.getString("content")+"<br/>");
}
如果表test中存在的数据包含"<%%>"标签对,提取后这对标签对中的数据就显示为空,估计要作特殊处理,但不知道怎么办?


解决方法:

http://jakarta.apache.org/site/downloads/downloads_commons-lang.cgi下载commons-lang-2.2.zip,解压之后得到的jar放到你的lib目录,并需要在test2.jsp文件头上导入org.apache.commons.lang.*;
一.
<%
String sql="insert into test(title,content) values('"+StringEscapeUtils.escapeSql(title)+"','"+ StringEscapeUtils.escapeSql(content)+"')";
stmt.executeUpdate(sql);
%>
二.
<%
out.print(StringEscapeUtils.escapeHtml(rs.getString("title"))+":"+StringEscapeUtils.escapeHtml(rs.getString("content"))+"<br/>");
%>

附:第一个问题也可以用以下方式解决(尚为测试):
<%
String sql = "insert into test(title,content) values(?,?)";
PreparedStatement pStmt = null;
pStmt=conn.prepareStatement(sql);
pStmt.setString(1,title);
pStmt.setString(2,content);
pStmt.executeUpdate();
%>


文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags:
相关日志:
评论: 0 | 引用: 0 | 查看次数: 972
发表评论
昵 称:
密 码: 游客发言不需要密码.
内 容:
验证码: 验证码
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.
字数限制 1000 字 | UBB代码 开启 | [img]标签 关闭