快速掌握servlet技术-d1_1

学习web开发必须要学习http协议的 叫做超文本传输协议

先来看请求:

GET /APP HTTP/1.1 ---------------请求行

下面是消息头

Accept: text/html,image/* [告诉浏览器,客户端可以接受文本,网页等内容]

Accept-Charset: IOS-8859-1 [接受的字符编码格式]

Accept-Encoding:gzip,compress[可以接受gzip等压缩后的数据]

Accept-Lanaguage:en-us [浏览器支持的语言]

Host:www.baidu.com [要找的主机]

If-Modified-Since:Tue,11….[请求的文件本地存在,告诉服务器存在的时间,如果更新了就要]

Referer:www…. [告诉服务器我来自哪里]常用语 防止盗链

User-Agent:Mozilla/4.0 [使用的浏览器内核]

Cookie [cookie]

Connection:close/Keep-Alive[保持连接,发送完数据后补关闭连接]

Date:Tue.. [发送请求的时间]

Connection:Keep-Alive 代表保持长连接

空行

内容

下面代码分别获取客户端发送过来请求内容:

一个辅助类:

package com.codeguy.d1.protocol;

import javax.servlet.http.HttpServletRequest;

public class HttpHeader {
	public static String getHeader(String header,HttpServletRequest req){
		return req.getHeader(header); 
	}
} 

获取请求消息头内容:

package com.codeguy.d1.protocol;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class Protocol extends HttpServlet {

	private static final long serialVersionUID = 1L;

	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		response.setContentType("text/html;charset=utf-8");
		PrintWriter out = response.getWriter();
		out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
		out.println("<HTML>");
		out.println("  <HEAD><TITLE>A Servlet</TITLE></HEAD>");
		out.println("  <BODY>");
		//这里弄个表单:
		String headers[] = {"Accept","Accept-Charset","Accept-Encoding","Accept-Lanaguage","Host","If-Modified-Since","Referer","User-Agent","Cookie","Connection","Date"};
		String headerNames[] = {"可接受内容: ","可接受字符集: ","可接受的压缩格式: ",
		"浏览器支持的语言: ","请求的主机名: ","本地存放文件的时间: ","客户端地址: ","浏览器内核: ","Cookie: ","链接方式: ","发送时间: "		
		};
		for(int i=0; i<headers.length; i++){
			out.println(headerNames[i]+HttpHeader.getHeader(headers[i], request));
			out.println("<br/>");
		}
		out.println("  </BODY>");
		out.println("</HTML>");
		out.flush();
		out.close();
	}

	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		this.doGet(request, response);
	}

}


防止盗链测试:

 请求页面:

package com.codeguy.d1.protocol;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class Link extends HttpServlet {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		response.setContentType("text/html;charset=utf-8");
		PrintWriter out = response.getWriter();
		out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
		out.println("<HTML>");
		out.println("  <HEAD><TITLE>A Servlet</TITLE></HEAD>");
		out.println("  <BODY>");
		out.println("<form method='post' action='/ServletStudy/PreventLink'>");
		out.println("<input type='submit' value='link'/>");
		out.println("</form>");
		out.println("  </BODY>");
		out.println("</HTML>");
		out.flush();
		out.close();
	}

	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		this.doGet(request, response);
	}

}
判断是否盗链:

package com.codeguy.d1.protocol;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class PreventLink extends HttpServlet {

	private static final long serialVersionUID = 1L;

	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		response.setContentType("text/html;charset=utf-8");
		PrintWriter out = response.getWriter();
		out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
		out.println("<HTML>");
		out.println("  <HEAD><TITLE>A Servlet</TITLE></HEAD>");
		out.println("  <BODY>");
		String checkAddress = "localhost:8080/ServletStudy";
		String referer = request.getHeader("Referer");
		//这里判断条件不能写反啦 如果反啦就会出现使用NULL去调用indexof 发生Exception
		if(referer != null && "".equals(referer) && referer.indexOf(checkAddress) != -1){
			out.println("正确链接");
		}else{
			out.println(" 盗链");
		}
		out.println("  </BODY>");
		out.println("</HTML>");
		out.flush();
		out.close();
	}

	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		this.doGet(request, response);
	}

}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值