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常用的加密算法
Jun 11 Java/Android
深入理解java.lang.String类的不可变性
Jun 27 Java/Android
jackson json序列化实现首字母大写,第二个字母需小写
Jun 29 Java/Android
SpringBoot整合JWT的入门指南
Jun 29 Java/Android
mybatis3中@SelectProvider传递参数方式
Aug 04 Java/Android
SpringDataJPA在Entity中常用的注解介绍
Dec 06 Java/Android
Java中Quartz高可用定时任务快速入门
Apr 03 Java/Android
springboot读取nacos配置文件
May 20 Java/Android
Java实现添加条码或二维码到Word文档
Jun 01 Java/Android
Android学习之BottomSheetDialog组件的使用
Jun 21 Java/Android
Android RecyclerView实现九宫格效果
Jun 28 Java/Android
Spring boot实现上传文件到本地服务器
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
php各种编码集详解和以及在什么情况下进行使用
2011/09/11 PHP
PHP垃圾回收机制引用计数器概念分析
2013/06/24 PHP
php实现事件监听与触发的方法
2014/11/21 PHP
PHP中Session可能会引起并发问题
2015/06/26 PHP
Yii2中cookie用法示例分析
2016/07/18 PHP
js 兼容多浏览器的回车和鼠标焦点事件代码(IE6/7/8,firefox,chrome)
2010/04/14 Javascript
javascript 从if else 到 switch case 再到抽象
2010/07/17 Javascript
jQuery代码优化 事件委托篇
2011/11/01 Javascript
document.createElement()用法
2013/03/13 Javascript
Nodejs使用mysql模块之获得更新和删除影响的行数的方法
2014/03/18 NodeJs
jquery中获取元素里某一特定子元素的代码
2014/12/02 Javascript
jQuery实现ajax的叠加和停止(终止ajax请求)
2016/08/08 Javascript
vue中v-for加载本地静态图片方法
2018/03/03 Javascript
使用use注册Vue全局组件和全局指令的方法
2018/03/08 Javascript
node.js监听文件变化的实现方法
2019/04/17 Javascript
Vue 2.0 中依赖注入 provide/inject组合实战
2019/06/20 Javascript
一步一步实现Vue的响应式(对象观测)
2019/09/02 Javascript
vue表单中遍历表单操作按钮的显示隐藏示例
2019/10/30 Javascript
Vue项目页面跳转时浏览器窗口上方显示进度条功能
2020/03/26 Javascript
[38:21]2018DOTA2亚洲邀请赛3月30日 小组赛A组 LGD VS Newbee
2018/03/31 DOTA
[01:31:22]DOTA2-DPC中国联赛定级赛 LBZS vs Magma BO3第二场 1月10日
2021/03/11 DOTA
python得到qq句柄,并显示在前台的方法
2018/10/14 Python
python模拟键盘输入 切换键盘布局过程解析
2019/08/15 Python
pytorch 求网络模型参数实例
2019/12/30 Python
jupyter notebook 调用环境中的Keras或者pytorch教程
2020/04/14 Python
matlab中二维插值函数interp2的使用详解
2020/04/22 Python
Python中常见的数制转换有哪些
2020/05/27 Python
使用css3实现超炫的loading加载动画效果
2014/05/07 HTML / CSS
HTML5 解决苹果手机不能自动播放音乐问题
2017/12/27 HTML / CSS
国家地理在线商店:Shop National Geographic
2018/06/30 全球购物
Watchshop德国:欧洲在线手表No.1
2019/06/20 全球购物
商务英语应届生自我鉴定
2013/12/08 职场文书
水利公司纪检监察自我鉴定
2014/02/25 职场文书
银行青年文明号事迹材料
2014/05/31 职场文书
银行反四风对照检查材料
2014/09/29 职场文书
高中生旷课检讨书
2014/10/08 职场文书