servlet编写Filter过滤器,防止未登录访问,不过滤登陆界面(使用IDEA编写)

来源:互联网 发布:画梁图软件 编辑:程序博客网 时间:2024/05/21 05:55

实现“防止未登录访问”的方法有很多,下面简单介绍一二。

第一种方法:可以在每个需要进行权限验证的界面包含一个验证文件,check.jsp。

check.jsp代码如下:

<%@ page contentType="text/html;charset=UTF-8" language="java" %><html><head>    <title>权限验证界面</title></head><body><center>    <%        String LoginPast=(String)session.getAttribute("username");        if(LoginPast.equals(null))    %>    <script type="text/javascript">        alert("请先登录再进行操作");    </script>    <%        response.setHeader("Refresh", "1;URL=Login.jsp");//1代表1秒后页面将跳转到Login.jsp界面(就是登陆界面)    %></center></body></html>
第二种方法:当然是使用Struts2的核心Filter过滤器,判断session里面是否含有用户名,如果没有,
将页面跳转到登陆界面。话不多说,直接上代码。
Login.jsp代码如下:
<%@ page contentType="text/html;charset=UTF-8" language="java" %><html><head>  <title>servlet实现简单登陆功能</title>
<script type="text/javascript">    function check_legal(form){        if(form.username.value==""){            alert("用户名不能为空!");            return false;        }        if(form.password.value==""){            alert("密码不能为空!");            return false;        }    }  </script></head><body><div class="wrapper">  <div class="container">    <h1>登陆界面</h1>      <form action="Login" method="post" onsubmit="return check_legal(this)">        <input type="text" name="username" placeholder="用户名">        <input type="password" name="password" placeholder="密码">        <button type="submit">登陆</button>      </form>  </div></div></body></html>
web.xml配置文件如下:
<?xml version="1.0" encoding="UTF-8"?><web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"         version="3.1">    <servlet>        <servlet-name>Login</servlet-name>        <servlet-class>com.servlet.LoginServlet</servlet-class>    </servlet>    <servlet-mapping>        <servlet-name>Login</servlet-name>        <url-pattern>/</url-pattern>    </servlet-mapping>   <filter>        <filter-name>LoginFilter</filter-name>        <filter-class>com.filter.LoginFilter</filter-class>    </filter>    <filter-mapping>        <filter-name>LoginFilter</filter-name>        <url-pattern>/main/*</url-pattern> <!--在web下新建一个main文件夹,里面用来存放需要进行
权限验证的界面,登陆界面或者注册界面不要放在此文件夹下,这样就能实现不对登陆界面和注册界面进行验
证-->    </filter-mapping>    <welcome-file-list>        <welcome-file>/index.jsp</welcome-file>    </welcome-file-list></web-app>

LoginFilter.java 代码如下:
package com.filter;import java.io.IOException;import java.io.PrintWriter;import javax.servlet.FilterConfig;import javax.servlet.ServletException;import javax.servlet.Filter;import javax.servlet.FilterChain;import javax.servlet.ServletRequest;import javax.servlet.ServletResponse;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpSession;public class LoginFilter implements Filter{    public void init(FilterConfig arg0) throws ServletException{}    public void destroy(){}    public void doFilter(ServletRequest request,ServletResponse response, FilterChain chain)
throws IOException,ServletException{        HttpServletRequest httprequest = (HttpServletRequest)request;        HttpServletResponse httpresponse = (HttpServletResponse)response;        HttpSession session = httprequest.getSession();        if(session.getAttribute("name")!=null){    //判断session中是否含有用户名,如果有继续执行            chain.doFilter(request,response);        }        else{           httpresponse.sendRedirect(httprequest.getContextPath()+"/login.jsp");        }    }}


阅读全文
1 0