Servlet学习(五)使用Servlet过滤器实现登录权限校验-附源码下载

使用过滤器来校验用户的登录状态,
在有些情况下,网站的部分网页是需要登录的用户才能访问的,那么该如何实现呢?
其实就是使用过滤器,在逻辑层加上一个过滤器来实现登录状态的校验,然后再将信息跳转到指定的界面或者Servlet。

我们先来分析下具体的使用流程:
假如用户处于登录状态则用户可以访问指定的网页,没有登录的用户相要访问这个网页则直接跳转到登录界面。
流程图如下:

我们先来编写hello.jsp文件,即用户想要访问的目标文件,
只需让其显示简单的信息即可
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<%
    out.println("Hello World");
%>
</body>
</html>

我们首先现将所有的界面程序编写完毕,
下面我们来编写login.jsp文件
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>登陆页面</title>
</head>
<style type="text/css">
    body{
        color: #000;
        font-size: 14px;
        margin: 20px auto;
    }
</style>
<script type="text/javascript">
    function check(form) {
        //验证用户名是否为空
        if (document.forms.loginform.uname.value==""){
            alert("请输入用户名");
            //将焦点置于用户名输入框
            document.forms.loginform.uname.focus();
            return false;
        }
        //验证密码是否为空
        if (document.forms.loginform.upwd.value==""){
            alert("请输入用户名");
            //将焦点置于用户名输入框
            document.forms.loginform.upwd.focus();
            return false;
        }
    }
</script>
<body>
    <form action="<%=request.getContextPath()%>/LoginServlet17" method="post" name="loginform">
        <%if (request.getAttribute("return_uri")!=null){%>
        <input type="hidden" name="return_uri" value="<%=request.getAttribute("return_uri")%>"/>
        <%}%>
        <table border="1" cellspacing="0" cellpadding="5" bordercolor
  • 3
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
当涉及到用户权限时,可以使用过滤器来进行验证和控制。下面是使用Java编写的一个过滤器校验用户权限的示例代码: ```java import javax.servlet.*; import javax.servlet.http.HttpServletRequest; import java.io.IOException; public class AuthenticationFilter implements Filter { private ServletContext context; public void init(FilterConfig config) throws ServletException { this.context = config.getServletContext(); this.context.log("AuthenticationFilter initialized"); } public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { HttpServletRequest httpRequest = (HttpServletRequest) request; // 获取用户的角色信息,这里可以从session或cookie中获取 String userRole = (String) httpRequest.getSession().getAttribute("userRole"); // 如果用户角色是管理员,则放行请求 if ("admin".equals(userRole)) { chain.doFilter(request, response); } // 如果用户角色是普通用户,则重定向到没有权限的页面 else if ("user".equals(userRole)) { httpRequest.getRequestDispatcher("/no-permission.jsp").forward(request, response); } // 如果用户没有登录,则重定向到登录页面 else { httpRequest.getRequestDispatcher("/login.jsp").forward(request, response); } } public void destroy() { // do nothing } } ``` 在上面的代码中,我们实现了一个名为AuthenticationFilter过滤器,它通过获取用户的角色信息来验证用户是否具有访问特定资源的权限。如果用户没有登录,则重定向到登录页面;如果用户角色是普通用户,则重定向到没有权限的页面;如果用户角色是管理员,则允许请求通过。通过在web.xml文件中配置该过滤器,可以将其应用于Web应用程序的所有受保护的资源。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值