1.在数据库中建立三个表 ,分别为 用户信息表,用户权限关联表,权限表
--建立用户表
create table t_user(id int identity primary key ,username varchar(30) not null, password varchar(30) not null);
insert into t_user (username,password) values ('admin','123456');
insert into t_user (username,password) values ('guest','123456');
insert into t_user (username,password) values ('lily','123456');
--用户权限表
create table t_permission (id int identity primary key ,linkurl varchar(120),describe varchar(100));
insert into t_permission (linkurl,describe) values ('main.jsp','主页面');
insert into t_permission (linkurl,describe) values ('message.jsp','信息面');
insert into t_permission (linkurl,describe) values ('fuck.jsp','操蛋页面');
insert into t_permission (linkurl,describe) values ('love.jsp','爱情页面');
--用户和权限关联表
create table user_permission (uid int not null,pid int not null);
alter table user_permission add constraint up_uid_user_id foreign key (uid) references t_user(id) on delete cascade on update cascade;
alter table user_permission add constraint up_pid_permission_id foreign key (pid) references t_permission(id) on delete cascade on update cascade;
insert into user_permission (uid,pid) values (1,2);
insert into user_permission (uid,pid) values (1,3);
我们在这里模拟一个用户 ,并给予指定所操作的应用 以admin 用户为例 给指定了 可以访问message.jsp 和fuck.jsp
其他页面程序不再详细的说明,都包括在附加中
下面主要关键的是过滤器
public class FilterPermission extends HttpServlet implements Filter {
/**
*
*/
private static final long serialVersionUID = 1L;
// 字符编码(初始化参数)
protected String encoding = null;
// FilterConfig对象
protected FilterConfig filterConfig = null;
// 初始化方法
public void destroy() {
// TODO Auto-generated method stub
this.encoding = null;
this.filterConfig = null;
}
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest servletRequest= (HttpServletRequest)request;
HttpServletResponse servletResponse=(HttpServletResponse)response;
// TODO Auto-generated method stub
// 判断字符编码是否有效
if (encoding != null) {
// 设置request字符编码
servletRequest.setCharacterEncoding(encoding);
// 设置response字符编码
servletResponse.setContentType("text/html; charset="+encoding);
}
// 传递给下一过滤器
try {
chain.doFilter(request, response);
} catch (ServletException sx) {
filterConfig.getServletContext().log(sx.getMessage());
} catch (IOException iox) {
filterConfig.getServletContext().log(iox.getMessage());
}
//得到上下文访问路径
String accessPath = servletRequest.getContextPath();
//得到会话
HttpSession session = servletRequest.getSession();
//从会话中得到user对象
User user=(User)session.getAttribute("formvalue");
// SystemDao dao = new SystemDao();
// String linkurl=dao.getPermission(user.getId());
String
//得到请求的URI路径,并以截取
url=servletRequest.getRequestURI().substring(servletRequest.getRequestURI().lastIndexOf("/")+1, servletRequest.getRequestURI().length());
//指定无需经过权限过滤的页面
String exclude= "adminlogin,login.jsp,error.jsp,welcome.jsp";
try {
if(exclude.indexOf(url)==-1){
if(user==null ){
servletResponse.sendRedirect(accessPath+"/index.jsp");
}else{
SystemDao dao = new SystemDao();
//如果user不为空 从对象中得到user 的ID 从数据中查询出所拥有的权限
String linkurl=dao.getPermission(user.getId());
//请求的操作,判断 权限中是否拥有 没有拥有转向于错误提示页面
if(linkurl.indexOf(url)==-1){
servletResponse.sendRedirect(accessPath+"/error.jsp");
}}
}
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
}
public void init(FilterConfig filterConfig) throws ServletException {
// TODO Auto-generated method stub
// 对filterConfig赋值
this.filterConfig = filterConfig;
// 对初始化参数赋值
this.encoding = filterConfig.getInitParameter("encode");
}
}
web.xml 过滤器的配置
<filter>
<filter-name>FilterPermission</filter-name>
<filter-class>com.smile.util.FilterPermission</filter-class>
<init-param>
<param-name>encode</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>FilterPermission</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
</filter-mapping>
分享到:
相关推荐
接下来,我们将按照以下步骤来创建一个简单的用户权限过滤器: 1. **创建过滤器类**: 在`src`目录下创建一个新的Java类,例如`UserAuthorizationFilter`,实现`Filter`接口。你需要重写`doFilter()`方法,在这个...
本篇将深入讲解`JSP`中的过滤器,并通过实例来帮助理解其工作原理和应用场景。 首先,我们需要了解`Filter`的基本概念。过滤器是一个实现了`javax.servlet.Filter`接口的类,它可以拦截HTTP请求并进行预处理,或者...
使用servlet和jsp技术时,我们可以通过过滤器(Filter)来实现这样的安全防护机制。过滤器是一种服务器端的组件,它能够对请求和响应进行拦截,执行一些预处理或者后处理操作。它常用于进行登录验证、权限检查、字符...
通过使用过滤器(Filter),可以在请求到达目标资源(如Servlet或JSP页面)之前进行处理,例如实现登录状态检查、权限验证等功能。下面我们就通过分析一个具体的示例代码来详细了解如何使用JSP Filter过滤器来判断...
标题中的“带过滤器的登录系统jsp+myeclipse+mysql”表明这是一个使用Java服务器页面(JSP)、MyEclipse集成开发环境以及MySQL数据库构建的登录系统,其中整合了过滤器(Filter)技术。这样的系统通常用于实现用户...
本篇将深入探讨JSP过滤器的使用,并通过一个实际项目案例来展示其应用。 ### 1. JSP过滤器基础 JSP过滤器是基于Servlet规范的,遵循`javax.servlet.Filter`接口。它在用户请求到达目标资源之前被调用,可以在请求...
在Java服务器页面(JSP)开发中,过滤器(Filter)是Servlet规范的一部分,它允许开发者在请求被处理之前或之后执行某些操作,比如字符编码转换、权限验证、日志记录等。本话题将深入探讨如何在`web.xml`配置文件中...
**正文** 在Web开发中,`JSP (JavaServer Pages)` 是一种动态网页技术,它允许开发者将HTML、XML或者其他标记语言与Java代码混合在一起...理解并掌握如何使用过滤器处理编码问题,对于开发健壮的Web应用程序至关重要。
本教程将详细讲解如何使用Java Web中的过滤器(Filter)来实现这样的访问控制。过滤器是Servlet API的一部分,它允许我们在请求到达目标资源(如Servlet、JSP页面)之前或之后对请求和响应进行拦截处理。 首先,...
在这个例子中,我们的权限过滤器会在这个链中。 3. **身份验证**:过滤器首先检查请求的上下文(例如,通过session获取用户信息)以确定用户是否已登录。如果用户未登录,可以重定向到登录页面,或者返回错误信息。 ...
例如,以下配置会将名为`MyFilter`的过滤器应用到所有以`.jsp`结尾的URL上: ```xml <filter-name>MyFilter <filter-class>com.example.MyFilter</filter-class> <filter-name>MyFilter *.jsp ``` 四、...
本篇文章将详细介绍如何通过Web应用中的过滤器来实现对用户访问权限的控制。 #### 一、过滤器的概念与作用 **过滤器(Filter)** 是Servlet容器提供的一个接口,它可以在请求达到目标资源(如Servlet或JSP页面)...
在实际应用中,权限过滤器可以与其他过滤器配合使用,例如CSRF防护过滤器、GZIP压缩过滤器等,共同构建一个强大的安全防线。同时,为了适应不同的需求,权限过滤器的实现可能会有所不同,比如使用Spring Security...
通过过滤器判断用户权限是实现应用安全访问控制的一种常见手段,尤其在Web应用程序中非常普遍。下面我们将基于提供的文件信息,深入探讨如何通过过滤器来判断用户的权限。 ### 一、UserPermissionFilter类详解 ###...
**五、过滤器应用场景** 1. **权限控制**:检查用户是否已登录,未登录则重定向到登录页面。 2. **字符编码转换**:统一处理请求和响应的编码格式,避免乱码问题。 3. **性能监控**:记录请求耗时,分析系统性能瓶颈...
过滤器在请求到达目标资源(如JSP页面或Servlet)之前和之后执行,可以用来进行权限验证、数据转换、日志记录等多种操作。下面将详细介绍如何在JSP中编写和使用过滤器。 首先,我们需要创建一个实现了`javax....
在标题"Servlet过滤器的简单使用源码+文档"中,我们可以理解为这个压缩包包含了一个关于Servlet过滤器的基础应用示例,以及相关的源代码和文档资料。描述中提到的"实现一个登陆界面",表明了过滤器可能被用作验证...
### JSP Filter 过滤器功能与简单用法示例 ...过滤器是Web开发中非常有用的工具,能够帮助开发者实现诸如权限控制、日志记录等功能,提高应用程序的安全性和可维护性。希望本文能为您的JSP程序设计带来帮助。
3. 指令过滤器(Filter):在Servlet容器中,可以使用Filter接口创建自定义过滤器,对HTTP请求进行拦截,根据用户身份和请求资源来决定是否放行。 4. 会话管理:利用HttpSession对象存储用户的登录状态和权限信息,...