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>
好了 到目前为止 一切就搞定了 不管在哪里 输入和输出的都是你想看到的正宗的国语