会员可以在此提问,百战程序员老师有问必答
对大家有帮助的问答会被标记为“推荐”
看完课程过来浏览一下别人提的问题,会帮你学得更全面
截止目前,同学们一共提了 132464个问题
JAVA 全系列/第一阶段:JAVA 快速入门/JAVA入门和背景知识 35057楼
Python 全系列/第八阶段:轻量级Web开发利器-Flask框架/Flask数据库 35058楼
Python 全系列/第八阶段:轻量级Web开发利器-Flask框架/Flask数据库 35059楼
Python 全系列/第八阶段:轻量级Web开发利器-Flask框架/Flask数据库 35060楼
Python 全系列/第一阶段:Python入门/编程基本概念 35062楼

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 基础深化和提高/手写服务器项目(旧) 35063楼
JAVA 全系列/第四阶段:网页编程和设计/HTML5(旧) 35064楼
Python 全系列/第五阶段:数据库编程/mysql的使用 35065楼
JAVA 全系列/第一阶段:JAVA 快速入门/JAVA入门和背景知识 35067楼

class ComputerFactory:
    __obj = None
    __flag = True
    def __new__(cls, *args, **kwargs):
        if cls.__obj == None:                    #使用单例模式控制工厂对象的数量为1
            cls.__obj = object.__new__(cls)
        return cls.__obj
    def __init__(self):
        if ComputerFactory.__flag:              #使用单例模式初始化1次对象
            self.__flag = False
    def create_computer(self,name):
        if name == '联想':
            return Lenvo().calculate()
        elif name == '华硕':
            return HuaShuo().calculate()
        elif name == '神舟':
            return ShenZhou().calculate()
        else:
            return '品牌不存在'
class Computer:
    def calculate(self):
        print('身为品牌电脑,我们都有独自的logo')
class Lenvo(Computer):
    print('联想1')
    def calculate(self):
        print('我是联想电脑,我的logo就是《》《》《》')
class HuaShuo(Computer):
    print('华硕2')
    def calculate(self):
        print('我是华硕电脑,我的logo就是0 。0')
class ShenZhou(Computer):
    print('神舟3')
    def calculate(self):
        print('我是神舟电脑,我的logo就是東風快递,使命必达!')
fac = ComputerFactory()
fac2 = ComputerFactory()
c1 = fac.create_computer('华硕')
# c2 = fac2.create_computer('神舟')
print(fac._ComputerFactory__obj,1)
print(fac2._ComputerFactory__obj,2)
print(fac._ComputerFactory__flag,1)
print(fac2._ComputerFactory__flag,2)
print(fac2 is fac)


image.png

Python 全系列/第一阶段:Python入门/面向对象 35069楼

课程分类

百战程序员微信公众号

百战程序员微信小程序

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