会员可以在此提问,百战程序员老师有问必答
对大家有帮助的问答会被标记为“推荐”
看完课程过来浏览一下别人提的问题,会帮你学得更全面
截止目前,同学们一共提了 132647个问题

package com.bjsxt.server;

import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;



public class Request {/*请求*/
	private InputStream is;//输入流
	private String requestInfo;//请求字符串,请求方式,请求的路径,参数,协议,协议版本,请求的正文。。。
	private String method;//请求的方式
	private String url;//请求的url
	//输入框的name为key,值为value
	/*
	 *  key: username    value  :bjsxt
	 *  key:pwd          value:123
	 *  key:hobby        value   :read,ball
	 * */
	private Map<String,List<String>> parametermapValues;//参数
	private static final String CRLF="\r\n";//换行
	private static final String BLANK=" ";//空格
	//构造方法,初始化属性
	public Request() {
		parametermapValues=new HashMap<String,List<String>>();
		method="";
		url="";
		requestInfo="";
	}
	public Request(InputStream is){
		this();//调用本类无参的构造方法
		this.is=is;
		try {
			byte [] buf=new byte[20480];
			int len=this.is.read(buf);
			requestInfo=new String(buf,0,len);
		} catch (IOException e) {
			return;
		}
		//调用本类中的分解请求信息的方法
		this.parseRequestInfo();
	}
	//分解请求信息的方法
	/**
	 * 请求方式
	 * 请求路径
	 * 请求的参数
	 * 
	 */
	private void parseRequestInfo(){
		String paraString="";//用于存储请求参数
		//获取请求参数的第一行
		String firstLine=requestInfo.substring(0, requestInfo.indexOf(CRLF)).trim();//从0开始,到第一个换行的位置
		//分解出请求方式
		int index=firstLine.indexOf("/");
		this.method=firstLine.substring(0, index).trim();
		//分解url  ,get可能包含参数,也可能不包含参数post
		String urlString= firstLine.substring(index,firstLine.indexOf("HTTP/")).trim();
		//判断请求方式是GET还 是POST
		if("get".equalsIgnoreCase(this.method)){  //包含请求参数
			if (urlString.contains("?")) {
				String [] urlArray=urlString.split("\\?");
				this.url=urlArray[0];
				paraString=urlArray[1];
			}else{
				this.url=urlString;
			}
		}else{//post不包含请求参数
			this.url=urlString;
			paraString=requestInfo.substring(requestInfo.lastIndexOf(CRLF)).trim();
		}
		if (paraString.equals("")) {
			return;
		}
		//请求参数
		//System.out.println(paraString);
		
	}
	//用于测试
	/*public void show(){
		System.out.println(this.url);
		System.out.println(this.method);
	}*/
	private void parseParam(String prarString) {
		String [] token=prarString.split("&");
		for(int i=0;i<token.length;i++) {
			String keyValues=token[1];
			String []keyValue=keyValues.split("=");//username 
			if (keyValue.length==1) {
				keyValue=Arrays.copyOf(keyValue, 2);
				keyValue[1]=null;
			}
			//将表单元素的name与name对应的值存储到Map集合
			String key=keyValue[0].trim();
			String value=keyValue[1]==null?null:keyValue[1].trim();
			//放到集合中存储
			if (!parametermapValues.containsKey(key)) {
				parametermapValues.put(key, new ArrayList<String>());
				
			}
			List<String> values=parametermapValues.get(key);
			values.add(value);
		}
	}
	public static void main(String[] args) {
		Request req=new Request();
		req.parseParam("username=123&pwd=123&hobby=ball&hobby=paint");
		System.out.println(req.parametermapValues);
	}
}

image.png

得不到视频中的效果 这是为什么。?

JAVA 全系列/第二阶段:JAVA 基础深化和提高/手写服务器项目(旧) 3601楼
JAVA 全系列/第二阶段:JAVA 基础深化和提高/多线程技术(旧) 3602楼
JAVA 全系列/第二阶段:JAVA 基础深化和提高/常用类 3603楼
JAVA 全系列/第二阶段:JAVA 基础深化和提高/多线程和并发编程(旧) 3604楼
JAVA 全系列/第二阶段:JAVA 基础深化和提高/容器 3605楼
JAVA 全系列/第二阶段:JAVA 基础深化和提高/多线程技术 3608楼
JAVA 全系列/第二阶段:JAVA 基础深化和提高/容器 3609楼

image.png


JAVA 全系列/第二阶段:JAVA 基础深化和提高/IO流技术 3612楼
JAVA 全系列/第二阶段:JAVA 基础深化和提高/容器 3613楼
JAVA 全系列/第二阶段:JAVA 基础深化和提高/IO 流技术(旧) 3614楼

为啥我这个代码运行后,指定的目录下没有Object.txt文件?

但是运行read()方法后可以读的出来

package com.bjsxt.Object2;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;

public class Test {
	public static void main(String[] args) {
		write();
		//read();
	}
	
	//写对象的方法
	public static void write() {

		//创建对象流对象
		ObjectOutputStream oos = null;
		try {
			oos = new ObjectOutputStream(new FileOutputStream("E:\\Object.txt"));
			//写对象
			oos.writeObject(new Student("marry", 23));
			oos.writeUTF("写对象");
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally {
			//关闭
			if(oos!=null) {
				try {
					oos.close();
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
		}
		
	}
	
	//读对象的方法
	public static void read() {
		ObjectInputStream ois = null;
		try {
			ois = new ObjectInputStream(new FileInputStream("E:\\Object.txt"));
   System.out.println(ois.readObject());	
   System.out.println(ois.readUTF());
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally {
			 //关闭
			   if(ois!=null) {
				   try {
					ois.close();
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			   }
		}
	  
	}
}


JAVA 全系列/第二阶段:JAVA 基础深化和提高/IO 流技术(旧) 3615楼

课程分类

百战程序员微信公众号

百战程序员微信小程序

©2014-2025百战汇智(北京)科技有限公司 All Rights Reserved 北京亦庄经济开发区科创十四街 赛蒂国际工业园
网站维护:百战汇智(北京)科技有限公司
京公网安备 11011402011233号    京ICP备18060230号-3    营业执照    经营许可证:京B2-20212637