过滤器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容器,在实现上,基于函数回调,它可以对几乎所有请求 ...
随机推荐
- golang类型判断
_.ok:=interface{}(a).(B) 此语句用于判断对象a是否是B类型 也可以判断对象a是否实现了B接口 package main import "fmt" type ...
- oracle的order by排序中空字符串处理方法
1.缺省处理 Oracle在Order by 时缺省认为null是最大值,所以如果是ASC升序则排在最后,DESC降序则排在最前 2.使用nvl函数 nvl函数可以将输入参数为空时转换为一特定值,如 ...
- ActivityThread main
public static void main(String[] args) { Trace.traceBegin(Trace.TRACE_TAG_ACTIVITY_MANAGER, "Ac ...
- mini2440裸机试炼之—RTC闹钟中断,节拍中断
版权声明:博客地址:http://blog.csdn.net/muyang_ren.源代码能够在我的github上找看看 https://blog.csdn.net/muyang_ren/articl ...
- windows下安装ElasticSearch的Head插件
es5以上版本安装head需要安装node和grunt(之前的直接用plugin命令即可安装) (一)从地址:https://nodejs.org/en/download/ 下载相应系统的msi,双击 ...
- 【SQL】sql update 多表关联更新方法总结
#表结构: 1.表一:Test1 Id name age 1 2 2.表二:Test2 Id name age 1 小明 10 2 小红 8 #实现将表Test2的name和age字段 ...
- (4)top详解 (每周一个linux命令系列)
(4)top详解 (每周一个linux命令系列) linux命令 top详解 引言:今天的命令是用来看cpu信息的top top 我们先看man top top - display Linux pro ...
- ROS教程0 环境配置
1安装环境配置(桌面进入命令行) echo "source /opt/ros/indigo/setup.bash" >> ~/.bashrc source ~/.bas ...
- docker swarm英文文档学习-11-上锁你的集群来保护你的加密密钥
Lock your swarm to protect its encryption key上锁你的集群来保护你的加密密钥 在Docker 1.13及更高版本中,默认情况下,群管理器使用的Raft日志在 ...
- SpringMVC——消息转换器HttpMessageConverter(转)
文章转自http://blog.csdn.net/cq1982/article/details/44101293 概述 在SpringMVC中,可以使用@RequestBody和@ResponseBo ...