使用过滤器步骤:

(1)在web.xml文件中添加过滤器(以下例子是过滤多个请求)

<!-- 用户登录过滤 -->
<filter>
<filter-name>loginFilter</filter-name>
<filter-class>com.learning.filter.loginFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>loginFilter</filter-name>
<url-pattern>/classes/classesPageInfo.do</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>loginFilter</filter-name>
<url-pattern>/note/notePageInfo.do</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>loginFilter</filter-name>
<url-pattern>/ask/asksPageInfo.do</url-pattern>
</filter-mapping>

(2)过滤器类

package com.learning.filter;

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.HttpSession; public class loginFilter implements Filter{
private String encoding; @Override
public void destroy() {
// TODO Auto-generated method stub } @Override
public void doFilter(ServletRequest req, ServletResponse resp,
FilterChain filterChain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) req;
HttpServletResponse response = (HttpServletResponse) resp;
HttpSession session = request.getSession();
String loginName = (String) session.getAttribute("loginName");
//判断当前用户是否已经登录,若未登录跳到登录页面
if (loginName == null || loginName=="") {
String goUrl = request.getRequestURL().toString() + "?" +request.getQueryString().toString();
session.setAttribute("goUrl", goUrl);
request.getRequestDispatcher("/user/log.jsp").forward(request, response);
return ;
} else {
filterChain.doFilter(req, resp);
}
} @Override
public void init(FilterConfig filterConfig) throws ServletException {
encoding = "utf-8";
} }

注:这个主要的作用是将过滤前的地址记录下来,登录成功之后跳转到过滤前的页面

String goUrl = request.getRequestURL().toString() + "?"+request.getQueryString().toString();
session.setAttribute("goUrl", goUrl);

(3)登录页面的form表单代码

<form action="<%=path%>person/dologin.do" name="loginform"
accept-charset="utf-8" id="login_form" class="loginForm"
method="post">
<input type="hidden" name="did" value="0" /> <input type="hidden"
name="to" value="log" />
<div class="uinArea" id="uinArea">
<label class="input-tips" for="u">账号:</label>
<div class="inputOuter" id="uArea"> <input type="text" id="u" name="username" class="inputstyle" />
</div>
</div>
<div class="pwdArea" id="pwdArea">
<label class="input-tips" for="p">密码:</label>
<div class="inputOuter" id="pArea"> <input type="password" id="p" name="password"
class="inputstyle" />
</div>
</div>
<div style="padding-left:50px;margin-top:20px;">
<input type="submit" value="登 录" style="width:150px;"
class="button_blue" />
</div>
</form>

(4)登录表单提交后通过action跳到控制层,并根据情况跳到不同的地方

// 用户登录
@RequestMapping("/dologin.do")
public String doLogin(@RequestParam("username") String username,
@RequestParam("password") String password, HttpSession session) {
Map param = new HashMap();
param.put("loginName", username);
param.put("loginPwd", password);
// 判断用户是否存在
User user = personServiceImpl.findUserInfo(param);
session.setAttribute("loginName", user.getLoginName());
session.setAttribute("userPower", user.getUserPower());
String goUrl = (String) session.getAttribute("goUrl");
if (goUrl != null) {
return "redirect:" + goUrl;
}
return "redirect:/mainpage/tomainpage.do";
}

