package org.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;
import org.vo.Users;
public class LoginFilter implements Filter {
private static final String PARAM_PWD = "pwd"; //request发来的参数
private static final String PARAM_UID = "uid";
private static final String USER_INFO = "userInfo"; //session中保存用户时,作键
private static final String MSG = "msg"; //request中保存提示信息时,作键
private static final String MSG_NOTLOGIN = "您尚未登录"; //值
private static final String MSG_BADLOGIN = "用户名或密码出错";
private static final String JSP_MAIN = "main.jsp"; //主界面
private static final String JSP_LOGIN = "login.jsp"; //登录页
public void doFilter(ServletRequest arg0, ServletResponse arg1,
FilterChain arg2) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) arg0;
HttpServletResponse response = (HttpServletResponse) arg1;
HttpSession session = request.getSession();
/*
1.已登录,则可以到任何页面
2.未登录
2.1 访问主界面.[重点]
2.2 访问其它界面.提示未登录,重定向到登录页
*/
boolean bool = session.getAttribute(USER_INFO) != null;
if (bool) {
//1
arg2.doFilter(arg0, arg1);
} else {
//2.1
if (request.getRequestURI().indexOf(JSP_MAIN) != -1){
boolean b = login(request, response);
if (b){
request.getRequestDispatcher(JSP_MAIN).forward(request, response);
return;//这个return必须写上
} else {
request.getRequestDispatcher(JSP_LOGIN).forward(request, response);
return;//这个return必须写上
}
//2.2
} else {
request.setAttribute(MSG, MSG_NOTLOGIN);
request.getRequestDispatcher(JSP_LOGIN).forward(arg0, arg1);
}
}
}
/**
* 访问主页面
* @param request
* @param response
* @return
*/
private boolean login(HttpServletRequest request, HttpServletResponse response){
String uid = request.getParameter(PARAM_UID);
String pwd = request.getParameter(PARAM_PWD);
//直接访问主界面,视为未登录
if (uid==null || pwd==null || uid.equals("") || pwd.equals("")){
request.setAttribute(MSG, MSG_NOTLOGIN);
return false;
}
/*
1.登录成功
session中保存用户身份 [key:USER_INFO, value:u]
2.登录失败
request中保存提示信息 [key:msg, value:用户名或者密码出错]
*/
boolean b = uid.equals(pwd);
if(b) {
//1
HttpSession session = request.getSession();
Users u = new Users(uid);
session.setAttribute(USER_INFO, u);
return true;
}else{
//2
request.setAttribute(MSG, MSG_BADLOGIN);
return false;
}
}
public void init(FilterConfig filterConfig) throws ServletException {
}
public void destroy() {
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
filter_权限过滤器
共17个文件
jsp:4个
class:2个
java:2个
3星 · 超过75%的资源 需积分: 9 11 下载量 93 浏览量
2010-03-18
11:50:26
上传
评论 1
收藏 9KB RAR 举报
温馨提示
filter_权限过滤器 用过滤器来处理用户权限。最全面,最安全的做法。
资源推荐
资源详情
资源评论
收起资源包目录
LoginFilter_权限过滤器.rar (17个子文件)
LoginFilter_权限过滤器
.project 1KB
.settings
.jsdtscope 406B
org.eclipse.jdt.core.prefs 330B
org.eclipse.wst.jsdt.ui.superType.container 49B
org.eclipse.wst.jsdt.ui.superType.name 6B
.mymetadata 338B
WebRoot
login.jsp 451B
WEB-INF
web.xml 638B
lib
classes
org
vo
Users.class 604B
filter
LoginFilter.class 3KB
META-INF
MANIFEST.MF 39B
main.jsp 206B
main2.jsp 99B
logout.jsp 177B
src
org
vo
Users.java 352B
filter
LoginFilter.java 3KB
.classpath 362B
共 17 条
- 1
资源评论
- yangscy2013-07-09唔……可能是我不太会用吧,没调试成功
hun_liu
- 粉丝: 0
- 资源: 4
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功