第一百一十七天 how can I 坚持

今天其实是很烦躁的一天。浑身乏力,好蛋疼,很多事,都感觉很压抑,效率很低。

过滤器: 

web.xml配置:
<filter>
        <filter-name>mobileFilter</filter-name>
        <filter-class>com.oauth.system.utils.MobileFilter</filter-class>
        <init-param>
            <param-name>logonStrings</param-name><!-- 对登录页面不进行过滤 -->
            <param-value>/mobileUser/forgetPassword;/mobileUser/init;/mobileUser/initLogin;/mobileUser/login;/mobileUser/initRegedit;/mobileUser/validateAccountCode;/mobileUser/validateBindPhone;/mobileUser/register;/mobileUser/sendVerifyCode;/mobileUser/verifyCode;</param-value>
        </init-param>
<!--         <init-param>
            <param-name>includeStrings</param-name>只对指定过滤参数后缀进行过滤
            <param-value>.do;.jsp</param-value>
        </init-param>   -->
        <init-param>
            <param-name>redirectPath</param-name><!-- 未通过跳转到登录界面 -->
            <param-value>/mobileUser/initLogin</param-value>
        </init-param>
    </filter>
对应java类:
package com.oauth.system.utils;

import java.io.IOException;

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.HttpServletResponseWrapper;

import com.oauth.mobile.bean.UserMb;

public class MobileFilter implements Filter {

    public FilterConfig config;

    @Override
    public void destroy() {
        this.config = null;
    }

    /* (non-Javadoc)
     * @see javax.servlet.Filter#doFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse, javax.servlet.FilterChain)
     * 过滤手机店的
     */
    @Override
    public void doFilter(ServletRequest request, ServletResponse response,
            FilterChain chain) throws IOException, ServletException {
        HttpServletRequest hrequest = (HttpServletRequest)request;
        HttpServletResponseWrapper wrapper = new HttpServletResponseWrapper((HttpServletResponse) response);
        String logonStrings = config.getInitParameter("logonStrings");        //<!--登录登陆页面-->
        String redirectPath = hrequest.getContextPath() + config.getInitParameter("redirectPath");//<!--没有登陆转向页面-->

        String openid = request.getParameter("openid");

        String[] logonList = logonStrings.split(";");  

        if (MobileFilter.isContains(hrequest.getRequestURI(), logonList)) {//<!--对登录页面不进行过滤-->
            chain.doFilter(request, response);
            return;
        }  

        UserMb user = ( UserMb ) hrequest.getSession().getAttribute("mobileUser");//<!--判断用户是否登录-->
        if (user == null) {
            wrapper.sendRedirect(redirectPath);
            return;
        }else {
            chain.doFilter(request, response);
            return;
        }
    }

    @Override
    public void init(FilterConfig config) throws ServletException {
        this.config = config;
    }

    public static boolean isContains(String container, String[] regx) {
        boolean result = false;  

        for (int i = 0; i < regx.length; i++) {
            if (container.indexOf(regx[i]) != -1) {
                return true;
            }
        }
        return result;
    }
}
时间: 2024-12-17 17:26:20

第一百一十七天 how can I 坚持的相关文章

一起talk C栗子吧(第一百一十七回:C语言实例--线程死锁一)

各位看官们,大家好,上一回中咱们说的是线程同步之互斥量的例子,这一回咱们说的例子是:线程死锁.闲话休提,言归正转.让我们一起talk C栗子吧! 我们在前面章回中介绍互斥量相关的函数时提到过死锁,不过当时没有做详细的介绍,有些看官对死锁不明白.因此,我们在今天的章回中详细介绍死锁,并且使用线程来显示死锁. 死锁就是不同的程序在运行时因为某种原因发生了阻塞,进而导致程序不能正常运行.阻塞程序的原因通常都是由于程序没有正确使用临界资源. 我们举个日常生活中的例子来比喻死锁.我们把马路上行驶的汽车比作

python第一百一十七天-----ModelForm组件

Model + Form => 验证 + 数据库操作 - class LoginModelForm(xxxxx): 利用model.A中的字段 1. 生成HTML标签:class Meta: ... 2. mf = xxxModelForm(instance=ModelObj) 3. 额外的标签, is_rmb = Ffields.CharField(widget=Fwidgets.CheckboxInput()) 4. 各种验证 is_valid() -> 各种钩子... 5. mf.sav

