Html的form表单提交到jsp中出现中文乱码
2017-08-05 13:39
465 查看
form表单提交有get和post两种方法,在提交到jsp中时处理中文乱码时方式不一样
1.处理post方法提交中文乱码用post方法提交时,其实没什么特别的方法只要注意html页面的编码格式与jsp页面的编码格式一致即可。可以都为GBK,也可以都为UTF-8.
如图:
2.处理get方法提交中文乱码
如果使用的get方法提交的话,即使你的html页面和jsp页面编码格式一致也会出现乱码,至于为什么会这样我也没去深入了解。总之在这里提供解决方式。
方法1:
String value = request.getParameter(“parameterName”);
value = new String(value.getBytes(“ISO859_1”),”UTF-8”);
这种可以解决乱码问题,但是很明显这样很麻烦。推荐用第二种方法。
方法2:
使用过滤器.对于一个web应用程序来说,过滤器是处于web容器内的一个组件,它会过滤特定请求资源请求信息和响应信息。一个请求来到时,web容器会判断是否有过滤器与该信息资源相关联,如果有则交给过滤器处理,然后再交给目标资源,响应的时候则以相反的顺序交给过滤器处理,最后再返回给用户浏览器。
下面是解决乱码的具体例子:
MyFirstFilter.java:
package com.util; import java.io.IOException; import java.io.UnsupportedEncodingException; 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.annotation.WebFilter; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequestWrapper; import javax.servlet.http.HttpServletResponse; import org.apache.catalina.connector.Request; /** * Servlet Filter implementation class MyFirstFilter */ @WebFilter("/MyFirstFilter") public class MyFirstFilter implements Filter { class MyRequest extends HttpServletRequestWrapper{ public MyRequest(HttpServletRequest request) { super(request); // TODO Auto-generated constructor stub } @Override public String getParameter(String name) { // TODO Auto-generated method stub String value =null; try { value = super.getParameter(name); if(super.getMethod().equalsIgnoreCase("GET")){ if(value != null){ value = new String(value.getBytes("ISO8859_1"), "UTF-8"); }} } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } return value; } } public void init(FilterConfig config) throws ServletException { } public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws java.io.IOException, ServletException { HttpServletRequest req = (HttpServletRequest)request; HttpServletResponse response2 = (HttpServletResponse)response; // req.setCharacterEncoding("GBK"); request.setCharacterEncoding("UTF-8"); response.setContentType("text/html"); response.setCharacterEncoding("UTF-8"); String path = req.getServletPath(); String param = req.getQueryString(); String uri = req.getRequestURL().toString(); request.setAttribute("uri", uri); request.setAttribute("ServletPath", path+"?"+param); request.setAttribute("isFiltered", "是"); // 把请求传回过滤链 chain.doFilter(new MyRequest((HttpServletRequest)request),response); } public void destroy( ){ /* 在 Filter 实例被 Web 容器从服务移除之前调用 */ } }
web.xml:
<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <filter> <filter-name>MyFirstFilter</filter-name> <filter-class>com.util.MyFirstFilter</filter-class> <init-param> <param-name>secondAttribute</param-name> <param-value>filterConfig的第二个参数</param-value> </init-param> </filter> <filter-mapping> <filter-name>MyFirstFilter</filter-name> <url-pattern>/checkIn.jsp</url-pattern> </web-app>
主要就是自定义了一个HttpServletRequest类,重写了里面的getParameter()方法,其实核心处理方法跟方法1一样。
相关文章推荐
- html中form表单向Jsp提交中文乱码问题基本解决办法
- JSP页面表单提交时出现中文乱码的解决方法
- JSP页面显示乱码二、表单提交中文时出现乱码三、数据库连
- JSP页面显示乱码二、表单提交中文时出现乱码三、数据库连
- 解决中文乱码( jsp表单提交中文时出现乱码)
- jsp中form表单提交到serlvet中文乱码问题
- JSP页面表单提交时出现中文乱码的解决方法
- 解决中文乱码( jsp表单提交中文时出现乱码)
- JSP+Servlet学习经验1:解决form表单提交后相应页面中文乱码的问题
- JSP中乱码问题解决(一、JSP页面显示乱码,二、表单提交中文时出现乱码,三、数据库连接出现乱码,四、数据库的显示乱码 )
- 回看JSP——解决提交form表单出现的乱码问题
- JSP表单提交出现中文乱码的解决方法
- Java入门到精通——调错篇之EasyUI+SpringMVC Form表单提交到Contorller中文字出现乱码
- Java入门到精通——调错篇之EasyUI+SpringMVC Form表单提交到Contorller中文字出现乱码
- jsp的表单数据提交,中文出现乱码的处理
- JSP 表单输入,UTF编码,get方式提交数据出现中文乱码解决方法
- [转]JSP页面显示乱码二、表单提交中文时出现乱码三、数据库连
- Spring MVC表单提交中文数据出现乱码
- 在html页面提交值到动态页面时出现中文值为乱码的解决方案
- 关于JSP页面表单提交中文乱码问题和URL中文参数乱码问题