📄 request.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 + -