jsp中response.sendRedirect()中文参数乱码问题

<%@ page language="java"  pageEncoding="gbk"%>
<%
   String errmsg="传递的中文";
   response.sendRedirect("test1.jsp?errmsg="+java.net.URLEncoder.encode(errmsg));
%>

接收参数文件
<%@ page language="java"  pageEncoding="gbk"%>
<%
  
  String errmsg=new String((request.getParameter("errmsg")).getBytes("ISO-8859-1"),"GBK");
  out.print("errmsg="+errmsg);
%>
(转自csdn孤毒天蝎的博客) 
这段代码有以下几个问题: 1. 在使用数据库连接之前,需要先确保数据库连接已经建立并且可用。代码没有检查 `DB.getConn()` 方法返回的连接是否为 `null` 或者是否已经关闭,如果连接不可用,会导致 `NullPointerException` 或者 `SQLException` 等异常。 2. 在构造 SQL 查询语句时,使用了字符串拼接的方式,存在 SQL 注入的风险。建议使用预编译的 `PreparedStatement` 对象来执行 SQL 语句,可以提高安全性和执行效率。 3. 在查询结果集之前,应该先判断结果集是否为空,否则调用 `rs.next()` 方法可能会抛出 `SQLException` 异常。 4. 在使用完 `ResultSet` 和 `Statement` 对象之后,需要及时关闭它们以释放相关资源。代码使用了 `DB.close(rs)`、`DB.close(stmt)` 和 `DB.close(conn)` 方法来关闭这些对象,但是这些方法的实现没有给出。建议自定义一个 `DBUtil` 类,提供静态方法封装关闭对象的操作。 5. 在重定向之前,需要先设置响应头(`response`)的编码格式,否则可能会出现乱码。例如可以在 JSP 页面添加以下代码: ``` <% response.setContentType("text/html; charset=UTF-8"); %> ``` 6. 在重定向之前,需要先关闭响应输出流(`response.getWriter()`),否则可能会抛出 `IllegalStateException` 异常。可以在 JSP 页面添加以下代码: ``` <% response.getWriter().close(); %> ``` 综上所述,建议对这段代码进行重构,遵循良好的编码规范和安全性原则。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值