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 {
}
}
1回答
从下图可以看到doFilter是Filter接口中的方法,从携带的参数来看,doFilter中是有ServletRequest参数和ServletResponse参数的,所以可以对请求对象进行处理,并且Filter是Servlet中的一个接口,所以是可以使用HttpServletRequest的,祝学习愉快~

相似问题
回答 1