一,前言
最近在学习servlet,我用的工具时idea,在创建maven web项目时遇到了一些坑,比如@WebServLet这一类的注解失效,Tomcat服务器报服务器内部错误,浏览器访问时项目路径出错等问题,接下来我就说一下避坑指南
二,关于注解失效
问题原因
在idea中创建maven web项目时一般会选择如下步骤
在idea中创建maven web项目选择的一般都是图中所示原型,这样创建一个maven web项目是没有问题的,那么注解失效原因是什么呢,其实在按步骤创建项目后创建的是一个2.5版本的项目,而注解只有3以上的版本才支持。
解决方案
首先打开自己maven本地仓库,依次按照图中路径点击,找到图中所示jar包
用压缩软件奖图中所示jar包打开(不要解压),找到web.xml,右键点击编辑。
将原先内容替换为如下内容
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1">
</web-app>
好了,问题一解决
三,关于Tomcat服务器内部错误
问题原因
由于我最开始用的是Tomcat10,在写好一个项目之后,启动Tomcat服务器,访问页面,结果报错:服务器内部错误。出现这个错误的原因是由于Tomcat10使用的是jakarta.servlet.api,而在项目中使用的是javax.servlet.api,所以蔡会报服务器内部错误。
解决方案
以下方案任选其一
- 在maven中加入jakarta.servlet.api的依赖,将项目中的javax.servlet.api 更换为jakarta.servlet.api。
- 更换Tomcat版本,使用低版本的Tomcat(推荐该方案,简单高效)
四,项目路径问题
问题原因
先看一下这是什么情况吧如图
这是首页,当我输入数据点击提交后
仔细看就会发现路径里面少了东西,少的就是我们的项目名,加上项目名称后可以正常访问
这里的坑是你点击按钮跳转,路径中没有项目名
解决方案
方案一
form表单的action属性的路径不要加“/”,这个“/”代表的是“http://ip:port/”中的最后一个斜杠
方案二
如图,右上角点击编辑配置
点击部署,找到图中所示位置,将“/”之后的字符全部删除,然后点击确定
问题解决