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在个人电脑上实现微信扫码支付
Jun 13 Java/Android
SpringBoot集成Druid连接池连接MySQL8.0.11
Jul 02 Java/Android
Spring Boot项目传参校验的最佳实践指南
Apr 05 Java/Android
详解Flutter和Dart取消Future的三种方法
Apr 07 Java/Android
Android开发之WECHAT微信小程序路由跳转的两种形式
Apr 12 Java/Android
详细介绍Java中的CyclicBarrier
Apr 13 Java/Android
IDEA 2022 Translation 未知错误 翻译文档失败
Apr 24 Java/Android
Spring Data JPA框架的核心概念和Repository接口
Apr 28 Java/Android
Android开发之底部导航栏的快速实现
Apr 28 Java/Android
mybatis 获取更新记录的id
May 20 Java/Android
向Spring IOC 容器动态注册bean实现方式
Jul 15 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数组函数序列之in_array() 查找数组值是否存在
2011/10/29 PHP
解析php中var_dump,var_export,print_r三个函数的区别
2013/06/21 PHP
Yii2使用swiftmailer发送邮件的方法
2016/05/03 PHP
jquery 使用简明教程
2014/03/05 Javascript
JavaScript中的prototype.bind()方法介绍
2014/04/04 Javascript
JS获取URL中参数值(QueryString)的4种方法分享
2014/04/12 Javascript
js 获取浏览器版本以此来调整CSS的样式
2014/06/03 Javascript
Jquery插件实现点击获取验证码后60秒内禁止重新获取
2015/03/13 Javascript
JavaScript使用DeviceOne开发实战(四)仿优酷视频应用
2015/12/02 Javascript
JavaScript实现斗地主游戏的思路
2016/02/29 Javascript
javascript中call apply 与 bind方法详解
2016/03/10 Javascript
微信小程序 获取微信OpenId详解及实例代码
2016/10/31 Javascript
jQuery 插件实现随机自由弹跳气泡样式
2017/01/12 Javascript
你真的了解BOM中的history对象吗
2017/02/13 Javascript
Angular2 组件交互实例详解
2017/08/24 Javascript
浅谈Angular 中何时取消订阅
2017/11/22 Javascript
Vue按需加载的具体实现
2017/12/02 Javascript
webpack源码之loader机制详解
2018/04/06 Javascript
JavaScript中Dom操作实例详解
2019/07/08 Javascript
VueQuillEditor富文本上传图片(非base64)
2020/06/03 Javascript
[08:44]和酒神一起战斗 DOTA2教你做大人
2014/03/27 DOTA
[57:37]EG vs Mineski 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
python:socket传输大文件示例
2017/01/18 Python
python中实现精确的浮点数运算详解
2017/11/02 Python
使用python3构建文件传输的方法
2019/02/13 Python
通过Python编写一个简单登录功能过程解析
2019/09/04 Python
Python中sorted()排序与字母大小写的问题
2020/01/14 Python
Python-jenkins 获取job构建信息方式
2020/05/12 Python
Python常用断言函数实例汇总
2020/11/30 Python
python UIAutomator2使用超详细教程
2021/02/19 Python
大专生自我评价
2014/01/28 职场文书
2015年全国爱眼日活动小结
2015/02/27 职场文书
有关骆驼祥子的读书笔记
2015/06/26 职场文书
公司员工管理制度
2015/08/04 职场文书
Mysql Online DDL的使用详解
2021/05/20 MySQL
Go本地测试解耦任务拆解及沟通详解Go本地测试的思路沟通的重要性总结
2022/06/21 Golang