HttpServletRequest不是Servlet中的域吗?

来源:3-8 用户登录安全控制过滤器实现

慕数据4154996

2018-08-27 16:35:19

而Filter类并没有继承Servlet啊,为什么能够使用?

上代码

package filter;

import java.io.IOException;

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;

/**
 * 用户登录安全控制过滤器
 * 
 * @author lv
 *
 */
public class SessionFilter implements Filter {

	@Override
	public void destroy() {

	}

	@Override
	public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
			throws IOException, ServletException {

		HttpServletRequest hrequest = (HttpServletRequest) request;// 涉及到HTTP请求处理,转型处理
		HttpServletResponse hresponse = (HttpServletResponse) response;// 涉及到HTTP请求处理,转型处理

		String loginUser = (String) hrequest.getSession().getAttribute("loginUser");// 判断用户是否完成了登录操作,session中是否存储用户名

		if (loginUser == null) {
			hresponse.sendRedirect(hrequest.getContextPath() + "/index.jsp?flag=1");// 未登录,系统强制重定向至登录页面
			return;
		} else {
			chain.doFilter(hrequest, hresponse);
			return;
		}

	}

	@Override
	public void init(FilterConfig config) throws ServletException {

	}

}

http://img.mukewang.com/climg/5b83b7c00001e67a18420468.jpg

写回答

1回答

chrismorgen

2018-08-27

从下图可以看到doFilter是Filter接口中的方法,从携带的参数来看,doFilter中是有ServletRequest参数和ServletResponse参数的,所以可以对请求对象进行处理,并且Filter是Servlet中的一个接口,所以是可以使用HttpServletRequest的,祝学习愉快~

http://img.mukewang.com/climg/5b83c8960001baee06430074.jpg

0

0 学习 · 10204 问题

查看课程