IDEA手写原始servlet项目遇到的问题
Posted zhangjianghao
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了IDEA手写原始servlet项目遇到的问题相关的知识,希望对你有一定的参考价值。
JavaWeb编程最初是从学习servlet开始的,在学了N多个框架之后,逐渐觉得框架带来的功能是理所当然的,不加思考就在上面码砖,这样码久了就有种“一切尽在掌控”的错觉。
然而,闲下来的时候回忆旧知识,想自己搭一个纯servlet的架子,瞬间懵逼。今天就记录下遇到的问题:
1.在IDEA中对构建得到的 Artifacts 组织其结构时,不符合 servlet 的约定,导致
- 报 internal compiler error (编译器内部错误,因为设置output的路径不对,或者没有及时refresh maven 依赖,导致编译时没找到到ar包),
- 启动成功了访问不到首页index.jsp(因为没有把它放置到正确的位置,它应该是与WEB-INF和META-INF在同一目录层级的),
- 在能访问到index.jsp的情况下,访问不到匹配特定URL的servlet方法(原因是编译出来的class字节码文件根本就不在上面说的WEB-INF目录里面,这样tomcat拿着你传它的URL就找不到对应的处理者了)。
截图中 output directory 最好指定一个明显有意义的路径(计算机里不应该存在没有语义(抽象)的东西),这里给定路径名称为 war-exploded 。它是 Artifacts 输出到
的路径的根路径,这个根路径可能有其它同级路径,存放IDEA自己构建出的产物。
而output layout则是 对class,jsp,xml等文件/文件夹的组织,IDEA给了你极大的灵活性能够自己组织编译产物的层级结构(什么文件输出到什么位置),
这样做之后,得到的产物就可以不做处理放到容器里面直接运行。
过程真的坎坷,也暴露出“基础不牢,理解不深刻”这个严重问题。加油啊,年轻人!
以上是关于IDEA手写原始servlet项目遇到的问题的主要内容,如果未能解决你的问题,请参考以下文章
IDEA新建MavenWeb项目并通过Tomcat运行HelloWorld以及运行简单的Servlet类