java简单的过滤器实现;
在学习Java的时候,我们会讲到的⼀个东西,名字叫做过滤器。顾名思义,过滤器,就是我们⽤来过滤的,那过滤什么呢?这是⼀个问题。1)“登录过滤器”就是为了防⽌在⽤户没有登录的情况下来访问我们的⽹站。
2)举例:main.html 这个⽹页是需要通过login.html这个⽹页登录后才可以访问的,现在有⼀个⽤户没有登录,直接访问main.html成功了。那么,这样的⽹站是不是觉得不安全呢?⽤户不⽤登录随随便便就访问了。so,we have to need a filter.我们需要⽤过滤器来过滤⼀些需要登录后才可以访问的页⾯.session怎么记忆
我们要怎么过滤呢?
1)⾸先,我们肯定要过滤掉需要登录的页⾯
2)我们拿到了需要登录的页⾯后,我们怎么判断⽤户有没有登录呢?所以,这个时候,我们就需要⼀个session了。
3)已session为依据,来判断⽤户是不是登录过了。登录过了我们就让他继续访问,没有登录的我们就让他返回到登录界⾯。
下⾯我们来看看代码是如何实现的:
package com.haojieli.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;
import javax.servlet.http.HttpSession;
public class LoginFilter implements Filter{
public void destroy() {
// TODO Auto-generated method stub
}
public void doFilter(ServletRequest arg0, ServletResponse arg1,
FilterChain arg2) throws IOException, ServletException {
// TODO Auto-generated method stub
HttpServletRequest req = (HttpServletRequest)arg0;
HttpServletResponse resp =(HttpServletResponse) arg1;
HttpSession session = Session();
// 获得⽤户请求的URI
String path = RequestURI();
// 从session取得已经登录验证的凭证我这⾥的demo⽤的是password来作为登录凭证
String password = (String) Attribute("password");
// login.jsp页⾯⽆需过滤(根据⾃⼰项⽬的要求来)
//也可以ains("login.jsp") 反正怎么精确怎么来就不多说了
if(path.indexOf("/login.jsp") > -1) {//注意:登录页⾯千万不能过滤不然过滤器就。。。。。⾃⾏调试不要偷懒!这样记忆深刻
arg2.doFilter(req, resp);
return;
} else {//如果不是login.jsp进⾏过滤
if (password == null || "".equals(password)) {
// 跳转到登陆页⾯
resp.sendRedirect("login.jsp");
} else {
// 已经登陆,继续此次请求
arg2.doFilter(req, resp);
}
}
}
public void init(FilterConfig arg0) throws ServletException {
// TODO Auto-generated method stub
}
}
在这⾥就不⽤解释代码了,代码中有详细的注释,但是重要的⼀点我们过滤器是写好了,还需要配置啊,不然怎么运⾏呢?followe me。将过滤器配置到l⾥⾯
<filter>
<filter-name>Login</filter-name>
<filter-class>com.haojieli.filter.LoginFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>adminLogin</filter-name>
<!--这⾥的/admin/* 表⽰是指定路径下的⽂件需要过滤也可以写为 <url-pattern>/*</url-pattern> 表⽰所有⽂件都需要过滤-->
<url-pattern>/admin/*</url-pattern>
</filter-mapping>
注意:登录页⾯不能过滤。。。⾃⾏调试不要偷懒!这样记忆深刻......
博⽂到此结束,感谢您的观看,希望对各位读者有所帮助,如果有什么意见以及建议请在评论留⾔......
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论