写一个Java的登录拦截器
时间: 2023-02-06 15:06:35 浏览: 101
首先,您需要创建一个类并实现`javax.servlet.Filter`接口。然后,您可以在类中实现以下方法:
```java
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
// 获取登录状态
HttpServletRequest req = (HttpServletRequest) request;
HttpSession session = req.getSession();
Object user = session.getAttribute("user");
// 如果用户已登录,则放行请求
if (user != null) {
chain.doFilter(request, response);
return;
}
// 否则,重定向到登录页面
HttpServletResponse res = (HttpServletResponse) response;
res.sendRedirect("/login");
}
```
然后,在您的Web应用程序的部署描述符(`web.xml`)中配置过滤器,并指定要拦截的URL模式。例如:
```xml
<filter>
<filter-name>loginFilter</filter-name>
<filter-class>com.example.LoginFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>loginFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
```
这将会拦截所有请求,并在用户未登录时重定向到登录页面。
请注意,这只是一个简单的示例,您可能需要根据您的具体要求来调整过滤器的实现。例如,您可能希望排除一些URL模式(例如登录页面),或者使用其他方式来获取登录状态(例如使用Cookie)。