精选文章 Filter过滤器:使用过滤器保护指定资源,只有登录用户才能访问。若访问内容时用户没有登录则跳转到登录页面。

Filter过滤器:使用过滤器保护指定资源,只有登录用户才能访问。若访问内容时用户没有登录则跳转到登录页面。

作者:行秋 时间: 2019-11-06 10:12:40
行秋 2019-11-06 10:12:40

问题描述:

WebRoot 中创建一个目录 Protect 对中的内容进行访问保护,只有登录用户才能访问。若访问Protect 目录中的内容时用户没有登录则跳转到登录页面(login.jsp)。

问题解决:

文件结构如下:

Filter过滤器:使用过滤器保护指定资源,只有登录用户才能访问。若访问内容时用户没有登录则跳转到登录页面。1

MyServlet.java代码如下(作用:判断用户是否输入用户名和密码,若输入则跳转到被保护页面(protect目录的MyHtml.html)

package cn;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

public class MyServlet extends HttpServlet {

	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		String uname=request.getParameter("uname");
		String upassword=request.getParameter("passwd");
		HttpSession session=request.getSession(true);
		boolean checkOK=false;
		if(uname!=null&&upassword != null){
			checkOK=true;
			session.setAttribute("userinfo",uname);
		}
		if(checkOK){
			response.sendRedirect("protect/MyHtml.html");
		}else{
			response.sendRedirect("login.jsp");
		}
	}
	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		doGet(request,response);
	}

}

tempFilter.java代码如下:(作用:只有登录用户才能访问protect目录下的MyHtml.html。若访问protect 目录中的内容时用户没有登录则跳转到登录页面(login.jsp)。

package cn;

import java.io.IOException;
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;

public class tempFilter implements Filter {
	public void destroy() {}
	public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain chain)
			throws IOException, ServletException {
		HttpServletRequest request = (HttpServletRequest)arg0;
		HttpServletResponse response = (HttpServletResponse)arg1;
		HttpSession session=request.getSession(true);
		Object tmp=session.getAttribute("userinfo");
		if(tmp==null){
			response.sendRedirect("../login.jsp");
		}else{
			chain.doFilter(request,response);
		}
	}
	public void init(FilterConfig arg0) throws ServletException {}
}

login.jsp代码如下:(作用:显示登陆页面)

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>




系统登录


系统登录

用户名:

口  令:

MyHtml.html代码如下:



  
    MyHtml.html
        
    
  
    只用登录用户才会看的到我. 

web.xml的配置 在标签之前添加如下内容

   
   
  	tempFilter 
  	cn.tempFilter 
   
 
  
    tempFilter
    /Protect/*
  
  
    MyServlet
    cn.MyServlet
  
  
    MyServlet
    /MyServlet
  

运行效果:当首次访问http://localhost:8080/Demo/Project/MyHtml.html,页面自己跳转到系统登陆页面

Filter过滤器:使用过滤器保护指定资源,只有登录用户才能访问。若访问内容时用户没有登录则跳转到登录页面。2

输入用户名和密码,点击登录后,显示MyHtml.html的页面

Filter过滤器:使用过滤器保护指定资源,只有登录用户才能访问。若访问内容时用户没有登录则跳转到登录页面。3

勿删,copyright占位
分享文章到微博
分享文章到朋友圈
CSDN

CSDN

中国开发者社区CSDN (Chinese Software Developer Network) 创立于1999年,致力为中国开发者提供知识传播、在线学习、职业发展等全生命周期服务。