`
ren2881971
  • 浏览: 108465 次
社区版块
存档分类
最新评论

Filter过滤,未登录的用户页面跳转

    博客分类:
  • j2ee
 
阅读更多
package com.dog.filter;

import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

public class OnlineFilter extends HttpServlet implements Filter {

	private static final long serialVersionUID = 1L;

	@Override
	public void destroy() {
		System.out.println("OnlineFilter destroy>>>>>>>>>>>>>>>>>>");
	}

	@Override
	public void doFilter(ServletRequest request, ServletResponse response,
			FilterChain chain) throws IOException, ServletException {
	
		/*RequestDispatcher dispatcher = request
				.getRequestDispatcher("../index.jsp");*/
		HttpServletRequest req = (HttpServletRequest) request;
		HttpServletResponse resp = (HttpServletResponse) response;
	    String path = req.getContextPath();
	    String basePath = req.getScheme()+"://"+req.getServerName()+":"+req.getServerPort()+path;
		HttpSession session = req.getSession(true);
		String username = (String) session.getAttribute("username");
 		if (username == null || "".equals(username)) {
			
			resp.setHeader("Cache-Control", "no-store");
			resp.setDateHeader("Expires", 0);
			resp.setHeader("Prama", "no-cache");
			resp.sendRedirect(basePath+"/index.jsp");
		} else {
			chain.doFilter(req, resp);
		}
	}

	@Override
	public void init(FilterConfig arg0) throws ServletException {
		System.out.println("OnlineFilter init>>>>>>>>>>>>>>>>>");
	}

}


package com.dog.filter;

import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

public class OnlineFilter extends HttpServlet implements Filter {

	private static final long serialVersionUID = 1L;

	@Override
	public void destroy() {
		System.out.println("OnlineFilter destroy>>>>>>>>>>>>>>>>>>");
	}

	@Override
	public void doFilter(ServletRequest request, ServletResponse response,
			FilterChain chain) throws IOException, ServletException {
	
		/*RequestDispatcher dispatcher = request
				.getRequestDispatcher("../index.jsp");*/
		HttpServletRequest req = (HttpServletRequest) request;
		HttpServletResponse resp = (HttpServletResponse) response;
	    String path = req.getContextPath();
	    String basePath = req.getScheme()+"://"+req.getServerName()+":"+req.getServerPort()+path;
		HttpSession session = req.getSession(true);
		String username = (String) session.getAttribute("username");
 		if (username == null || "".equals(username)) {
			
			resp.setHeader("Cache-Control", "no-store");
			resp.setDateHeader("Expires", 0);
			resp.setHeader("Prama", "no-cache");
			resp.sendRedirect(basePath+"/index.jsp");
		} else {
			chain.doFilter(req, resp);
		}
	}

	@Override
	public void init(FilterConfig arg0) throws ServletException {
		System.out.println("OnlineFilter init>>>>>>>>>>>>>>>>>");
	}

}


<filter>
	 	<filter-name>OnlineFilter</filter-name>
	 	<filter-class>com.dog.filter.OnlineFilter</filter-class>
	 </filter>
	 <filter-mapping>
	 	<filter-name>OnlineFilter</filter-name>
	 	<url-pattern>/main/*</url-pattern>
	 </filter-mapping>

上午在完成这部分功能的时候遇到一个问题。Filter过滤的太多了。点击提交按钮,不是先提交到action.而是先提交到filter。 这样filter的session就取不到值,无论填写什么信息都会因为session是null而跳转到index.jsp产生循环跳转的问题。
解决方法就是 将登录过滤的filter的url加上路径,然后将需要过滤的页面放到相应的文件夹下,这样就能过滤指定的url地址啦。 访问index.jsp的时候就不会过滤。 不错。 又解决了一个问问。慢慢来。切莫浮躁。
分享到:
评论

相关推荐

    Java SpringBoot实现的过滤器(和拦截器)控制登录页面跳转

    该压缩包实现了利用过滤器或者拦截器对登录信息进行验证跳转登陆页的功能,利用的是SpringBoot和thymeleaf,使用前请先看使用说明

    play for scala 实现SessionFilter 过滤未登录用户跳转到登录页面

    主要介绍了play for scala 实现SessionFilter 过滤未登录用户跳转到登录页面的相关资料,需要的朋友可以参考下

    利用java filter 实现业务异常拦截源码

    利用java filter 实现业务异常拦截 跳转到错误信息提示页面 我们在做项目中肯定都会遇到自定义业务异常 ,然后将业务异常信息跳转的统一的信息提示页面的情况,比如我们在struts的时候我们会用到struts的异常处理...

    如何使用java过滤器(filter)进行登陆验证?

    之后,就判断一下是否初始化页面时可以放行,如果未登录用户要访问登陆后才能查看的信息,就跳转到登陆页面,提示用户先登陆,最后再判断是否登录即可。登录了就放行,登录不成功跳转登录页面。 import javax....

    shiroFilter权限验证

    -- 用户访问未对其授权的资源时,所显示的连接 --&gt; &lt;!-- 若想更明显的测试此属性可以修改它的值,如unauthor.jsp,然后用[玄玉]登录后访问/admin/listUser.jsp就看见浏览器会显示unauthor.jsp --&gt; /&gt; ...

    用户数据操作.rar

    动态网页项目,可实现用户注册、登录、增删改查用户信息数据。利用Oracle数据库,通过JDBC连接数据库,实现从前端到后端的连通。其中,添加了过滤器filter,汉字乱码过滤器和登录页面安全跳转过滤器。

    简易学习社交平台

    利用丰富的文章内容吸引用户注册登录评论文章,对于用户的请求,后台service业务层都有相对应的curd功能为用户提供服务,后台servlet逻辑层控制整个web应用的页面逻辑跳转功能,Filter过滤器过滤掉没有用户信息的...

    springmvcwebjspWeb-Return.zip

    1,在父页面跳转打开子页面的URL,需要带上参数: urlParent=${currentUrlDecode} 2,子页面返回按钮的js代码统一使用: [removed].href = "${basePath}/" "${urlParent}"; 其中basePath为${pageContext.request....

    超市管理系统

    如果已经登录,访问登录页面,跳转到核心页面 (13)错误页配置: 1.编写错误页. 2. 在web.xml中配置: &lt;error-code&gt;404 &lt;location&gt;/404Error.jsp &lt;error-code&gt;500 &lt;location&gt;/500Error.jsp ...

    java宠物源码-petprojectSourceCode:日常java/javaweb小项目源代码仓库

    java 宠物 源码 petprojectSourceCode 日常java / javaweb 小项目源代码仓库 一、java登录状态过滤 1、需求描述:Javaweb的某些页面需要用户登录之后才能访问,那么必须要检测所有...如果检测未登录,跳转到登录页面。

    【JavaWeb】【学习】【过滤器】Filter 的简单应用小案例

    实现效果:在编辑框中输入暗号:如果暗号正确,则跳转到正确页面;如果暗号错误,则跳转到错误界面。 笔记:https://www.cnblogs.com/mllt/p/Javaweb_edu_FilterDemo1.html

    urlrewritefilter-4.0.3.jar

    这是urlrewritefilter-4.0.3.jar下载,通过java的Filter过滤器对URL进行重写,用户得到的全部都是经过处理后的URL静态地址,本质上通过伪地址进行页面跳转。 软件介绍 urlrewritefilter-4.0.3.jar是有时候项目中的...

    基于JavaWeb的期刊管理系统+课设报告.zip

    &lt;项目介绍&gt; 基于JavaWeb的期刊管理系统+程设报告.zip 该资源内项目源码是个人的毕设,代码都测试ok,都是...21. 页面跳转调试 22. 注销功能完成 23. 测试同步删除图片 24. 测试图片覆盖上传 25. 测试期刊详情修改页面

    支付宝第三方支付接口

    3 alipay_return.jsp为对支付宝返回通知处理,ie页面跳转通知,只要支付成功, 支付宝通过get方式跳转到这个地址,并且带有参数给这个页面。 4 java程序要注意的中文乱码问题,一定要配置上去中文filter, 注意:...

    Jsp中解决session过期跳转到登陆页面并跳出iframe框架的方法

    当session过期后可以用过滤器来设置重定向页面 代码如下:public class ActionFilter extends HttpServlet implements Filter {private FilterConfig filterConfig;public void init(FilterConfig config) {this....

    JavaWeb实现网上商城:JSP+Servlet+Dao

    MVC:Model View Controller ...Servlet过滤器(filter):能够在一个Request到达servlet之前预处理request,也可以在离开servlet时处理response Servlet监听器:给web中的各种操作绑定事件,并对事件进行处理

    基于Java实现的Web服务器与测试工具开发.zip

    3)对每次网页请求都进行过滤(filter)。 4)支持request、response的跳转请求。 5)可维持一个客户端与服务器间的会话(session)。 (2)客户端模拟器: 1)通过输入端口连接Web服务器,完成交互。 2)支持get方法的...

    代码生成器-可自定义模版-guns

    7. 防止XSS攻击,通过XssFilter类对所有的输入的非法字符串进行过滤以及替换。 8. 简单可用的代码生成体系,通过SimpleTemplateEngine可生成带有主页跳转和增删改查的通用控制器、html页面以及相关的js,还可以生成...

    源提示过滤器「Source Hint Filter」-crx插件

    该工具将找到这些选项卡,并将选项卡标题更改为“ *可能的添加”,以便您可以跳转到这些选项卡而不必查看其他选项卡。注意:此工具不会查看或更改您的任何数据。它只会查看是否有一个“添加”按钮,并带有用于创建新...

    基于JavaWeb + Mysql + Layui实现的宿舍管理系统源码+数据库+演示截图+项目说明.zip

    |--filter 过滤器 |--service 存放service处理具体业务逻辑 |--utils 存放工具类 |--resources 资源目录 |--test |--java 测试代码目录 |--resources 测试资源目录 |--webapp 具有web特性的目录...

Global site tag (gtag.js) - Google Analytics