会员可以在此提问,百战程序员老师有问必答
对大家有帮助的问答会被标记为“推荐”
看完课程过来浏览一下别人提的问题,会帮你学得更全面
截止目前,同学们一共提了 132497个问题
Python 全系列/第二阶段:Python 深入与提高/GUI编程(隐藏) 28636楼
JAVA 全系列/第一阶段:JAVA 快速入门/面向对象详解和JVM底层内存分析 28637楼
JAVA 全系列/第二阶段:JAVA 基础深化和提高/容器(旧) 28638楼
JAVA 全系列/第二阶段:JAVA 基础深化和提高/IO 流技术(旧) 28639楼

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 基础深化和提高/手写服务器项目(旧) 28640楼
JAVA 全系列/第一阶段:JAVA 快速入门/数组和数据存储 28641楼
JAVA 全系列/第一阶段:JAVA 快速入门/面向对象详解和JVM底层内存分析 28642楼
人工智能/第七阶段:机器学习-无监督学习(旧)/EM算法和GMM高斯混合模型 28643楼

1.png

画红圈的这块写他的意义何在,不写也能正常运行代码啊

Python 全系列/第二阶段:Python 深入与提高/异常机制 28645楼
JAVA 全系列/第八阶段:SpringBoot与MybatisPlus/Spring Boot(旧) 28646楼

运行代码:

from tkinter import *
from PIL import Image, ImageTk
import random


class Application(Frame):

    def __init__(self, master=None):
        super().__init__(master)
        self.master = master
        self.pack()
        self.createWidget()

    def createWidget(self):
        self.btn1 = Button(self, text='送', command=self.song)
        self.btn1.pack()
        self.btnquit = Button(self, text='退出', command=root.destroy, bg='red', fg='blue')
        self.btnquit.pack()

    def get_picture(self, filepath):
        img = Image.open(filepath)
        pic = ImageTk.PhotoImage(img)
        return pic

    def set_picture(self):
        flowers = self.get_picture('flower1.jpg')
        money = self.get_picture('money1.jpg')
        shit = self.get_picture('shit1.jpg')
        book = self.get_picture('book1.jpg')
        phone = self.get_picture('phone1.jpg')
        clothes = self.get_picture('clothes1.jpg')
        song_list = [flowers, money, shit, book, phone, clothes]
        number = random.randint(0, 5)
        return song_list[number]

    def song(self):
        global photo
        photo = self.set_picture()
        self.labpic = Label(self, image=photo)
        self.labpic.pack()


if __name__ == '__main__':
    root = Tk()
    root.geometry('800x600+200+200')
    root.title('首个tk')
    app = Application(master=root)
    root.mainloop()

运行截图:

image.png

image.png



image.png


点击送第二次的时候图片会在第一个图的下面,点击送第三次的时候就看不到图片了

请问能不能每次点击送的时候图片都在正中间?

Python 全系列/第二阶段:Python 深入与提高/GUI编程(隐藏) 28647楼
JAVA 全系列/第六阶段:项目管理与SSM框架/Mybatis 28648楼
JAVA 全系列/第六阶段:项目管理与SSM框架/Spring 28649楼

课程分类

百战程序员微信公众号

百战程序员微信小程序

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