过滤器Filter的使用(以登录为例子)
使用过滤器步骤:
(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的使用(以登录为例子)的更多相关文章
- ⑧javaWeb之在例子中学习(过滤器Filter)
前言 本系列 Servlet & JSP 学习系列[传送门]逐渐到了中期了,希望大家喜欢我写的,总结的点点滴滴- 今天我们来讲讲过滤器 你们的支持是我写博客的动力哦. 最近买了两本书,觉得大二 ...
- 过滤器(filter)实现用户登录拦截
过滤器(filter)实现用户登录拦截 >>>>>>>>>>>>>>>>>>>> ...
- MVC之 自定义过滤器(Filter)
MVC之 自定义过滤器(Filter) 一.自定义Filter 自定义Filter需要继承ActionFilterAttribute抽象类,重写其中需要的方法,来看下ActionFilterAttri ...
- 基于Shiro,JWT实现微信小程序登录完整例子
小程序官方流程图如下,官方地址 : https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/login.html ...
- 网站过滤器Filter
实际上,Filter与Servlet及其相似,区别只是FIlter的doFilter()方法里多了一个FilterChain的参数,通过该参数可以控制是否放行用户的请求.网站有了过滤器十分的方便,可以 ...
- paip.输出内容替换在Apache 过滤器filter的设置
paip.输出内容替换在Apache 过滤器filter的设置 作者Attilax 艾龙, EMAIL:1466519819@qq.com 来源:attilax的专栏 地址:http://blog ...
- AngularJS的过滤器$filter
过滤器(filter)主要用于数据的格式上,通过某个规则,把值处理后返回结果.例如获得数据集,可排序后再返回. ng内置的共有九种过滤器: currency 货币 使用currency可以将数字格式化 ...
- Servlet 过滤器Filter
特点 1)Filter是依赖于Servlet容器,属于Servlet规范的一部分,在Servlet API中定义了三个接口类:Filter, FilterChain, FilterConfig. 2) ...
- 过滤器(Filter)和拦截器(Interceptor)
过滤器(Filter) Servlet中的过滤器Filter是实现了javax.servlet.Filter接口的服务器端程序.它依赖于servlet容器,在实现上,基于函数回调,它可以对几乎所有请求 ...
随机推荐
- 软工实践第二次作业-sudoku
说明 Github项目地址 作业题目 解题思路 一开始拿到的时候,有一个思路,可以先填写全盘的"1",然后在插空填满全盘的"2".后来觉得自己理不清那个思路.遂 ...
- Vue框架的两种使用方式
1.单页面应用:使用Vue CLI工具生成脚手架,这是最常见的使用方式,简单用模板生成一个HelloWorld Demo,可以学习Vue的SPA项目结构 2.传统多页面应用:通过script引入Vue ...
- ESP32 environment ubuntu
ubuntu官方用的是16.04版本的,阿里源下载地址:http://mirrors.aliyun.com/ubuntu-releases/16.04/ 用官方版本的好处就是省的搞一堆各种错误 ...
- ubuntu环境下安装 eclipse
最近工作的需要,需要安装eclipse 软件 这是开发环境.废话少说 直接上安装步骤. 1.先下载jdk 最好下载jdk1.8 liunx版本的 http://www.oracle.com/tech ...
- Android学习之六种事件响应方法汇总
java源码如下: 1.MainActivity.java源码 package com.example.responsetest; import android.app.Activity; impor ...
- Spark笔记-DataSet,DataFrame
DataSet:面向对象的,从JVM进行构建,或从其它格式进行转化 DataFrame:面向SQL查询,从多种数据源进行构建,或从其它格式进行转化 RDD DataSet DataFrame互转 1. ...
- Java中try catch finally语句中含有return语句的执行情况(总结版)
在这里看到了try >但有一点是可以肯定的,finally块中的内容会先于try中的return语句执行,如果finall语句块中也有return语句的话,那么直接从finally中返回了,这也 ...
- 序号生成算法odoo
def get_sum_seq(self, cr, uid, ids, name, args=None, context=None): if not ids: return {} result={} ...
- vba 弹框
'第三个按钮,上传数据到数据库 Private Sub CommandButton1_Click() str1 = "abcde" str2 = InputBox("请输 ...
- 使用yield返回IEnumber<T>集合
yield是对一种复杂行为的简化,就是将一段代码简化为一种简单的形式. 先看一下常规的写法,下面例子中,把找出字符串阵列中,某些元素包含有某些字符的元素. class Bi { public stri ...