一、静态中文展示
servlet做页面
response.setContentType("text/html;charset=utf-8/gbk/gb2312");
二、动态传递中文参数:可以将中文参数进行单的类型转换(注意:字符编码与参数的元字符编码和参数的目标字符编码要一致)
*get传参:直接修改tomcat服务器中连接期的默认字符编码为utf-8/gbk/gb2312(在servlet.xml文件,连接器<Connector>中增加属性 URIEncoding="utf-8")
*post传参
在servlet获取参数之前调用如下方法,对所有的封装到requset中的参数的字符编码同义转换 request.setCharacterEncoding("utf-8/gbk/gb2312");(关键的代码)
假如页面很多,这种方式就不实用
通过过滤器servlet来调用以上方法,对用户发出请求时的以post方式的传递的中文参数进行统一的字符编码转换
过滤器属于servlet的一种,其加载的优先级高于所有的控制器servlet。其在web容器中的注册信息必须放在所有的控制器servlet注册信息之前。
操作:
1.在配置文件里面
<!-- 注册过滤器 -->
<filter>
<filter-name>myfilter</filter-name>
<filter-class>com.qulx.filter.MyFilter</filter-class>
<!-- 设置过滤器使用的字符编码 -->
<init-param>
<param-name>encoding</param-name>
<param-value>utf-8</param-value>
</init-param>
<!-- 设置过滤行为是否调用 -->
<init-param>
<param-name>enable</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<!-- 设置过滤器映射名 -->
<filter-mapping>
<filter-name>myfilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
注意如果只想对针对其中的某些参数进行字符编码的转换,可以修改虚拟目录的名称,修改<url-pattern>/虚拟目录/*</url-pattern>
可以把想过滤的内容放在一个虚拟子目录中。
2.在过滤器中写入,需要实现Filter接口
public class MyFilter implements Filter {
private String encoding ="";
private boolean enable = false;
public void init(FilterConfig arg0) throws ServletException {
this.encoding = arg0.getInitParameter("encoding");
String able = arg0.getInitParameter("enable");
if(able.equals("true")){
this.enable = true;
}
}
public void destroy() {
// TODO Auto-generated method stub
}
//执行过滤行为的方法
//FilterChain 负责释放控制权
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
//将request中封装的所有的中文参数统一进行字符编码转换
if(this.enable){
request.setCharacterEncoding(this.encoding);
}
//释放控制权
chain.doFilter(request, response);
}
}
*对post传参和get传参,都能进行字符编码转换,请求的参数.getBytes("iso-8859-1","")
相关推荐
这是servlet出现乱码,以及乱码出现时的解决办法。
servlet输出JS乱码问题
解决servlet页面乱码问题,对于初学者还是有帮助的
Servlet + Tomcat 中文乱码的解决方法,浏览器把Unicode字符转换为GBK字符,这样页面的内容和浏览器的显示模式都设成了GBK,就不会乱码了
Jsp和Servlet中文乱码问题
用ajax 通过url传参数给servlet时,在servlet提取时一直是乱码,即使用了统一的字符编码也没用。
1 GBK包含GB2312 即如果通过GB2312编码后可以通过GBK解码 反之可能不成立; 2 java nio charset Charset defaultCharset 获得平台默认字符编码; 3 getBytes 是通过平台默认字符集进行编码;
解决jsp+servlet开发中的中文乱码问题
解决servlet中文乱码问题1
jspservlet取参数乱码问题分析jspservlet取参数乱码问题分析jspservlet取参数乱码问题分析jspservlet取参数乱码问题分析jspservlet取参数乱码问题分析
servlet与jsp中文乱码处理,详细介绍多种乱码处理方法,包括使用过滤器的方法
servlet过滤器Api 以及乱码处理.javascript注入问题
彻底解决servlet中文乱码问题,对于gbk、utf-8、iso-8859-1之间的选择,做了详细的讲解!
jsp传参 servlet接收中文乱码问题的解决方法.docx
彻底解决Servlet及jsp解决中文乱码问题
关于java中使用servlet中解决乱码!
java输出中文乱码问题^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
讲述javaweb开发中的jsp乱码问题 get、post的区别 http协议的图解
乱码总结,其中包括java,servlet,jsp,struts2,等,属个人总结,仅提供参考
最简单的写法 只要JSP页面的 编码格式和 web.xml 编码格式一样就行