1. Filter自定义:
import j_mongoDB.JMongoDB;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
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 com.db.po.User;
public class LogFilter implements Filter {
private Set<String> nofilterSet;
// private static final String LOGON_URI = "LOGON_URI";
private String logon_page;
public void destroy() {
// TODO Auto-generated method stub
}
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest req = (HttpServletRequest) request;
HttpServletResponse res = (HttpServletResponse) response;
res.setContentType("text/html");
res.setCharacterEncoding("utf-8");
PrintWriter out = res.getWriter();
/**
* 获取当前url
*/
String cUrl = req.getRequestURI();
/**
* 获取当前session
*/
HttpSession session = req.getSession();
/**
* 从session中取到当前用户user
*/
User user = (User) session.getAttribute("user");
List<String> priilegeList = new ArrayList<String>();
System.out.println("当前连接-URL:" + cUrl);
if (nofilterSet.contains(cUrl)) {
chain.doFilter(request, response);
return;
} else {
if (user != null && !"".equals(user)) {
try {
System.out.println("当前用户名:" + user.getUsername()
+ ";当前用户ID:" + user.getId());
priilegeList = JMongoDB.getUserPrivilegeList(user.getId(),
true);
System.out.println("当前用户权限:" + priilegeList);
if (priilegeList.contains(cUrl)) {
chain.doFilter(request, response);
} else {
out.println("没有权限访问该链接!!!");
return;
}
} catch (Exception e) {
e.printStackTrace();
}
} else {
res.sendRedirect(logon_page);
}
}
}
@SuppressWarnings("unchecked")
public void init(FilterConfig filterConfig) throws ServletException {
/**
* 通用连接
*/
nofilterSet = (Set<String>) filterConfig.getServletContext()
.getAttribute("nofilter");
if (nofilterSet == null) {
nofilterSet = new HashSet<String>();
nofilterSet.add("/z_WebTest/");
nofilterSet.add("/z_WebTest/login.do");
filterConfig.getServletContext().setAttribute("nofilter",
nofilterSet);
}
logon_page = filterConfig.getInitParameter("LOGON_URI");
}
}
2. Web.xml配置自定义Filter
<filter>
<filter-name>logFilter</filter-name>
<filter-class>com.web.filter.LogFilter</filter-class>
<init-param> -->
<param-name>LOGON_URI</param-name>
<param-value>/z_WebTest/</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>logFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
分享到:
相关推荐
自定义Filter来解决web项目中的乱码问题,包括get请求和post请求,使用包装设计模式。
二、第一个Struts 2.0应用程序——Hello World 下面我们进行臭名昭著的Hello World程序。几乎所有语言的第一个程序都是Hello World。在src目录上右键,新建一个类,参数如下: 类的内容如下: package ...
NULL 博文链接:https://jiawu.iteye.com/blog/400351
自定义过滤器,过滤请求接口的请求,认证用户并记录日志
综合使用servlet filter与struts2 interceptor对权限进行验证。
严重: Exception starting filter struts2 java.lang.ClassNotFoundException: org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
结合struts2编写的通用过滤器filter,内附有word文档操作详解,配置十分方便,曾经做ssh项目的时候用于拦截浏览器地址栏非法登录,用在非法登录拦截这一块非常适合,经过测试没有问题。
为adapter自定义TextFilter 解决searchView 配合listview 实现listview中的元素不止一个的时候根据我们指定的元素搜索搜索
Struts2_interceptor_和_filter区别
JSF2.0实战 - 9、自定义Filter处理资源文件依赖关系源代码
Struts2允许在页面中使用自定义组件,这完全能满足项目中页面显示复杂,多变的需求。 Struts2的标签库有一个巨大的改进之处,struts2标签库的标签不依赖于任何表现层技术,也就是说strtus2提供了大部分标签,可以在...
Struts2--1.Filter作为控制器并搭建Struts2的基本环境
Struts2编写的通用的禁止用户非法访问非登录页面以外的其他页面的拦截器,过滤器,程序附带运行说明和可执行文件,希望给您的工作或学习带来帮助
<filter-class>org.apache.struts2.dispatcher.ActionContextCleanUp</filter-class> filter> <filter> <filter-name>sitemesh</filter-name> <filter-class>...
log4j自定义
struts1.2增删改查分页Filter Session
javaFilter自定义编码过滤器,防止中文乱码.
STRUTS:filter过滤器
在JAX-RS中,提供了NameBinding机制,简单理解NameBinding,就是把指定过滤器/拦截器通过自定义的名称注解绑定在某些匹配的资源方法上。Jersey, RESTeasy等框架都有相应的实现。 该代码利用Springboot模拟实现了...
第21周-第10章节-Python3.5-自定义filter.avi