javaweb中添加过滤器,限制访问某些页面

问题:

在javaweb开发中,经常需要限制用户访问的权限,当用户未登录时,不能直接访问页面。

实现功能可以使用以下两种方法:

1.将需要限制访问的文件放入web-inf目录下,通过action来跳转,来达到未登陆无法访问的目的。

但是注意:资源文件不要放入,否则资源文件将无法被访问

         因为资源文件不能通过action来访问,例如 :图片,文本等

2.可以通过过滤器来现在访问:

添加过滤器类:

LogonFilter.java

package cn.itcast.elec.filter;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

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 cn.itcast.elec.domain.ElecUser;

public class LogonFilter implements Filter {

	//需要定义系统页面访问中可放行的连接
	private List<String> list = new ArrayList<String>();
	public void init(FilterConfig arg0) throws ServletException {
		list.add("/index.jsp");
		list.add("/image.jsp");
		list.add("/system/elecMenuAction_home.do");     //定义不被拦截的页面
	}

	public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse,
			FilterChain chain) throws IOException, ServletException {
		HttpServletRequest request = (HttpServletRequest) servletRequest;
		HttpServletResponse response = (HttpServletResponse) servletResponse;
		//1、获取页面中的访问的路径连接
		String path = request.getServletPath();
		if(list!=null && list.contains(path)){
			//如果页面中获取的访问连接于定义的可放行的连接一致,则放行
			chain.doFilter(request, response);
			return;
		}
		//2、从session(globle_user)对象中获取当前登录的用户
		ElecUser elecUser = (ElecUser) request.getSession().getAttribute("globle_user");
		if(elecUser!=null){
			//如果从session中获取的用户对象不为空,则放行
			chain.doFilter(request, response);
			return;
		}
		//如果不满足条件1和2,则不能放行,回到系统的登录页面
		response.sendRedirect(request.getContextPath()+"/");
	}

	public void destroy() {
		

	}
}
然后在web.xml文件中配置:

  <!-- 2011-12-30,系统中添加过滤器 -->
  <filter>
  	<filter-name>filter</filter-name>
  	<filter-class>cn.itcast.elec.filter.LogonFilter</filter-class>      //过滤器类的路径
  </filter>
  <filter-mapping>
  	<filter-name>filter</filter-name>
  	<url-pattern>*.do</url-pattern>                   //限制的文件类型
  </filter-mapping>
  <filter-mapping>
  	<filter-name>filter</filter-name>
  	<url-pattern>*.jsp</url-pattern>
  </filter-mapping>

例如:如果现在根目录下的images目录的文件不被访问使用以下代码

 <filter-mapping>
  	<filter-name>filter</filter-name>
  	<url-pattern>/images/*</url-pattern>
  </filter-mapping>


  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值