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

package com.bjsxt.server;

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

import com.bjsxt.servlet.Servlet;

/**
 * Web应用程序
 * @version 1.0
 *
 */
public class WebApp {
	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);
	}
	/**
	 * 通过反射创建Servlet对象
	 * @param url
	 * @return Servlet
	 */
	public static Servlet getServlet(String url){
		if (url==null||url.trim().equals("")) {
			return null;
		}
		//调用无参构造方法创建Servlet对象
		
		try {
			//如果url正确
			//根据url的key获取servlet-name的值 /log=login, /reg=register
			String servletName=contxt.getMapping().get(url);
			//根据servletName得到对应的servlet-class
			String servletClass=contxt.getServlet().get(servletName);  //得到的是一个完整个的包名+类的字符串
			System.out.println(servletClass);
			//使用反射创建 Servlet对象
			Class<?> clazz=Class.forName(servletClass);
			Servlet servlet = (Servlet) clazz.newInstance();
			return servlet;
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (InstantiationException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IllegalAccessException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return null;
	}
	public static void main(String[] args) {
		System.out.println(getServlet("/log"));
		System.out.println(getServlet("/login"));		
	}
}

image.png

老师,为什么这里得到的是一个包名+类的字符串,过程具体是怎么实现的?

JAVA 全系列/第二阶段:JAVA 基础深化和提高/手写服务器项目(旧) 2942楼
JAVA 全系列/第二阶段:JAVA 基础深化和提高/多线程和并发编程(旧) 2943楼
JAVA 全系列/第二阶段:JAVA 基础深化和提高/容器 2944楼
JAVA 全系列/第二阶段:JAVA 基础深化和提高/XML 技术(旧) 2945楼
JAVA 全系列/第二阶段:JAVA 基础深化和提高/网络编程 2946楼
JAVA 全系列/第二阶段:JAVA 基础深化和提高/反射技术 2947楼
JAVA 全系列/第二阶段:JAVA 基础深化和提高/XML 技术(旧) 2949楼
JAVA 全系列/第二阶段:JAVA 基础深化和提高/IO 流技术(旧) 2950楼

public class TestThread extends Thread{
    public TestThread(){
        System.out.println(this.getName());
    }

    /**
     * 线程的线程体
     */
    @Override
    public void run() {
        System.out.println(this.getName()+"线程开始");
        for (int i=0;i<20;i++){
            System.out.println(this.getName()+""+i);
        }
        System.out.println(this.getName()+"线程结束");
    }

    public static void main(String[] args) {
        System.out.println("主线程开始");
        //实例化线程
        TestThread t1 =new TestThread();
        TestThread t2 =new TestThread();
        //启动线程
        t1.start();
        t2.start();
        System.out.println("主线程结束");
    }
}

主线程开始

Thread-0

Thread-1

主线程结束

Thread-0线程开始

Thread-1线程开始

Thread-00

Thread-10

Thread-01

Thread-11

Thread-02

Thread-12

Thread-03

Thread-13

Thread-04

Thread-14

Thread-15

Thread-16

Thread-17

Thread-18

Thread-19

Thread-110

Thread-111

Thread-112

Thread-05

Thread-113

Thread-06

Thread-114

Thread-07

Thread-115

Thread-08

Thread-116

Thread-09

Thread-117

Thread-010

Thread-118

Thread-011

Thread-119

Thread-012

Thread-013

Thread-014

Thread-015

Thread-016

Thread-017

Thread-018

Thread-019

Thread-0线程结束

Thread-1线程结束



老师  为什么我输出的代码不是按顺序的,代码很乱  类似交替?是不是就是前面讲的时间片轮询算法

JAVA 全系列/第二阶段:JAVA 基础深化和提高/多线程技术(旧) 2951楼

schemaProject.zip

老师,我这个报错了。不知道怎么处理,自己也在网上查了,也不会

我找到了有问题的那一行,也看不出是哪里有问题

1.png

JAVA 全系列/第二阶段:JAVA 基础深化和提高/XML 技术(旧) 2952楼
JAVA 全系列/第二阶段:JAVA 基础深化和提高/网络编程(旧) 2953楼
JAVA 全系列/第二阶段:JAVA 基础深化和提高/常用类 2955楼

课程分类

百战程序员微信公众号

百战程序员微信小程序

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