加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

阿翔编程学-webservice过滤器

发布时间:2020-12-17 02:50:39 所属栏目:安全 来源:网络整理
导读:过滤器类 package baseinfo.com.windtec.offline.server.baseinfo; import java.io.IOException; import java.util.ArrayList; import java.util.List; import java.util.StringTokenizer; import javax.servlet.Filter; import javax.servlet.FilterChain;

过滤器类

package baseinfo.com.windtec.offline.server.baseinfo;

import java.io.IOException;

import java.util.ArrayList;
import java.util.List;
import java.util.StringTokenizer;

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;

/**
?* 用于检测用户是否登陆的过滤器,如果未登录,则重定向到指的登录页面<p>
?* @author CaoXiang
?* @version 1.0
?*/
public class UserFilter implements Filter {
?
?//过滤器配置对象
?protected FilterConfig filterConfig = null;
?
?//导向到该页面
?private String redirectURL = null;
?
?//不接受过滤的地址
?private List notCheckURLList = new ArrayList();
?
?//session对象中的key值
?private String sessionKey = null;

?/**
? * 过滤
? */
?public void doFilter(
??ServletRequest servletRequest,
??ServletResponse servletResponse,
??FilterChain filterChain)
??throws IOException,ServletException {
??HttpServletRequest request = (HttpServletRequest) servletRequest;
??HttpServletResponse response = (HttpServletResponse) servletResponse;

??HttpSession session = request.getSession();
??if (sessionKey == null) {
???filterChain.doFilter(request,response);
???return;
??}
??if ((!checkRequestURIIntNotFilterList(request))
???&& session.getAttribute(sessionKey) == null) {
???response.sendRedirect(request.getContextPath() + redirectURL);
???return;
??}
??filterChain.doFilter(servletRequest,servletResponse);
?}

?/**
? * 对象的销毁
? */
?public void destroy() {
??notCheckURLList.clear();
?}

??? /**
???? * 判断地址
???? * @param request
???? * @return
???? */
?private boolean checkRequestURIIntNotFilterList(HttpServletRequest request) {
??String uri =
???request.getServletPath()
????+ (request.getPathInfo() == null ? "" : request.getPathInfo());
??return notCheckURLList.contains(uri);
?}

?/**
? * filter初始化
? */
?public void init(FilterConfig filterConfig) throws ServletException {
??this.filterConfig = filterConfig;
??redirectURL = filterConfig.getInitParameter("redirectURL");
??sessionKey = filterConfig.getInitParameter("checkSessionKey");
??String notCheckURLListStr =
???filterConfig.getInitParameter("notCheckURLList");
??if (notCheckURLListStr != null) {
???StringTokenizer st = new StringTokenizer(notCheckURLListStr,";");
???notCheckURLList.clear();
???while (st.hasMoreTokens()) {
????notCheckURLList.add(st.nextToken());
???}
??}
?}
?
}
web.xml配置

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems,Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app id="WebApp">
?<!-- WebService服务管理程序 -->
?<display-name>offlineServer</display-name>
?<filter>
?????????? <filter-name>UserFilter</filter-name>
?????????? <filter-class>baseinfo.com.windtec.offline.server.baseinfo.UserFilter</filter-class>
?????????? <!-- 需检查的在 Session 中保存的关键字 -->
?????????? <init-param>
???????????????? <param-name>checkSessionKey</param-name>
???????????????? <param-value>user</param-value>
?????????? </init-param>
?????????? <!-- 不做检查的URL列表,以分号分开,并且 URL 中不包括 ContextPath -->
?????????? <init-param>
???????????????? <param-name>notCheckURLList</param-name>
???????????????? <param-value>/index.jsp</param-value>
?????????? </init-param>
?????????? <!-- 如果用户未登录,则重定向到指定的页面,URL不包括 ContextPath -->
?????????? <init-param>
???????????????? <param-name>redirectURL</param-name>
???????????????? <param-value>/index.jsp</param-value>
?????????? </init-param>
???? </filter>
????? <filter-mapping>
?????????? <filter-name>UserFilter</filter-name>
?????????? <url-pattern>/*</url-pattern>
???? </filter-mapping>
??? <!-- 用户登陆验证服务 -->
?<servlet>
??<servlet-name>user_com_windtec_offline_server_user_LoginServiceImp</servlet-name>
??<servlet-class>user.com.windtec.offline.server.user.LoginServiceImp</servlet-class>
??<load-on-startup>1</load-on-startup>
?</servlet>
?<!-- 默认显示的首页 -->
?<welcome-file-list>
??<welcome-file>index.html</welcome-file>
??<welcome-file>index.htm</welcome-file>
??<welcome-file>index.jsp</welcome-file>
??<welcome-file>default.html</welcome-file>
??<welcome-file>default.htm</welcome-file>
??<welcome-file>default.jsp</welcome-file>
?</welcome-file-list>
</web-app>

代码如上,希望对大家有帮助?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读