`
leiwuluan
  • 浏览: 697080 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类

web filter 过滤器 乱码处理的好方法,一个类就搞定。工程内都可以处理

阅读更多

这是一个WEB上的一个过滤器的用法。它可以用来判断用户是否登录和用来处理乱。方法如下

1 用过滤器做编码处理。

   代码如上

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;

public class SetCodingFilter implements Filter {

 private String coding = null;
 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 req = (HttpServletRequest)request;
  
  //设置请求编码
  request.setCharacterEncoding(coding);
  
  //调用下一个过滤器,(如果没有,就把请求提交给请求目标)
  chain.doFilter(request, response);
 }

 public void init(FilterConfig config) throws ServletException {
  
  //获取filter初始化参数(web.xml文件中配置的参数)
  coding = config.getInitParameter("coding");
 }

}

以上的是一个过滤器类。然后再置一下。xml文件就可以了。。如下

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4"
 xmlns="http://java.sun.com/xml/ns/j2ee"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
 http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
  <filter>
   <filter-name>SetCodingFilter</filter-name>
   <filter-class>com.filter.SetCodingFilter</filter-class>
   <init-param>
    <param-name>coding</param-name>
    <param-value>UTF-8</param-value>
   </init-param>
  </filter>

 

<filter-mapping>
   <filter-name>SetCodingFilter</filter-name>
   <url-pattern>/*</url-pattern>此过滤器用于所有的页面
  </filter-mapping>

 

  

以上红色的代码是关键代码
    <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
</web-app>

2 用来判断用户是否登录。

第一部:

先写一个类如下

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;
import javax.servlet.http.HttpSession;

public class UserOnlineFilter implements Filter {

 public void destroy() {
  // TODO Auto-generated method stub

 }

 public void doFilter(ServletRequest servletrequest,
   ServletResponse servletresponse, FilterChain filterchain)
   throws IOException, ServletException {
  // TODO Auto-generated method stub
  
  HttpServletRequest request = (HttpServletRequest)servletrequest;
  HttpServletResponse response = (HttpServletResponse)servletresponse;
  HttpSession session = request.getSession();
  String username = (String)session.getAttribute("username");
  
  //验证用户是否登录(session对象中是否存在用户信息)
  if(username==null){
   response.sendRedirect(request.getContextPath()+"/login.jsp");
  }else{
   filterchain.doFilter(servletrequest, servletresponse);
  }
 }

 public void init(FilterConfig filterconfig) throws ServletException {
  // TODO Auto-generated method stub

 }

}

 

第二部:

配制xml文件如下

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4"
 xmlns="http://java.sun.com/xml/ns/j2ee"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
 http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
  
  <filter>
   <filter-name>UserOnlineFilter</filter-name>
   <filter-class>com.filter.UserOnlineFilter</filter-class>
  </filter>


    <filter-mapping>
   <filter-name>UserOnlineFilter</filter-name>
   <url-pattern>/view/*</url-pattern>这个路径只用于数据交互页面。不能用“/”。否则的话就进不了页面了
  </filter-mapping>
  
    
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
</web-app>

 

 

时来看看哦。。。我每一天都会写的哦。。。。。一起加油。。。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics