servlet过滤器(页面自动刷新,登录拦截,反盗链接)

 

 Servlet 过滤器的实例,将输出客户端的 IP 地址和当前的日期时间

源码:

过滤器Filter:

package cn.test1.servlet;

import java.io.IOException;
import java.util.Date;

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.annotation.WebFilter;

/**
 * 过滤器,在web.xml那里定义了只过滤Shuaxin这个即(http://localhost:8080/Atestproject/Shuaxin)
 * 控制台会自动刷新
 */

public class LogFilter implements Filter {

   
    public LogFilter() {
        
    }


	public void init(FilterConfig config) throws ServletException {
		 // 获取初始化参数
	      String testParam = config.getInitParameter("test-param"); 
	      // 输出初始化参数
	      System.out.println("Test Param: " + testParam); 
	}
    
	public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {

	      // 获取客户机的 IP 地址   
	      String ipAddress = request.getRemoteAddr();

	      // 记录 IP 地址和当前时间戳
	      System.out.println("IP "+ ipAddress + ", Time "
	                                       + new Date().toString());

	      // 把请求传回过滤链
	      chain.doFilter(request,response);
	}


	
	public void destroy() {
		// TODO Auto-generated method stub
	}

}

被过滤的servlet

package cn.test1.servlet;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.Calendar;
import java.util.GregorianCalendar;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
 * 每隔秒刷新页面,自动显示时间(页面自动被刷新)
 * @author Administrator
 *
 */

public class Shuaxin extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public Shuaxin() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		response.setIntHeader("Refresh", 1);
		response.setContentType("text/html;charset=utf-8");
		
		//得到当前时间
		Calendar calendar = new GregorianCalendar();
		String am_pm;
		int hour = calendar.get(Calendar.HOUR);
		int minute=calendar.get(Calendar.MINUTE);
		int second=calendar.get(Calendar.SECOND);
		
		//判断是早还是晚
		if(calendar.get(Calendar.AM_PM)==0)
			am_pm="AM";
		else
			am_pm="PM";
		
		String CT =hour+":"+minute+":"+second+" "+am_pm;
		
		PrintWriter out = response.getWriter();
		String title="自动刷新Header设置";
		//头文件
		String docType=
				"<!doctype html public \"-//w3c//dtd html 4.0 " +       "transitional//en\">\n";
	
		out.println(docType
				+
				  "<html>\n" +
			        "<head><title>" + title + "</title></head>\n"+
			        "<body bgcolor=\"#f0f0f0\">\n" +
			        "<h1 align=\"center\">" + title + "</h1>\n" +
			        "<p>当前时间是:" + CT + "</p>\n"
				
				);
	
	
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
		doGet(request, response);
	}

}

web.xml配置

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
  <display-name>Atestproject</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
  
<filter>
  <filter-name>LogFilter</filter-name>
  <filter-class>cn.test1.servlet.LogFilter</filter-class>
  <init-param>
    <param-name>Site</param-name>
    <param-value>天才英俊</param-value>
  </init-param>
</filter>
<filter-mapping>
  <filter-name>LogFilter</filter-name>
  <url-pattern>/Shuaxin</url-pattern>
</filter-mapping>
  
  
  <servlet>
    <servlet-name>Shuaxin</servlet-name>
    <servlet-class>cn.test1.servlet.Shuaxin</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>Shuaxin</servlet-name>
    <url-pattern>/Shuaxin</url-pattern>
  </servlet-mapping>
</web-app>

项目结构:

访问:

http://localhost:8080/Atestproject/Shuaxin

页面自动刷新页面显示:

控制台结果:

 

过滤器-将请求和相应的编码模式都设置为utf-8

 

 

过滤器:登录拦截

先编辑登录控制层的servlet

编辑登录拦截过滤器(先判断session的值在不在)

 

修改success.jsp  (session 久一点

以下过程请不要跟着做,比较绕.

防盗链接:在LoginFiter添加doFilter()方法

判断第三方来源网站

判断发起人是否是本网站发起人

直接输入域名,输出为空

如果从其他页面访问这里,则会输出其他页面的内容

(清除缓存先,不然会缓存了的session会干扰)

写个链接连接到页面(前面只拦截了success.jsp页面所以不太好)

new一个jsp文件,来作为中转站

改了拦截在字符拦截上(因为字符拦截是拦截所有的)

成功被标识了来访的页面.

成功

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一身正气z

打赏随心就好

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值