servlets - Java Web 应用程序:无法从 jsp 页面启动 MVC 控制器 (Servlet) 类
问题描述
我正在创建一个简单的 Java Web 应用程序“注册表单”。我正在使用以下硬件和软件:机器:Amazon Linux 2 EC2 实例。Java 版本:1.8.0_282 Maven:3.6.3 Apache Tomcat:7.0.76 Servlet:3.1.0(在 pom.xml 组 ID:javax.servlet,artifactId:javax.servlet-api) 注意:我没有使用任何 IDE . 我正在使用 Linux vim 实用程序编写代码。
我按照以下步骤创建 Java Web 应用程序项目“注册表单”。
- 使用创建项目目录和 pom.xml
mvn archetype:generate -DgroupId=com -DartifactId=JavaWebApplication -DarchetypeArtifactId=maven-archetype-webapp -DarchetypeVersion=1.0 -DinteractiveMode=false
- 目录结构如下所示:
/home/ec2-user/javaProjects/JavaWebApplication
---src
------main
---------resources
---------java
------------com
---------------JavaWebApplication
------------------Beans
------------------Model
------------------Controller
---------------------guru_register.java
---------webapp
------------css
---------------myStyle.css
------------jsp
---------------register.jsp
------------WEB-INF
---------------web.xml
------------index.jsp
---pom.xml
- 我在 pom.xml 中添加了 servlet 依赖项
- 在 pom.xml、index.jsp、myStyle.css、register.jsp、guru_register.java、web.xml 中编写代码。代码如下所示。
- 当我执行“mvn clean package”时,它会成功构建项目。部署到 Tomcat 服务器后,它会正确显示 register.jsp 页面。填写数据并按下提交按钮后,它会抛出错误“HTTP Status 404 - /JavaWebApplication/jsp/guru_register”。我不明白为什么它在 /jsp 文件夹中查找 guru_register 页面。你能看看代码并帮助我找到问题吗?
注意:由于某些限制,我无法使用 Windows 操作系统和任何 IDE,因此我使用 Amazon Linux EC2 进行练习。谢谢!
代码:
pom.xml
<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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com</groupId>
<artifactId>JavaWebApplication</artifactId>
<packaging>war</packaging>
<version>1.0-SNAPSHOT</version>
<name>JavaWebApplication Maven Webapp</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.1</version>
<scope>test</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
</dependencies>
<build>
<finalName>JavaWebApplication</finalName>
</build>
</project>
索引.jsp
<html>
<tittle>Java Web Application</tittle>
<header>
<link rel="stylesheet" type="text/css" href="css/myStyle.css">
</header>
<body>
<ul>
<li><a href="http://23.20.111.62:8080/JavaWebApplication/jsp/register.jsp" class="active">SignUp</a></li>
<li><a href="#news">SignIn</a></li>
</ul>
</body>
</html>
我的样式.css
ul {
list-style-type: none;
margin: 0;
padding: 0;
overflow: hidden;
background-color: #333;
}
li {
float: left;
}
li a {
display: inline-block;
color: white;
text-align: center;
padding: 14px 16px;
text-decoration: none;
}
li a:hover {
background-color: #111;
}
.active {
background-color: red;
}
注册.jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Registration Form</title>
</head>
<body>
<h1>Register Here</h1>
<form method="post" action="guru_register">
<table style="with: 50%">
<tr>
<td>First Name</td>
<td><input type="text" name="first_name" /></td>
</tr>
<tr>
<td>Last Name</td>
<td><input type="text" name="last_name" /></td>
</tr>
<tr>
<td>UserName</td>
<td><input type="text" name="username" /></td>
</tr>
<tr>
<td>Password</td>
<td><input type="password" name="password" /></td>
</tr>
<tr>
<td>Address</td>
<td><input type="text" name="address" /></td>
</tr>
<tr>
<td>Contact No</td>
<td><input type="text" name="contact" /></td>
</tr></table>
<input type="submit" value="Submit" /></form>
</body>
</html>
guru_register.java
package com.JavaWebApplication.Controller;
import java.io.IOException;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class guru_register
*/
public class guru_register extends HttpServlet {
private static final long serialVersionUID = 1L;
public guru_register() {
super();
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
response.getWriter().append("Served at: ").append(request.getContextPath());
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
//PrintWriter out = response.getWriter();
// TODO Auto-generated method stub
String first_name = request.getParameter("first_name");
String last_name = request.getParameter("last_name");
String username = request.getParameter("username");
String password = request.getParameter("password");
String address = request.getParameter("address");
String contact = request.getParameter("contact");
System.out.println(first_name);
System.out.println(last_name);
System.out.println(username);
}
}
web.xml
<!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>guru_register</servlet-name>
<servlet-class>com.JavaWebApplication.Controller.guru_register</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>guru_register</servlet-name>
<url-pattern>/guru_register</url-pattern>
</servlet-mapping>
<display-name>Archetype Created Web Application</display-name>
</web-app>
解决方案
推荐阅读
- html - 打印预览(表格)上不显示边框
- unix - 根据起始字母过滤掉单词
- vue.js - 我将如何为可嵌入的 Vue 应用程序优化 SEO?
- laravel - 与 Laravel Jetstream 一起使用时,未编译 Tailwind 颜色
- firebase - 如何从卡上的 Firebase 检索数据并将数据提取到详细信息屏幕?
- docker - 如何要求用户登录才能推送到 docker 注册表?
- javascript - Fetch 返回 null 但页面刷新后返回对象。如何解决?
- javascript - 如何获取数组值并将其设置在我的内部 html 中?
- python - 以管理员身份启动后 Python 程序未运行
- c - 嵌入式 C 项目无法连接到 googleapis.com