小刘同学的第一百一十七篇博文

接着昨天的SQL,今天改好了,其实不是SQL的原因,是路由写错了,难怪一直渲染不了数据. 后面就是把每条朋友圈的文章和标题打印出来. 其实都没什么好说的了,今天的代码的时间也比较少. 还有10天交论文和毕设初稿,还有1天参加考试. 其实主要是考试,毕竟都准备了这么久了,这两天白天也一直都跑到很远的地方去上课. 白天已经很累了,所以这几天晚上都不能打起精神来,也不是特别认真了. 不过周六考完,就要抓紧了,今天也结束第4课了,还剩下2节课,我觉得全力写代码的话,3天做完应该没问题. 牢牢把握明天最后

“全栈2019”Java第一百一十三章:什么是回调?回调应用场景详解

难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第一百一十三章:什么是回调?回调应用场景详解 下一章 "全栈2019"Java异常第一章:什么是异常? 学习小组 加入同步学习小组,共同交流与进步. 方式一:关注头条号Gorhaf,私信"Java学习小组". 方式二:关注公众号Gorhaf,回复"Java学习小

python第一百一十一天 --Django 6

创建数据库,设计表结构和字段 使用 MySQLdb 来连接数据库,并编写数据访问层代码 业务逻辑层去调用数据访问层执行数据库操作 1 import MySQLdb 2 3 def GetList(sql): 4 db = MySQLdb.connect(user='root', db='wupeiqidb', passwd='1234', host='localhost') 5 cursor = db.cursor() 6 cursor.execute(sql) 7 data = cursor.

一起talk C栗子吧(第一百一十六回:C语言实例--线程同步之互斥量二)

各位看官们,大家好,上一回中咱们说的是线程同步之信号量的例子,这一回咱们继续说该例子.闲话休提,言归正转.让我们一起talk C栗子吧! 我们在上一回中详细介绍了互斥量相关函数的用法,这一回中,我们介绍如何使用这些函数来操作互斥量. 下面是详细的操作步骤: 1.定义一个互斥量A,用来同步线程: 2.在创建线程的进程中使用pthread_mutex_init函数初始化互斥量,互斥量的属性使用默认值: 3.在读取数据的线程中读取数据,首先使用pthread_mutex_lock函数对互斥量A进行加锁

一起talk C栗子吧(第一百一十九回:C语言实例--线程死锁三)

各位看官们.大家好,上一回中咱们说的是线程死锁的样例,这一回咱们继续说该样例.闲话休提,言归正转.让我们一起talk C栗子吧! 看官们,由于篇幅的原因我们在上一回仅仅介绍了死锁发生的第一种原因,今天我们将介绍死锁发生的另外一种原因,而且该原因中的伪代码转换为实际的C语言代码. 为了方便,我们使用前面章回中演示相互排斥量的代码,在该代码的基础上做一些小改动来演示死锁.代码例如以下: 首先定义两个相互排斥量,相互排斥量是全局变量.方便线程使用. #if MUTEX_ENABLE pthread_m

第一百一十六节,JavaScript,DOM操作样式

JavaScript,DOM操作样式 一.操作样式 CSS作为(X)HTML的辅助,可以增强页面的显示效果.但不是每个浏览器都能支持最新的CSS能力.CSS的能力和DOM级别密切相关,所以我们有必要检测当前浏览器支持CSS能力的级别. DOM1级实现了最基本的文档处理,DOM2和DOM3在这个基础上增加了更多的交互能力,这里我们主要探讨CSS,DOM2增加了CSS编程访问方式和改变CSS样式信息. DOM一致性检测 功能 版本号 说明 Core 1.0.2.0.3.0 基本的DOM,用于表现文档

Android开发笔记(一百一十七)app省电方略

电源管理PowerManager PowerManager是Android的电源管理类,用于管理电源操作如睡眠.唤醒.重启以及调节屏幕亮度等等. PowerManager的对象从系统服务POWER_SERVICE中获取,它的主要方法如下: goToSleep : 睡眠,即锁屏. wakeUp : 唤醒,即解锁. reboot : 重启. 另有下列几个隐藏的方法: getMinimumScreenBrightnessSetting : 获取屏幕亮度的最小值. getMaximumScreenBri