⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 snoopservlet.java

📁 java网络高级编程的配套源码,java网络高级编程为清华出版社出版.
💻 JAVA
字号:
/*源代码清单5-7*/

import java.io.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class SnoopServlet extends HttpServlet
{
  public void doPost(HttpServletRequest req, HttpServletResponse res)
		throws ServletException,IOException
  {
    //发送给服务器的信息不能超过8K
	 if(req.getContentLength()>8*1024)
	 {
       res.setContentType("text/html");
	   ServletOutputStream out = res.getOutputStream();
	   out.println("<html><head><title>Too much data transformed!<title></head>");
	   out.println("<body><font color='red'>Error--Content leagth can not be bigger than 8K! </font></body>");
       out.println("</html>");
	 }else{
       doGet(req,res);
	 }
  }

  public void doGet(HttpServletRequest req, HttpServletResponse res)
		throws ServletException,IOException
  {
    res.setContentType("text/html");
	ServletOutputStream out = res.getOutputStream();
	out.println("<html>");
    out.println("<head><title>Snoop Servlet</title></head>");
	out.println("<body>");
    out.println("<pre>");
    out.println(HttpUtils.getRequestURL(req).toString());
	out.println("</pre>");
    //下面的程序显示初始化参数
	Enumeration enum=(new ServletConfig()).getInitParameterNames()();
	if (enum!=null)
	{
	 boolean first = true;
	 //函数hasMoreElements判断组是否为空
	 while(enum.hasMoreElements())
	 {
       if(first)
	   {
         out.println("Init Parameters");
		 first=false;
	   }
	   String param=(String)enum.nextElement();
	   out.println(""+param+":"+getInitParameter(param));
	 }
	}
	//下面的程序显示对象HttpServletRequest中所包含的信息
	out.println("<h2>Request Information:</h2>");
    out.println("<pre>");
	out.println("<h3>");
	//方法getMethod返回服务器处理信息所用的方法
	print(out,"Request method",req.getMethod());
	//方法getRequestURI返回请求的URI
	print(out,"Request URI",req.getRequestURI());
	//方法getProtocol返回客户方与服务器方所用的协议
	print(out,"Request protocol",req.getProtocol());
	//方法getServletPath返回服务器处理请求的Servlet路径
	print(out,"Servlet path",req.getServletPath());
	//方法getPathInfo返回附加的路径信息,它时可选的
	print(out,"Path Info",req.getPathInfo());
	//方法getPathTranslated返回Servlet的决定路径
	print(out,"Path translated",req.getPathTranslated());
	//方法getQuerystring返回请求的查询字符串
	print(out,"Query string",req.getQueryString());
	//方法getContentLength返回请求的查询字符串的长度
	print(out,"Content length",req.getContentLength());
    //方法getContentType返回客户送到服务器的数据类型
	print(out,"Content type",req.getContentType());
	//方法getServerName返回服务器的名字
	print(out,"Server name",req.getServerName());
	//方法getServerPort返回服务器的端口
	print(out,"Server port",req.getServerPort());
	//方法getRemoteUser返回提出请求的客户方的名字
	print(out,"Remote user",req.getRemoteUser());
	//方法getRemoteAddress返回提出请求的客户的地址
	print(out,"Remote address",req.getRemoteAddr());
	//方法getAuthType返回鉴定类型
	print(out,"Authorization scheme",req.getAuthType());
	out.println("</pre>");
	//下面的程序显示请求的头部信息
	Enumeration e = req.getHeaderNames();

    if(e.hasMoreElements())
	{
      out.println("<h1>Request headers:</h1>");
	  out.println("<pre>");
	  while(e.hasMoreElements())
	  {
         String name = (String)e.nextElement();
		 out.println("" + name + ":" + req.getHeader(name));
	  }
	  out.println("</pre>");
	  out.println("<h3>");
	}
	//下面的程序显示Servlet的参数
	e=req.getParameterNames();
	if(e.hasMoreElements())
	{
       out.println("<h2>Servlet parameters:</h2>");
	   out.println("<h3>");
	   out.println("<pre>");
	   while(e.hasMoreElements())
	   {
         String name = (String)e.nextElement();
		 out.println("" + name + " = " + req.getParameter(name));
	   }
	   out.println("</pre></h3>");
	}
	out.println("</body></html>");
  }

  /*向Servlet输入流输出两个字符串,若value值为null,则输出的第二个
  字符串是none */
  private void print(ServletOutputStream out, String name, String value)
		throws IOException
  {
    out.println("" + name + ":");
	out.println(value == null?"&lt;none&gt;":value);
  }

  /*输出一个字符串和一个整数,若整数的值为-1,则输出一个字符串和"none"
  */
  private void print(ServletOutputStream out, String name, int value)
		throws IOException
  {
    out.println("" + name + ":");
	if( value == -1)
	{
      out.println("&lt;none&gt;");
	}else{
      out.println(value);
	}
  }

  private static final String UNKNOWN = "&lt;unknown&gt;";

  public  String getServletInfo()
  {
   return "A servlet page that shows the request headers info!";
  }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -