使用Filter写一个验证登录功能
实现思路
首先我们要创建一个类继承Filter 之后去实现init(), doFilter(),destroy()三个方法
之后在doFilter中也就是执行过滤的方法中写入判断验证的功能,还需要区分拿一些
地址是不需要过滤的也需要过滤出去,最后对不满足条件的访问地址让它重定向指定
的位置。
package Work.Filter;
import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
public class ValidateLogon implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
//转换req和resp
HttpServletRequest req = (HttpServletRequest)servletRequest;
HttpServletResponse resp = (HttpServletResponse)servletResponse;
//提取到网页的Url地址
String url = req.getRequestURI();
//判断是不是过滤的地址就直接放行(登录和注册不用过滤)
if(url.endsWith("logOnServlet") || url.endsWith("LogOn.jsp")|| url.endsWith("Location.jsp") ){
filterChain.doFilter(req, resp);
return;
}
//获取session
HttpSession session = req.getSession();
//提取session中的username如果有说明已经登录了
if(session.getAttribute("username") == null){
//跳转登录验证
resp.sendRedirect("/LogOn.jsp");
}else {
//如果没问题就继续
filterChain.doFilter(servletRequest,servletResponse);
}
}
@Override
public void destroy() {
}
}
**在web.xml中我们需要添加**
<filter>
<filter-name>validateLogon</filter-name>
<filter-class>Work.Filter.ValidateLogon</filter-class>
</filter>
<filter-mapping>
<filter-name>validateLogon</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
这是比较简单的一种,当然大家可以在这种基础上进行补充!!(●'◡'●)