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

📄 request.java

📁 用JAVA开发
💻 JAVA
字号:
package cn.netjava.feeserver.servletcontainer;

import java.io.*;

/**
 * 封装客户端请求对象
 * 计费查询服务器
 * @author www.NetJava.cn
 */
public class Request {
	
	public Request(InputStream input){
		this.input=input;
		parseInput();
	}
		
	/**
	 * 提取客户端请求的路径信息
	 * @return
	 */
	public String getPathInfo() {
		return pathInfo;
	}

	 /**
	  * 提取请请求的业务目标名字
	  * @return
	  */
	public String getUrlPattern() {
		return urlPattern;
	}

	 /**
	  * 客户端的查询参数串
	  * @return
	  */
	public String getQueryStr() {
		return queryStr;
	}

  /**
   * 根据参数名字,提取客户端请求的参数值
   * @param paraName:参数名字
   * @return:参数值
   * @throws Exception:当没有这个参数名字时。
   */
public String getParameter(String paraName)throws Exception {
	   if(!(parameterMap.containsKey(paraName))){
		   throw new Exception("客户端的请求中没有这个参数: "+ paraName);
		}
	 return parameterMap.get(paraName).trim();
	}
	
	/**
	 * 解析客户端输入流
	 *
	 */
	private void parseInput(){
		 try{
			 byte[] buffer =new byte[1024];
			 input.read(buffer);
			 String inStr=new String(buffer);
		//	 LogManager.info("request content: "+inStr);
			 int urlStart=inStr.indexOf("/");
			 int urlEnd=inStr.indexOf("?");
			 int queryStrEnd=inStr.indexOf("HTTP/");
			 if(urlEnd<0){
				 urlEnd=queryStrEnd;
			 }
			 pathInfo=inStr.substring(urlStart, urlEnd);
			 queryStr=inStr.substring(urlEnd, queryStrEnd);
			 
			 if( queryStr.startsWith("?")){
				 queryStr=queryStr.substring(1,queryStr.length());
			 }
			 int patterIndex=pathInfo.lastIndexOf("/");
			 urlPattern=pathInfo.substring(patterIndex,pathInfo.length());
			 //解析查询串到map
			 parseQueryInfo(queryStr);
			 }catch(Exception  ef){
				 LogManager.error("parseInput error: "+ef.toString());
				 
		}
		
	}
	
	
	/**
	 * 解析查询串到Map中
	 * @param queryStr
	 */
	
	private void parseQueryInfo(String queryStr){
		try{
		//abc=-java学习&start=20070301
		java.util.StringTokenizer stk=new java.util.StringTokenizer(queryStr,"&");
		while(stk.hasMoreElements()){
			String tem=stk.nextToken();//abc=-java学习;
			String[] temArray=tem.split("=");
			if(temArray.length==2){
				parameterMap.put(temArray[0], temArray[1]);
			}
			
		}
		}catch(Exception ef){
			LogManager.error("parseQueryInfo error: "+queryStr+ " error: "+ef);
		}
	}
	
	
	public String toString(){
		StringBuffer stb=new StringBuffer();
		stb.append(" pathInfo: "+pathInfo );
		stb.append(" urlPattern: "+urlPattern );
		stb.append(" queryStr: "+queryStr );
		stb.append(" parameterMap: "+parameterMap.toString() );
		return stb.toString();
	}
	
	private String pathInfo;
	private String urlPattern;
	private String queryStr;
	private InputStream input;
	
	private java.util.Map<String,String> parameterMap=new java.util.HashMap();


	
	
}

⌨️ 快捷键说明

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