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