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 相关文章推荐
自从在 IDEA 中用了热部署神器 JRebel 之后,开发效率提升了 10(真棒)
Jun 26 Java/Android
java实现对Hadoop的操作
Jul 01 Java/Android
SpringBoot SpringEL表达式的使用
Jul 25 Java/Android
java调用Restful接口的三种方法
Aug 23 Java/Android
Spring Bean是如何初始化的详解
Mar 22 Java/Android
Java GUI编程菜单组件实例详解
Apr 07 Java/Android
Java 异步任务计算FutureTask
Apr 28 Java/Android
Java Spring Lifecycle的使用
May 06 Java/Android
Java线程的6种状态与生命周期
May 11 Java/Android
SpringBoot使用ip2region获取地理位置信息的方法
Jun 21 Java/Android
java中如何截取字符串最后一位
Jul 07 Java/Android
Spring Boot 的创建和运行示例代码详解
Jul 23 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
回答PHPCHINA上的几个问题:URL映射
2007/02/14 PHP
php中让上传的文件大小在上传前就受限制的两种解决方法
2013/06/24 PHP
PHP实现微信公众平台音乐点播
2014/03/20 PHP
php实现QQ空间获取当前用户的用户名并生成图片
2015/07/25 PHP
php实现的xml操作类
2016/01/15 PHP
javascript 面向对象编程 万物皆对象
2009/09/17 Javascript
IE6下CSS图片缓存问题解决方法
2010/12/09 Javascript
jquerymobile checkbox及时刷新才能获取其准确值
2012/04/14 Javascript
jquery实现简单的拖拽效果实例兼容所有主流浏览器
2013/06/21 Javascript
JS实现字体选色板实例代码
2013/11/20 Javascript
Javascript 按位取反运算符 (~)
2014/02/04 Javascript
Bootstrap轮播插件简单使用方法介绍
2016/06/21 Javascript
javascript入门之window对象【新手必看】
2016/11/22 Javascript
canvas实现流星雨的背景效果
2017/01/13 Javascript
js 博客内容进度插件详解
2017/02/19 Javascript
JavaScript实现动态添加Form表单元素的方法示例
2017/08/14 Javascript
详解vue-cli中的ESlint配置文件eslintrc.js
2017/09/25 Javascript
用Node编写RESTful API接口的示例代码
2018/07/04 Javascript
Vue 报错TypeError: this.$set is not a function 的解决方法
2018/12/17 Javascript
inquirer.js一个用户与命令行交互的工具详解
2019/05/18 Javascript
vue和iview实现Scroll 数据无限滚动功能
2019/10/31 Javascript
Vue router安装及使用方法解析
2020/12/02 Vue.js
跟老齐学Python之玩转字符串(3)
2014/09/14 Python
CentOS 7下Python 2.7升级至Python3.6.1的实战教程
2017/07/06 Python
django 2.2和mysql使用的常见问题
2019/07/18 Python
python接口自动化框架实战
2020/12/23 Python
浅谈CSS3动画的回调处理
2016/07/21 HTML / CSS
英国二手iPhone、音乐、电影和游戏商店:musicMagpie
2018/10/26 全球购物
关于VPN
2012/06/10 面试题
施工安全生产承诺书
2014/05/23 职场文书
学雷锋活动总结报告
2014/06/26 职场文书
心得体会的写法
2014/09/05 职场文书
教师三严三实学习心得体会
2014/10/11 职场文书
债务纠纷起诉书
2015/05/20 职场文书
mysql数据库隔离级别详解
2022/06/16 MySQL
设置IIS Express并发数
2022/07/07 Servers