Java tomcat手动配置servlet详解


Posted in Java/Android onNovember 27, 2021

1.准备工作

如下图,先按照要求创建好各个文件

Java tomcat手动配置servlet详解

Java tomcat手动配置servlet详解

这时候如果你觉得能运行,那就错了(我一开始卡在这了)

idea的项目结构

Java tomcat手动配置servlet详解

如果学习过用idea创建servlet应用,你肯定会发现,这里提供的web.xml根本不完整
请用以下代码囊括上述的servlet标签

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">
		//在这里加入上面说过的servlet标签代码
</web-app>

2.编译文件

编码出问题

Java tomcat手动配置servlet详解

如上,刚开始我想编译,但报错了

这里的原因是,javac会根据你的操作系统编码读取源文件代码,而我的电脑是默认GBK的,但这些源码我们都是在记事本写下的,而记事本默认使用UTF-8保存,于是相当于javac用GBK读取UTF-8的内容,遂报错

因此我们要指定读取源码的编码格式为UTF-8

Java tomcat手动配置servlet详解

学习类加载器

这时候报的错是正常显示的中文了,找不到servlet,意思就是你用了这个类,但没找到,根据双亲委派,我们知道找一个类,会先从system class loader类加载器的缓存开始找,没有就找他的父加载器即extension class loader的缓存,没有就再找extension class loader的父加载器bootstrap class loader的缓存,还是没有就开始向下,先找bootstrap class loader的指定路径下的jar包是否含有我们要的类,从下图可知,跟类加载器加载核心jar包,一些基本的类都在里面,路径是jdk下的jre下的lib

Java tomcat手动配置servlet详解

这时候还没有找到,就去扩展类加载器的指定路径找,我的电脑是以下路径

Java tomcat手动配置servlet详解

如果还没有找到,那就在系统类加载器指定路径,即耳熟能详的classpath,你平时在配置path的时候应该也遇到过,

那么-cp命令后面跟上classpath就是告诉系统如果一套下来没找到就去我这找,-cp全称就是-classpath两种写法都能运行

处理编译结果

当你通过在文件管理器输入cmd进行javac时,默认产生class文件在当前目录,可这里有个重点,你写的java源文件有package这条命令,那么我们必须按照包名逐级创建文件夹(运行的时候才能找到你导入的自己写的源文件),

-d 就是放class的位置,-d .可以在当前目录下帮我们自动创建包文件夹很方便,不用手动创建

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注三水点靠木的更多内容!

Java/Android 相关文章推荐
Java输出Hello World完美过程解析
Jun 13 Java/Android
SpringCloud Alibaba 基本开发框架搭建过程
Jun 13 Java/Android
利用Java设置Word文本框中的文字旋转方向的实现方法
Jun 28 Java/Android
总结Java对象被序列化的两种方法
Jun 30 Java/Android
JUnit5常用注解的使用
Jul 02 Java/Android
Java8中接口的新特性使用指南
Nov 01 Java/Android
Java基础——Map集合
Apr 01 Java/Android
SpringBoot全局异常处理方案分享
May 25 Java/Android
springboot为异步任务规划自定义线程池的实现
Jun 14 Java/Android
SpringCloud中分析讲解Feign组件添加请求头有哪些坑梳理
Jun 21 Java/Android
Java 多线程并发FutureTask
Jun 28 Java/Android
Springboot集成kafka高级应用实战分享
Aug 14 Java/Android
使用jpa之动态插入与修改(重写save)
Nov 23 #Java/Android
Jpa Specification如何实现and和or同时使用查询
Nov 23 #Java/Android
解析mybatis-plus中的resultMap简单使用
Nov 23 #Java/Android
JPA 通过Specification如何实现复杂查询
Java使用JMeter进行高并发测试
Java 在线考试云平台的实现
OpenCV实现反阈值二值化
You might like
萌王史莱姆”萌王性别尴尬!那“萌战”归女组还是男?
2018/12/17 日漫
PHP4实际应用经验篇(7)
2006/10/09 PHP
php下把数组保存为文件格式的实例应用
2010/02/08 PHP
PHP 图片上传代码
2011/09/13 PHP
php版本CKEditor 4和CKFinder安装及配置方法图文教程
2019/06/05 PHP
JavaScript Date对象 日期获取函数
2010/12/19 Javascript
js自定义事件及事件交互原理概述(二)
2013/02/01 Javascript
JavaScript中setAttribute用法介绍
2013/07/20 Javascript
JavaScript sup方法入门实例(把字符串显示为上标)
2014/10/20 Javascript
jQuery的几个我们必须了解的特点
2015/05/03 Javascript
javascript中字体浮动效果的简单实例演示
2015/11/18 Javascript
弹出遮罩层后禁止滚动效果【实现代码】
2016/04/29 Javascript
轻松理解Javascript变量的相关问题
2017/01/20 Javascript
JavaScript基本类型值-Undefined、Null、Boolean
2017/02/23 Javascript
Vue 列表上下过渡效果的实例代码
2019/06/25 Javascript
JS实现滑动插件
2020/01/15 Javascript
Vue组件生命周期运行原理解析
2020/11/25 Vue.js
[02:16]完美世界DOTA2联赛PWL S3 集锦第三期
2020/12/21 DOTA
[47:52]DOTA2-DPC中国联赛正赛 iG vs LBZS BO3 第二场 3月4日
2021/03/11 DOTA
Python Mysql数据库操作 Perl操作Mysql数据库
2009/01/12 Python
Windows下Python的Django框架环境部署及应用编写入门
2016/03/10 Python
Ubuntu16.04/树莓派Python3+opencv配置教程(分享)
2018/04/02 Python
浅谈pycharm的xmx和xms设置方法
2018/12/03 Python
Python中作用域的深入讲解
2018/12/10 Python
python单线程文件传输的实例(C/S)
2019/02/13 Python
Python标准库使用OrderedDict类的实例讲解
2019/02/14 Python
Tensorflow Summary用法学习笔记
2020/01/10 Python
python模拟预测一下新型冠状病毒肺炎的数据
2020/02/01 Python
HTML5引入的新数组TypedArray介绍
2012/12/24 HTML / CSS
Html5原创俄罗斯方块(基于canvas)
2019/01/07 HTML / CSS
澳大利亚潮流尖端的快时尚品牌:Cotton On
2016/09/26 全球购物
校园之声广播稿
2014/01/31 职场文书
公交公司毕业生求职信
2014/02/15 职场文书
小学生一分钟演讲稿
2014/08/26 职场文书
2015年会计年终工作总结
2015/05/26 职场文书
使用Redis实现秒杀功能的简单方法
2021/05/08 Redis