📄 checkfilter.java
字号:
package pmsys;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletContext;
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;
/**
* 实例9-2
*
* 先执行http://localhost:7878/JSPCH09/auth/test.jsp
* 其中/auth下的资源为受保护的资源; 如果用户未登陆那么直接跳转的登陆页面loginPage.jsp;
* 在用户登陆完成后再显示/auth/test.jsp的内容
*
* login.jsp用于判断权限
*
* @author java
*
*/
public class CheckFilter implements Filter {
private FilterConfig filterConfig;
private String loginPage = "/pmsys/login.jsp";
public void destroy() {
this.filterConfig = null;
}
public void doFilter(ServletRequest request, ServletResponse reponse,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest req = (HttpServletRequest)request;
HttpServletResponse res = (HttpServletResponse)reponse;
HttpSession session = req.getSession();
//判断用户是否登陆成功
if(session.getAttribute("flages")!=null){
chain.doFilter(req, res);
//return;
}else{
ServletContext ctx = this.filterConfig.getServletContext();
setForwardURI(req);
ctx.getRequestDispatcher(loginPage).forward(req, res);
}
}
/**
* 从web.xml中读取配置信息
*/
public void init(FilterConfig config) throws ServletException {
this.filterConfig = config;
if (filterConfig.getInitParameter("loginPage") != null) {
loginPage = filterConfig.getInitParameter("loginPage");
}
}
//设置原始请求的请求 URL
private void setForwardURI(HttpServletRequest request){
//获得请求的资源 如果客户请求 http://localhost:7878/jsp09/a.jsp?id=20
//以下方法得到的是/jsp09/a.jsp 注意不包含?后的查询字符串
StringBuffer requestURI = new StringBuffer(request.getRequestURI());
//以下方法获得查询字符串,就是问好后面的内容
String queryString = request.getQueryString();
//组装完整的请求路径
if(queryString != null){
requestURI.append("?").append(queryString);
}
request.setAttribute("orignURL", requestURI.toString());
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -