会员可以在此提问,百战程序员老师有问必答
对大家有帮助的问答会被标记为“推荐”
看完课程过来浏览一下别人提的问题,会帮你学得更全面
截止目前,同学们一共提了 132836个问题
JAVA 全系列/第二阶段:JAVA 基础深化和提高/手写服务器项目(旧) 2671楼
JAVA 全系列/第二阶段:JAVA 基础深化和提高/容器(旧) 2673楼



老师您好,您看一下我的代码和运行结果,帮我指出哪里出现了问题

package com.bjsxt.server;

import java.util.List;
import java.util.Map;

import com.bjsxt.servlet.Servlet;



/**
 * 
 * @author zhang - dell
 *用于初始化程序运行的数据
 *和根据不同的url创建所请求的Servlet对象
 */
public class WebApp {//App应用程序
	private static ServletContext contxt;
	
	static {
		contxt=new ServletContext();
		//分别获取对应关系的Map集合
		Map<String,String> servlet=contxt.getServlet();
		Map<String,String> mapping=contxt.getMapping(); 
		
		//创建解析XML文件
		WebDom4j web = new WebDom4j();
		web.parse(web.getDocument());//解析XML
		
		//获取解析XML之后的List集合
		List<Entity> entityList = web.getEntityList();
		List<Mapping> mappingList = web.getMappingList();
		
		//将List集合中的数据存储到Map集合
		for(Entity entity : entityList) {
			
			servlet.put(entity.getName(),entity.getClazz());
		}
//		System.out.println(servlet);
		for(Mapping map : mappingList) {
			//遍历url-pattern的集合
			List<String> urlPattern=map.getUrlPattern();
			for(String s:urlPattern) {
				mapping.put(s, map.getName());
			}
//			System.out.println(mapping);
			
		}
		/**根据url创建不同的Servlet对象
		 */
		public static Servlet getServlet(String url) {
			if(url==null||url.trim().equals("")) {
				return null;
			}
			//如果url正确
			//根据url的key获取servlet-name的值 /log,/reg=register
			String servletName=contxt.getMapping().get(url);
			//servletName得到对应的servlet-class
			String servletClass=contxt.getServlet().get(servletName);
			//使用反射创建Servlet对象
			Class<?>clazz=Class.forName(servletClass);
			//调用无参构造方法创建Servlet对象
			Servlet servlet=(Servlet) clazz.newInstance();
			return servlet;
		
		}
		
	}
	public static void main(String[] args) {
		
	}
	
}

代码截图:


    blob.png

运行截图:

blob.png

JAVA 全系列/第二阶段:JAVA 基础深化和提高/手写服务器项目(旧) 2674楼
JAVA 全系列/第二阶段:JAVA 基础深化和提高/IO 流技术(旧) 2676楼
JAVA 全系列/第二阶段:JAVA 基础深化和提高/容器 2677楼
JAVA 全系列/第二阶段:JAVA 基础深化和提高/容器(旧) 2678楼

package com.xykj;

import java.io.BufferedOutputStream;
import java.io.DataOutputStream;
import java.io.FileOutputStream;

public class DataOutputDemo {
    public static void main(String[] args) {
        DataOutputStream dos = null;
        try{
            dos = new DataOutputStream(new BufferedOutputStream(new FileOutputStream("d:/data.txt")));
            dos.writeChar('a');
            dos.write(10);
            dos.writeDouble(Math.random());
            dos.writeBoolean(true);
            dos.writeUTF("你好");
            dos.flush();
        }catch (Exception e){
            e.printStackTrace();
        }finally{
            try{
                if (dos != null){
                    dos.close();
                }
            }catch (Exception e){
                e.printStackTrace();
            }
        }
    }
}



package com.xykj;

import java.io.BufferedInputStream;
import java.io.DataInputStream;
import java.io.FileInputStream;

public class DataInputDemo {
    public static void main(String[] args) {
        DataInputStream dis = null;
        try{
            dis = new DataInputStream(new BufferedInputStream(new FileInputStream("d:/data.txt")));
            //直接读取数据,读取的顺序要与写入的顺序一致,否则不能正确读取数据。
            System.out.println("char: "+dis.readChar());
            System.out.println("int: "+dis.readInt());
            System.out.println("double: "+dis.readDouble());
            System.out.println("boolean: "+dis.readBoolean());
            System.out.println("String: "+dis.readUTF());
        }catch(Exception e){
            e.printStackTrace();
        }finally {
                try{
                    if (dis != null){
                        dis.close();
                    }
                }catch (Exception e){
                    e.printStackTrace();
                }
        }
    }
}

image.png



老师,我是按照顺序读取的,怎么还会报错

JAVA 全系列/第二阶段:JAVA 基础深化和提高/IO 流技术(旧) 2679楼
JAVA 全系列/第二阶段:JAVA 基础深化和提高/多线程技术 2681楼
JAVA 全系列/第二阶段:JAVA 基础深化和提高/网络编程 2682楼
JAVA 全系列/第二阶段:JAVA 基础深化和提高/网络编程(旧) 2683楼

http_server.zip

老师,这是我的代码,已经正常的去调试过,但还是没有解决

JAVA 全系列/第二阶段:JAVA 基础深化和提高/手写服务器项目(旧) 2685楼

课程分类

百战程序员微信公众号

百战程序员微信小程序

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