`
anysky131
  • 浏览: 177188 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

JAVA工具类集锦4--登录过滤器

    博客分类:
  • Java
阅读更多

4、登录过滤器

import javax.servlet.Filter;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.FilterChain;
import java.io.IOException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.ArrayList;

/**
*
* <p>Title: 登陆过滤操作</p>
*/
public class LoginFilter
implements Filter {
private static String loginURL;
private static ArrayList needRight;
private static ArrayList noneedRight;
private FilterConfig filterConfig;
public LoginFilter() {
}

public void init(FilterConfig filtercfg) throws javax.servlet.
ServletException {
loginURL = filtercfg.getInitParameter("loginURL");
this.filterConfig = filterConfig;
needRight = new ArrayList();
needRight.add("forum_add");
needRight.add("forum_delete");
needRight.add("forum_update");
needRight.add("topic_delete");
needRight.add("topic_update");

noneedRight = new ArrayList();
noneedRight.add("login"); //用户登录
noneedRight.add("user_add"); //用户注册
noneedRight.add("include/check.js"); //JAVASCRIPT脚本
}

private boolean isRightNeed(String queryString) {
if (queryString.indexOf("method=") > -1) {
for (int i = 0; i < needRight.size(); i++) {
String method = (String) needRight.get(i);
if (queryString.indexOf(method) > -1) {
return true;
}
}
}
return false;
}

private boolean isLoginNeed(String queryString) {
for (int i = 0; i < noneedRight.size(); i++) {
String method = (String) noneedRight.get(i);
if (queryString.indexOf(method) > -1) {
return false;
}
}
return true;
}

private boolean hasRight(User loginUser, String queryString) {
boolean flag = true;
if (isRightNeed(queryString)) {
if (loginUser.getDegree() == User.SUPERADMIN) {
flag = true;
}
else {
flag = false;
}
}
return flag;
}

public void doFilter(ServletRequest request, ServletResponse response,
FilterChain filterchain) throws java.io.
IOException,
javax.servlet.ServletException {
HttpServletRequest httprequest = (HttpServletRequest) request;
HttpServletResponse httpresponse = (HttpServletResponse) response;
User loginUser = (User) httprequest.getSession().getAttribute(
"user");
String tempURI = (httprequest.getRequestURI()).toLowerCase();
String tempURL = (httprequest.getRequestURL()).toString().
toLowerCase();
String queryString = httprequest.getQueryString();
if (queryString == null) {
queryString = tempURI;
}
System.out.println("queryString:" + queryString);
if (loginUser == null) {
if (!isLoginNeed(queryString)) {
filterchain.doFilter(request, response);
return;
}
else {
httpresponse.sendRedirect("login.jsp");
return;
}
}
if (hasRight(loginUser, queryString)) {
filterchain.doFilter(request, response);
return;
} else {
httpresponse.sendRedirect("success.jsp?flag=false");
return;
}
}

public void destroy() {
loginURL = null;
filterConfig = null;
}

}

分享到:
评论

相关推荐

    java面试笔试题集锦

    14. **Java EE技术**:Servlet、JSP、过滤器、监听器等,是构建Web应用的基础。 15. **测试**:JUnit、Mockito等单元测试工具的使用,以及TDD(Test-Driven Development)的概念。 以上知识点只是冰山一角,"java...

    java笔试题经典集锦

    20. **并发库(Java Concurrency)**:包括并发集合(ConcurrentHashMap、CopyOnWriteArrayList等)、原子类(AtomicInteger、AtomicReference等)以及并发工具类(ExecutorService、CountDownLatch、Semaphore等)...

    最终JAVA面试题目汇总 Java面试题集锦 Java面试题大全 java面试100题目.pdf

    4. 并发工具类:熟悉ConcurrentHashMap、CountDownLatch、CyclicBarrier、Semaphore等并发工具。 5. 泛型方法与菱形问题:理解如何使用泛型方法解决菱形问题。 通过这些面试题的练习和复习,你可以全面巩固Java...

    2020年java面试题集锦(2)(1).docx

    7. 并发编程Java 提供了丰富的并发工具类,如 `java.util.concurrent` 包中的 `ExecutorService`、`Semaphore`、`CountDownLatch` 等,以及 `synchronized` 关键字、`volatile` 关键字和 `java.util.concurrent....

    java笔试题大集合及答案(另附各大公司笔试题).rar

    - **并发工具类**:如Semaphore, CyclicBarrier, CountDownLatch等在多线程环境下的应用。 3. **Servlet**: - **Servlet生命周期**:包括初始化、服务和销毁三个阶段。 - **请求与响应**:HttpServletRequest和...

    大小企业java web方面的笔试题集锦

    本题集锦是达内在2010年至2013年间对各大中小企业笔试、面试题目的整合,涵盖了Java Web的基础到高级的知识点,对于准备相关面试的开发者来说具有很高的参考价值。 一、Java基础 1. Java语法:理解基本的数据类型、...

    Tomcat常见问题集锦(持续更新)

    - `web.xml`:每个Web应用都有一个web.xml,用于定义Servlet、过滤器、监听器等。 - `context.xml`:可以用来配置应用级别的设置,如数据源、Session超时等。 4. **内存管理**: - `tomcatMemory.jsp`可能是一个...

    Google_Android_SDK开发范例集锦

    ### Google Android SDK 开发范例集锦 #### 第1章:了解、深入、动手做 - **1.1 红透半边天的Android** 介绍Android操作系统的发展历程,包括其由来、发展现状以及未来趋势,帮助读者理解Android在移动设备市场...

    BIRT知识集锦(基础知识大全)

    4. **样品阅读器**: BIRT提供了一个预览和展示报表的样品阅读器,它内置在Eclipse中,通过Apache Tomcat服务器运行,同时也可以独立部署在其他JSP支持的环境中。 BIRT的灵活性和开放性使其成为开发复杂报表和商业...

    j2ee项目中中文乱码问题集锦

    此外,还可以通过自定义过滤器来处理乱码问题。例如: ```java public class EncodeFilter implements Filter { public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) ...

    2020年JAVA核心面试题库.zip

    4. **并发编程**:线程、同步机制(如synchronized关键字、Lock接口)、并发工具类(如Semaphore、CountDownLatch、CyclicBarrier)。 5. **内存模型和垃圾回收**:JVM内存区域、垃圾收集器的工作原理、内存溢出与...

    Tomcat 配置集锦

    这是每个Web应用的部署描述符,用于定义Servlet、过滤器、监听器等。你可以在这里配置全局错误页面、安全约束、Session超时时间等。 4. **context.xml配置** 该文件用于定义应用级别的配置,如数据源、 Realm...

    java、数据库等方面的面试题

    1. **Servlet**:Servlet生命周期、请求处理、响应处理、过滤器和监听器的使用。 2. **JSP**:JSP的脚本元素、指令元素、EL表达式、JSTL标签库。 3. **MVC设计模式**:Spring MVC的原理和配置,以及...

    J2EE面试题(附答案)

    - 是Web应用的核心配置文件,用于定义Servlet、过滤器、监听器等组件的配置信息。 #### 高级话题 1. **安全认证** - 基本认证(Basic Authentication)通过HTTP头传输用户名和密码。 - SSL(Secure Sockets ...

    EAS_BOS_开发问题集锦

    4. **字段事件与方法体**:在EAS中,可以为单据上的字段添加事件监听器,例如“点击”、“更改”等,然后实现对应的事件处理方法,用Java或BOS脚本编写业务逻辑。 5. **BOTP规则**:BOTP(Business Object ...

    WDIT.rar_Help!_Wdit_Z2L

    2. XMLStreamWriterArrayFilter.class:可能是一个过滤器,用于处理XML流写入器,尤其是处理数组的情况。 3. JAXBXMLStreamWriterFilter.class:可能扩展了XMLStreamWriter,添加了过滤功能,允许控制XML的输出。 4....

Global site tag (gtag.js) - Google Analytics