(一)过滤器类编写。
1、设置字符集编码方式:
编写过滤器类:实现接口javax.servlet.Filter
public class CharacterEncodingFilter implements Filter {
private String charset;
public void destroy() {
// TODO Auto-generated method stub
}
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain filterChain) throws IOException, ServletException {
// TODO Auto-generated method stub
request.setCharacterEncoding(charset);
filterChain.doFilter(request, response);
}
public void init(FilterConfig config) throws ServletException {
// TODO Auto-generated method stub
charset = config.getInitParameter("charset");
}
}
以上过滤器类只能保证post提交方式能正确解码。get方式依然会出问题。
String username = new String(request.getParamter("userName").getBytes("ISO8859-1"),"GBK")
此方法在接受页面上能够对post和get两种方式传过来的参数userName进行正确显示,但每个参数都使用这种方式
来接受会太麻烦,所以还是使用过滤器的方式比较方便。
对于get接受参数的解决方法:修改服务器的配置文件中
修该tomcat服务器的安装目录(E:\Program Files\Apache Software Foundation\Tomcat 6.0\conf)下的server.xml
connectionTimeout="20000"
redirectPort="8443"/>
添加属性 URIEncoding="GBK" ,此方式只能解决get方式提交。
2、检测用户是否登陆的过滤器
public class CheckLoginFilter implements Filter {
public void destroy() {
// TODO Auto-generated method stub
}
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
// TODO Auto-generated method stub
HttpServletRequest hsRequest = (HttpServletRequest)request;
HttpServletResponse hsResponse = (HttpServletResponse)response;
HttpSession session = hsRequest.getSession();
//没登录
if(session.getAttribute("userID") == null)
{
String uri = hsRequest.getRequestURI();
// 请求