Jsp的filter拦截器实现用户权限分级

看了一下上学期学的项目,发现用到了jsp的filter来实现不同用户登录网站访问模块的分类,现在把代码分享出来跟大家共享一下···

package com.wws.filter;

import java.io.IOException;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

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;

import com.wws.model.ConnDB;
import com.wws.model.UsersBean;
import com.wws.model.UsersBeanBO;

public class SecurityFilter implements Filter
{
	private PreparedStatement ps = null;
	private ResultSet rs = null;
	private Connection ct = null;
	@Override
	public void destroy() {
		// TODO Auto-generated method stub

	}

	@Override
	public void doFilter(ServletRequest req, ServletResponse rep,
			FilterChain chain) throws IOException, ServletException {
		// TODO Auto-generated method stub
		HttpServletRequest request = (HttpServletRequest) req;
		HttpServletResponse response = (HttpServletResponse) rep;
		HttpSession session = request.getSession();

		if(session.getAttribute("userInfo")!=null)
		{
			UsersBean ub=(UsersBean)session.getAttribute("userInfo");
			int role_id=ub.getRole_id();
			String sql="select role_name from Role where role_id="+role_id+"";
			try{
				ct=new ConnDB().getConn();
				ps=ct.prepareStatement(sql);
				rs=ps.executeQuery();
				if(rs.next()){
					//取出数据库的密码
					String role_name=rs.getString(1).trim();
					if("admin".equals(role_name)){
						response.sendRedirect("person1.jsp");
					}else if("educator".equals(role_name))
					{
						response.sendRedirect("ShowEC");
					}else if("student".equals(role_name))
					{
						response.sendRedirect("person3.jsp");
						//int user_id=ub.getUser_id();
						//request.setAttribute("user_id", user_id);
						//request.getRequestDispatcher("ShowSC").forward(request, response);
					}else
					{
						//chain.doFilter(request,response);Filter依旧放行到action地址,若不处理只是打印日志的话
						response.sendRedirect("ShowCourse");
					}

				}else
				{
					//chain参数用于控制是否放行用户请求
					chain.doFilter(req, rep);
				}
			}
			catch(Exception e){
				e.printStackTrace();
			}finally{
				this.close();
			}
		}else
		{
			response.sendRedirect("");
		}
	}

	@Override
	public void init(FilterConfig arg0) throws ServletException {
		// TODO Auto-generated method stub

	}

	public void close() { // 关闭各种打开的资源
		try {
			if (rs != null) {
				rs.close();
				rs = null;
			}
			if (ps != null) {
				ps.close();
				ps = null;
			}
			if (ct != null) {
				ct.close();
				ct = null;
			}
		} catch (Exception e) {
			e.printStackTrace();// 打印异常,以便修改
		}
	}

}

在web.xml里面的配置:

 <filter>
  <!-- Filter的名字,相当于指定@WebFilter的filterName属性 -->
  	<filter-name>securityFilter</filter-name>
  	<filter-class>com.wws.filter.SecurityFilter</filter-class>
  </filter>
  <filter-mapping>
  	<filter-name>securityFilter</filter-name>
  	<!-- Filter负责拦截的URL,相当于指定@WebFilter的urlPatterns属性,可以用/*拦截所有请求 -->
  	<url-pattern>/securityFilter</url-pattern>
  </filter-mapping>
时间: 2024-10-08 02:50:21

Jsp的filter拦截器实现用户权限分级的相关文章

springmvc拦截器实现用户登录权限验证

实现用户登录权限验证 先看一下我的项目的目录,我是在intellij idea 上开发的 1.先创建一个User类 1 package cn.lzc.po; 2 3 public class User { 4 private Integer id;//id 5 private String username;//用户名 6 private String password;//密码 7 8 public Integer getId() { 9 return id; 10 } 11 12 publi

Struts开发一个权限验证拦截器来判断用户是否登录

开发一个权限验证拦截器来判断用户是否登录 当用户请求受保护资源时,先检查用户是否登录 如果没有登录,则向用户显示登录页面 如果已经登录,则继续操作 实现步骤 开发权限验证拦截器 在配置文件中定义拦截器并引用它 开发权限验证拦截器 public class AuthInterceptor extends AbstractInterceptor { public String intercept(ActionInvocation invocation) throws Exception { //获取

Struts2自己定义拦截器实例—登陆权限验证

版本号:struts2.1.6 此实例实现功能:用户须要指定username登陆,登陆成功进入对应页面运行操作,否则返回到登陆页面进行登陆,当直接訪问操作页面(登陆后才干訪问的页面)时则不同意,须返回登陆页面. 代码例如以下: 一.页面 login.jsp <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <!DOCTYPE HTML PUB

自定义拦截器判断用户是否有权限访问

1.关于权限系统,对于用户是否有权限对系统进行访问,设置自定义拦截器,来拦截用户的请求 1 package org.slsale.interceptor; 2 3 import javax.annotation.Resource; 4 import javax.servlet.http.HttpServletRequest; 5 import javax.servlet.http.HttpServletResponse; 6 import javax.servlet.http.HttpSessi

springMVC使用拦截器检查用户登录

参考文章 编写拦截器类 package cultivate_web.interceptor; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import org.springframework.web.servlet.HandlerInterceptor; import org.s

springmvc 拦截器与用户验证token

1:springmvc 配置文件中添加拦截器,当然首先要有拦截后交给哪个类处理也要写上 <mvc:interceptors> <mvc:interceptor> <mvc:mapping path="/**"/> <bean class="com.kad.authorization.AuthorizationInterceptor" /> </mvc:interceptor> </mvc:interc

spring filter拦截器

实现的功能:判断用户是否已登录,未登录用户禁止访问任何页面或action,自动跳转到登录页面.比较好的做法是不管什么人都不能直接访问jsp页面,要访问就通过action,这样就变成了一个实实在在的权限控制了.那么就有3种方法可以解决楼主的问题1,直接使用filter2,直接使用webwork的interceptor,3,将action交给spring管理,使用spring的Aop机制 让用户可以直接访问jsp本来就违反了mvc的本意了1 直接使用filterweb.xml配置 <filter>

【DRP】Filter拦截器-应用

[用法] 1.建立配置文件: 1 package com.bjpowernode.drp.util.filter; 2 3 import java.io.IOException; 4 5 import javax.servlet.Filter; 6 import javax.servlet.FilterChain; 7 import javax.servlet.FilterConfig; 8 import javax.servlet.ServletException; 9 import java

Filter拦截器

Filter执行顺序: GZipFilter应用: web.xml配置 <filter> <filter-name>GzipFilter</filter-name> <filter-class>com.citi.icg.portal.compositepageservice.server.filter.GzipFilter</filter-class> <init-param> <param-name>mimeTypes&