这几天一直因为一段编码过滤的代码崩溃着,本来都准备放逐他了···结果今天正好看到一位大神写的关于Filter的编码问题的代码,我就又去研究了一番。行,先将这个编码过滤的基本代码传上来:
EncodingFilter类:
<span style="font-size:18px;">import java.io.IOException;
import javax.servlet.FilterChain;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.test.util.HttpFilter;
/**
* 编码过滤器
*/
@WebFilter("/EncodingFilter")
public class EncodingFilter extends HttpFilter {
private String encoding;
@Override
protected void init() {
encoding = getFilterConfig().getServletContext().getInitParameter("encoding");
}
@Override
public void doFilter(HttpServletRequest request,
HttpServletResponse response, FilterChain chain)
throws IOException, ServletException {
System.out.println(encoding);
request.setCharacterEncoding(encoding);
System.out.println("设置成功");
chain.doFilter(request, response);
}
}</span>
web.xml:这个编码是写在contextParam中的
<span style="font-size:18px;"> <context-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</context-param>
<filter>
<filter-name>EncodingFilter</filter-name>
<filter-class>com.test.test.EncodingFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>EncodingFilter</filter-name>
<url-pattern>/encoding/*</url-pattern>
</filter-mapping></span>
接下来是页面代码:
a.jsp:主要代码就只有一个表单
<span style="font-size:18px;"><form action="b.jsp">
name:<input type="text" name="name" />
<input type="submit" value="submit">
</span>
b.jsp:接受表单提交的name
<span style="font-size:18px;">Hello : ${param.name }</span>
所有代码都贴上了,大家有没看出问题出在哪?
这里所有代码本人都测试成功了。。连编码获取我也进行了输出以确保成功,但是我找了很久都没找出错误,终于在今天发现了问题的关键:
其实真的只是一时手欠啊···
咳咳,回归正题,就是在a.jsp页面中的表单提交,应该加上一句 method=“post” ,没错,就是这么简单,害我弄了可久,痛苦啊!!
果然,细节决定成败啊!!