package com.vilicode.filter; import com.vilicode.bean.User; import javax.servlet.*; import javax.servlet.annotation.WebFilter; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; @WebFilter(filterName = "AdminFilter",urlPatterns = "/admin/*") public class AdminFilter implements Filter { public void destroy() { } public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException { HttpServletRequest request = (HttpServletRequest)req; HttpServletResponse requestp = (HttpServletResponse)resp; User u = (User) request.getSession().getAttribute("user"); if(u==null || u.isAdmin()==false) { requestp.sendRedirect("../index.action"); }else { // pass the request along the filter chain chain.doFilter(req, resp); } } public void init(FilterConfig config) throws ServletException { } }
时间: 2024-04-28 11:25:44 浏览: 127
这是一个 Java Servlet 中的过滤器,用于拦截访问 "/admin/*" 路径下的请求。它检查 Session 中是否存在一个名为 "user" 的属性,如果该属性不存在或者对应的用户不是管理员,则该请求会被重定向到 "../index.action" 路径下。如果用户是管理员,则该请求会通过,继续向下传递。
相关问题
import javax.servlet.annotation.WebFilter;
"WebFilter" 是一个 Java Servlet API 的注解,它用于声明一个类为过滤器类,可以通过在该类上加上 @WebFilter 注解来实现过滤器功能。它提供了一种替代在部署描述符中配置过滤器的方式,使得程序更加简洁易读。
import javax.servlet.annotation.webservlet;
### 回答1:
这段代码是Java中用来声明一个Servlet的注解,它的作用是将一个Java类声明为Servlet,并指定其访问的URL路径。具体来说,`javax.servlet.annotation.WebServlet`注解有一些属性可以设置,例如`name`属性用来指定Servlet的名称,`urlPatterns`属性用来指定Servlet对应的URL路径。在使用这个注解时,需要导入`javax.servlet.annotation.WebServlet`包。
### 回答2:
import javax.servlet.annotation.WebServlet 是 Java Servlet 3.0 新增的一个注解,用于在 Servlet 类上指定注解,来取代传统的使用 web.xml 文件配置 Servlet 的方式。
该注解主要用于指定 Servlet 类的映射信息,包括 Servlet 的 URL 地址、名称、URL模式、加载顺序等。通过在 Servlet 类上添加 @WebServlet 注解,可以方便地将 Servlet 注册到 Web 容器中,并且无需再在 web.xml 文件中进行配置。
例如:
@WebServlet("/hello")
public class HelloServlet extends HttpServlet {
// Servlet 的具体实现逻辑
}
在上述代码中,@WebServlet("/hello") 表示将 HelloServlet 注册到默认的 URL 模式“/hello”,当用户访问“http://localhost:8080/hello”时,就会通过该 Servlet 进行处理。
除了使用简单的 URL 模式外,@WebServlet 注解还支持多个 URL 模式的配置,支持使用通配符、正则表达式等灵活的方式进行匹配。
需要注意的是,使用 @WebServlet 注解时需要保证使用的 Java Servlet API 版本为 3.0 及以上,并且需要在项目的依赖中添加相应的 Servlet API jar 包。
总之,@WebServlet 注解是一个方便、简洁的 Servlet 类注册方式,能够减少对 web.xml 文件的依赖,提高代码的可读性和维护性。
### 回答3:
import javax.servlet.annotation.WebServlet; 是Java Servlet规范中的注解,用于标记一个类为Servlet,并指定其与请求URL的映射关系。
在Java EE中,Servlet是处理Web请求的一个关键组件。通常,我们需要在web.xml文件中配置Servlet及其映射关系。而使用@WebServlet注解可以简化配置过程,使得我们可以在Servlet类的定义上直接指定URL映射。
具体用法如下:
1. 在一个类上加上@WebServlet注解,表示该类是一个Servlet类。
2. 可以使用多个属性来定义Servlet的映射关系,例如:
- urlPatterns:指定一个或多个URL模式,表示该Servlet可以处理哪些请求。
- value:与urlPatterns属性作用相同,用于指定URL模式。
- name:指定Servlet的名称。
- loadOnStartup:指定Servlet的加载顺序。
等等。
@WebServlet注解的出现简化了Servlet的配置流程,并提供了更灵活的映射设置。通过该注解,开发者可以在Servlet类的定义上直接配置URL映射,避免了繁琐的web.xml配置。同时,也为Java EE的开发带来了便利和效率。
需要注意的是,使用@WebServlet注解时,需要确保使用的Servlet API版本兼容。此外,该注解只能用于Servlet类,不能用于其他类型的类。
阅读全文