一,前言

最近在学习servlet,我用的工具时idea,在创建maven web项目时遇到了一些坑,比如@WebServLet这一类的注解失效,Tomcat服务器报服务器内部错误,浏览器访问时项目路径出错等问题,接下来我就说一下避坑指南

二,关于注解失效
问题原因

在idea中创建maven web项目时一般会选择如下步骤

idea中maven重新构建 idea创建maven构建失败_tomcat

在idea中创建maven web项目选择的一般都是图中所示原型,这样创建一个maven web项目是没有问题的,那么注解失效原因是什么呢,其实在按步骤创建项目后创建的是一个2.5版本的项目,而注解只有3以上的版本才支持。

解决方案

首先打开自己maven本地仓库,依次按照图中路径点击,找到图中所示jar包

idea中maven重新构建 idea创建maven构建失败_intellij-idea_02

用压缩软件奖图中所示jar包打开(不要解压),找到web.xml,右键点击编辑。

idea中maven重新构建 idea创建maven构建失败_xml_03


将原先内容替换为如下内容

<?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(推荐该方案,简单高效
四,项目路径问题
问题原因

先看一下这是什么情况吧如图

idea中maven重新构建 idea创建maven构建失败_tomcat_04

这是首页,当我输入数据点击提交后

idea中maven重新构建 idea创建maven构建失败_idea中maven重新构建_05

仔细看就会发现路径里面少了东西,少的就是我们的项目名,加上项目名称后可以正常访问

idea中maven重新构建 idea创建maven构建失败_java_06

这里的坑是你点击按钮跳转,路径中没有项目名

解决方案

方案一

form表单的action属性的路径不要加“/”,这个“/”代表的是“http://ip:port/”中的最后一个斜杠

方案二

如图,右上角点击编辑配置

idea中maven重新构建 idea创建maven构建失败_intellij-idea_07

点击部署,找到图中所示位置,将“/”之后的字符全部删除,然后点击确定

idea中maven重新构建 idea创建maven构建失败_xml_08


问题解决

idea中maven重新构建 idea创建maven构建失败_java_09