用的是idea2021.3+jdk17.0.2+maven3.8.4+tomcat10.0.16
当我用maven部署时,可以访问html,但无法访问servlet,无论是注解还web.xml配置都不行。
但我用tomcat部署时,却可以正常访问,这是为什么呢?
pox配置如下
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<packaging>war</packaging>
<build>
<plugins>
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<port>8080</port>
<path>/demo</path>
<uriEncoding>utf-8</uriEncoding>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>jakarta.servlet</groupId>
<artifactId>jakarta.servlet-api</artifactId>
<version>5.0.0</version>
<scope>provided</scope>
</dependency>
</dependencies>
<groupId>com.gqiu</groupId>
<artifactId>travelNetwork</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
</properties>
</project>
web配置如下
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<servlet>
<servlet-name>registerUserServlet</servlet-name>
<servlet-class>com.travel.servlet.RegisterUserServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>registerUserServlet</servlet-name>
<url-pattern>/registerUserServlet</url-pattern>
</servlet-mapping>
</web-app>
html文件如下
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- 上述3个meta标签*必须*放在最前面,任何其他内容都*必须*跟随其后! -->
<title>注册</title>
<!-- Bootstrap -->
<link rel="stylesheet" href="css/bootstrap.min.css" >
<!-- jQuery (Bootstrap 的所有 JavaScript 插件都依赖 jQuery,所以必须放在前边) -->
<script src="js/jquery-3.6.0.min.js" ></script>
<!-- 加载 Bootstrap 的所有 JavaScript 插件。你也可以根据需要只加载单个插件。 -->
<script src="js/bootstrap.min.js" ></script>
<!--外部css样式-->
<link rel="stylesheet" href="css/register.css">
<!--外部JavaScript-->
<script src="js/register.js"></script>
<!-- <script>-->
<!-- $(function () {-->
<!-- // 当表单提交校验所有方法-->
<!-- $("#registerForm").submit(function () {-->
<!-- // 发送数据到服务器-->
<!-- if(checkUsername() && checkPassword() &&checkEmail()-->
<!-- &&checkTel()&& checkName()&&checkCode()&&checkBirthday()){-->
<!-- // 校验通过,发送ajax请求-->
<!-- $.post("registerUserServlet",$(this).serialize(),function (data) {-->
<!-- alert("方法执行了");-->
<!-- });-->
<!-- }-->
<!-- return false;-->
<!-- });-->
<!-- // 当某个组件失去焦点调用校验方法-->
<!-- $("#username").blur(checkUsername);-->
<!-- $("#password").blur(checkPassword);-->
<!-- $("#email").blur(checkEmail);-->
<!-- $("#tel").blur(checkTel);-->
<!-- $("#name").blur(checkName);-->
<!-- $("#check_code").blur(checkCode);-->
<!-- $("#birthday").blur(checkBirthday);-->
<!-- });-->
<!-- // 校验用户名-->
<!-- function checkUsername(){-->
<!-- // 获取用户名-->
<!-- let username = $("#username").val();-->
<!-- // 定义正则表达式-->
<!-- let reg_username=/^\w{8,20}$/; // 8到20个字符,只能是字母,数字,下划线-->
<!-- // 判断给出提示信息-->
<!-- let flag = reg_username.test(username);-->
<!-- if(flag){-->
<!-- // 用户名合法-->
<!-- $("#username").css("border","1px solid green");-->
<!-- }else {-->
<!-- // 用户名不合法,红色边框提示-->
<!-- $("#username").css("border","1px solid red");-->
<!-- }-->
<!-- return flag;-->
<!-- }-->
<!-- // 校验密码-->
<!-- function checkPassword(){-->
<!-- // 获取密码-->
<!-- let password = $("#password").val();-->
<!-- // 定义正则表达式-->
<!-- let reg_password=/^\w{8,20}$/; // 8到20个字符-->
<!-- // 判断给出提示信息-->
<!-- let flag = reg_password.test(password);-->
<!-- if(flag){-->
<!-- // 密码合法-->
<!-- $("#password").css("border","1px solid green");-->
<!-- }else {-->
<!-- // 密码不合法,红色边框提示-->
<!-- $("#password").css("border","1px solid red");-->
<!-- }-->
<!-- return flag;-->
<!-- }-->
<!-- // 校验邮箱-->
<!-- function checkEmail(){-->
<!-- // 获取邮箱-->
<!-- let email = $("#email").val();-->
<!-- // 定义正则表达式-->
<!-- let reg_email=/^\w+@\w+\.\w+$/;-->
<!-- // 判断并给出提示信息-->
<!-- let flag = reg_email.test(email);-->
<!-- if(flag){-->
<!-- // 邮箱合法-->
<!-- $("#email").css("border","1px solid green");-->
<!-- }else {-->
<!-- // 邮箱不合法,红色边框提示-->
<!-- $("#email").css("border","1px solid red");-->
<!-- }-->
<!-- return flag;-->
<!-- }-->
<!-- // 校验手机号-->
<!-- function checkTel(){-->
<!-- // 获取手机号-->
<!-- let tel = $("#tel").val();-->
<!-- // 定义正则表达式-->
<!-- let reg_tel=/^1[3-9]\d{9}$/; // 11个数字-->
<!-- // 判断并给出提示信息-->
<!-- let flag = reg_tel.test(tel);-->
<!-- if(flag){-->
<!-- // 手机号合法-->
<!-- $("#tel").css("border","1px solid green");-->
<!-- }else {-->
<!-- // 手机号不合法,红色边框提示-->
<!-- $("#tel").css("border","1px solid red");-->
<!-- }-->
<!-- return flag;-->
<!-- }-->
<!-- // 校验姓名-->
<!-- function checkName(){-->
<!-- // 获取姓名-->
<!-- let name = $("#name").val();-->
<!-- // 定义正则表达式-->
<!-- let reg_name=/^[a-zA-Z]\w+$/; // 必须以字母开头-->
<!-- // 判断并给出提示信息-->
<!-- let flag = reg_name.test(name);-->
<!-- if(flag){-->
<!-- // 姓名格式正确-->
<!-- $("#name").css("border","1px solid green");-->
<!-- }else {-->
<!-- // 姓名格式不正确,红色边框提示-->
<!-- $("#name").css("border","1px solid red");-->
<!-- }-->
<!-- return flag;-->
<!-- }-->
<!-- // 校验验证码-->
<!-- function checkCode(){-->
<!-- // 获取验证码-->
<!-- let check_code = $("#check_code").val();-->
<!-- // 判断是否为空-->
<!-- let flag = check_code==="";-->
<!-- if(!flag){-->
<!-- // 验证码为不空-->
<!-- $("#check_code").css("border","1px solid green");-->
<!-- }else {-->
<!-- // 验证码为空,红色边框提示-->
<!-- $("#check_code").css("border","1px solid red");-->
<!-- }-->
<!-- return !flag;-->
<!-- }-->
<!-- // 校验生日-->
<!-- function checkBirthday(){-->
<!-- // 获取生日-->
<!-- let birthday = $("#birthday").val();-->
<!-- // 判断是否为空-->
<!-- let flag = birthday==="";-->
<!-- if(!flag){-->
<!-- // 生日为不空-->
<!-- $("#birthday").css("border","1px solid green");-->
<!-- }else {-->
<!-- // 生日为空,红色边框提示-->
<!-- $("#birthday").css("border","1px solid red");-->
<!-- }-->
<!-- return !flag;-->
<!-- }-->
<!-- </script>-->
</head>
<body>
<div class="div1">
<form method="post" id="registerForm">
<!--创建表格-->
<table>
<!--第一行-->
<tr>
<td>
<label for="username" class="label">用户名</label>
</td>
<td>
<input type="text" class="cls" name="username" placeholder="请输入用户名" id="username">
</td>
</tr>
<!--第二行-->
<tr>
<td>
<label for="password" class="label">密码</label>
</td>
<td>
<input type="password" class="cls" name="password" placeholder="请输入密码" id="password">
</td>
</tr>
<!--第三行-->
<tr>
<td>
<label for="tel" class="label">手机号</label>
</td>
<td>
<input type="text" class="cls" name="tel" placeholder="请输入手机号" id="tel">
</td>
</tr>
<!--第四行-->
<tr>
<td>
<label for="email" class="label">Email</label>
</td>
<td>
<input type="email" class="cls" name="email" placeholder="请输入邮箱" id="email">
</td>
</tr>
<!--第五行-->
<tr>
<td>
<label for="name" class="label">姓名</label>
</td>
<td>
<input type="text" class="cls" name="name" placeholder="请输入姓名" id="name">
</td>
</tr>
<!--第六行-->
<tr>
<td>
<label class="label">性别</label>
</td>
<td>
<label class="cls">
<input type="radio" name="gender" value="male" checked>男
<input type="radio" name="gender" value="female" >女
</label>
</td>
</tr>
<!--第七行-->
<tr>
<td>
<label class="label">出生日期</label>
</td>
<td>
<label>
<input type="date" class="cls" name="birthday" id="birthday" placeholder="年/月/日">
</label>
</td>
</tr>
<!--第七行-->
<tr>
<td>
<label class="label">验证码</label>
</td>
<td>
<label class="cls1">
<input type="text" name="check_code" id="check_code">
<img src="#" id="check">
<a href="" id="change">看不清?换一张</a>
</label>
</td>
</tr>
<!--第九行-->
<tr id="tr">
<td colspan="2">
<input type="submit" value="注册" id="sub">
</td>
</tr>
</table>
</form>
</div>
</body>
</html>
servlet如下
package com.travel.servlet;
import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException;
//@WebServlet("/registerUserServlet")
public class RegisterUserServlet extends HttpServlet {
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.setContentType("text/html;charset=utf-8");
System.out.println("hello");
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
this.doPost(req,resp);
}
}