过滤器Filter的使用(以登录为例子)的更多相关文章

  1. ⑧javaWeb之在例子中学习(过滤器Filter)

    前言 本系列 Servlet & JSP 学习系列[传送门]逐渐到了中期了,希望大家喜欢我写的,总结的点点滴滴- 今天我们来讲讲过滤器 你们的支持是我写博客的动力哦. 最近买了两本书,觉得大二 ...

  2. 过滤器(filter)实现用户登录拦截

    过滤器(filter)实现用户登录拦截 >>>>>>>>>>>>>>>>>>>> ...

  3. MVC之 自定义过滤器(Filter)

    MVC之 自定义过滤器(Filter) 一.自定义Filter 自定义Filter需要继承ActionFilterAttribute抽象类,重写其中需要的方法,来看下ActionFilterAttri ...

  4. 基于Shiro,JWT实现微信小程序登录完整例子

    小程序官方流程图如下,官方地址 : https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/login.html ...

  5. 网站过滤器Filter

    实际上,Filter与Servlet及其相似,区别只是FIlter的doFilter()方法里多了一个FilterChain的参数,通过该参数可以控制是否放行用户的请求.网站有了过滤器十分的方便,可以 ...

  6. paip.输出内容替换在Apache 过滤器filter的设置

    paip.输出内容替换在Apache 过滤器filter的设置 作者Attilax  艾龙,  EMAIL:1466519819@qq.com 来源:attilax的专栏 地址:http://blog ...

  7. AngularJS的过滤器$filter

    过滤器(filter)主要用于数据的格式上,通过某个规则,把值处理后返回结果.例如获得数据集,可排序后再返回. ng内置的共有九种过滤器: currency 货币 使用currency可以将数字格式化 ...

  8. Servlet 过滤器Filter

    特点 1)Filter是依赖于Servlet容器,属于Servlet规范的一部分,在Servlet API中定义了三个接口类:Filter, FilterChain, FilterConfig. 2) ...

  9. 过滤器(Filter)和拦截器(Interceptor)

    过滤器(Filter) Servlet中的过滤器Filter是实现了javax.servlet.Filter接口的服务器端程序.它依赖于servlet容器,在实现上,基于函数回调,它可以对几乎所有请求 ...

随机推荐

  1. 【Beta Scrum】冲刺!4/5

    1. 今日完成情况 人员 学号 分工 是否完成 完成情况 胡武成 031502610 完成登录注册api,协助web端完成api Y 基本逻辑写完,短信部分还在修改中,预计明天早上便能完成 郭剑南 0 ...

  2. Spring MVC中自定义拦截器的简单示例

    1. 引言 拦截器(Interceptor)实现对每一个请求处理前后进行相关的业务处理,类似于Servlet的Filter. 我们可以让普通的Bean实现HandlerIntercpetor接口或继承 ...

  3. sql 查询重复行数据

    1.查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断select * from peoplewhere peopleId in (select  peopleId  from  ...

  4. WPFのGrid布局的深度理解

    以下以row定义说明问题,列类似: <Grid>        <Grid.RowDefinitions>            <RowDefinition /> ...

  5. Django之views

    一 URL补充 二 Views试图函数 一 URL补充 1 MTV模型 2  django建立流程(用命令版) (1)django-admin startproject projectname (2) ...

  6. 【转】MySQL理解索引、添加索引的原则

    索引用于快速找出在某个列中有一特定值的行.不使用索引,MySQL必须从第1条记录开始然后读完整个表直到找出相关的行,还需要考虑每次读入数据页的IO开销.而如果采取索引,则可以根据索引指向的页以及记录在 ...

  7. win7(64位)Sql server 用T-sql读取本地数据文件dbf的数据文件

    原文地址:https://www.cnblogs.com/cl1006/p/9924066.html 第一步启用Ad Hoc Distributed Queries  在SQLserver执行以下的语 ...

  8. 为什么学习Lua

    目前公认的最快的脚本语言 可以编译调试 与C/C++结合容易 Lua是对性能有要求的必备脚本 C++的缺点: 编译慢,调试难 学习难度大

  9. linux中断源码分析 - 概述(一)

    本文为原创,转载请注明:http://www.cnblogs.com/tolimit/ 关于中断和异常 一般在书中都会把中断和异常一起说明,因为它们具有相同的特点,同时也有不同的地方.在CPU里,中断 ...

  10. 5-(基础入门篇)学会刷Wi-Fi模块固件(刷LUA版本固件)

    http://www.cnblogs.com/yangfengwu/p/9065559.html 基础教程源码链接请在淘宝介绍中下载,由于链接很容易失效,如果失效请联系卖家,谢谢 https://it ...