jsp实现登录验证的过滤器(jsp验证用户名和密码怎么输入)学到了

随心笔谈3年前发布 admin
224 0 0

文章摘要

本文描述了一个Java代码示例,实现了一个JSP过滤器`LoginFilter`,用于控制访问条件。该过滤器通过检查请求路径和用户登录状态来决定是否允许请求通过。具体来说,当请求路径包含`login.jsp`或`loginServlet`时,直接调用`doFilter`方法;否则,判断用户是否已登录:如果已登录,允许请求通过;否则,提示用户未登录并重定向至登录页面。 该代码实现了以下功能: 1. 使用`WebFilter`注解定义过滤器,匹配所有请求 2. 获取会话对象和设置响应格式 3. 通过请求路径和上下文路径判断是否需要进一步验证 4. 重定向未登录的用户至登录页面 代码简洁明了,专注于实现用户登录验证和重定向功能,适合用于JSP应用中需要控制访问权限的场景。


package filter;

import java.io.IOException;
import java.io.PrintWriter;

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.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

@WebFilter(filterName=”loginFilter”, urlPatterns={ “/*” })
public class LoginFilter implements Filter {

public void destroy() {
}

public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest req=(HttpServletRequest) request;
HttpServletResponse resp=(HttpServletResponse) response;
HttpSession session=req.getSession(true);
resp.setContentType(“text/html;”);
resp.setCharacterEncoding(“utf-8”);
PrintWriter out=resp.getWriter();
String request_uri=req.getRequestURI();
String ctxPath=req.getContextPath();
String uri=request_uri.substring(ctxPath.length());
if (uri.contains(“login.jsp”) || uri.contains(“loginServlet”)) {
chain.doFilter(request, response);
} else {
if (session.getAttribute(“user”) !=null) {
chain.doFilter(request, response);
} else {
out.println(“您没有登录,请先登录!3秒后回到登录页面。”);
resp.setHeader(“refresh”, “3;url=” + ctxPath + “/login.jsp”);
return;
}
}
}

public void init(FilterConfig fConfig) throws ServletException {
}

}

© 版权声明

相关文章