现在的位置: 首页 > 综合 > 正文

jsp+servlet+mysql乱码解决的这天

2013年05月28日 ⁄ 综合 ⁄ 共 1597字 ⁄ 字号 评论关闭

jsp,开始的时候是jsp+DAO模式,貌似还可以运行,可是到了后来,彻底的遇到了麻烦,搞的我几天不得劲,但是后来还是给解决了

 

如果是jsp+servlet+sqlserver,那么一切顺利,根本没有见到乱码的机会,可是现在是mysql,乱码开始

mysql数据库的编码格式一般默认是iso8859-1,所以我们的编码必须得数据库下手

在运行处输入 mysql -u+用户名 -p+密码 既可以进入mysql  查找出数据,可以看到  凡是从页面表单录入的数据  中文全部为???在表单上面显示也同样是???

 解决办法

设置每个页面的编码格式为utf-8,这是保证每个页面显示是中文,在控制器servlet中 必须首先设置请求的编码格式为utf8

参数不需要特别设置  只要符合sql语句的语法即可

链接数据库的url必须写成"jdbc:mysql://localhost:3306/mysql?useUnicode=true&characterEncoding=UTF-8";这样的格式以确保数据库编码的正确性,现在还必须编写一个filter 用以过滤写入乱码

package peom;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class txtFiter implements Filter {
 public void destroy() {
  // TODO Auto-generated method stub 
 }
 public void doFilter(ServletRequest arg0, ServletResponse arg1,
   FilterChain arg2) throws IOException, ServletException {
  // TODO Auto-generated method stub
  //主要步骤如下
    HttpServletRequest req = (HttpServletRequest) arg0;
     HttpServletResponse res = (HttpServletResponse) arg1;
  req.setCharacterEncoding("gb2312");
  res.setCharacterEncoding("gb2312");
  arg2.doFilter(req, res);
 }
 public void init(FilterConfig arg0) throws ServletException {
  // TODO Auto-generated method stub 
 }
}

紧接着配置web.xml

 <filter>
  <filter-name>txtfilter</filter-name>
  <filter-class>
   peom.txtFiter
  </filter-class>
 </filter>
 <filter-mapping>
  <filter-name>txtfilter</filter-name>
  <url-pattern>/*</url-pattern>
 </filter-mapping>

好了 到目前为止  一切就搞定了  不管在哪里  输入和输出的都是你想看到的正宗的国语

抱歉!评论已关闭.