Java 使用tomcat server 8.0的web.xml存在问题
我制作了一个简单的tomcat servlet,完全遵循这一点 我创建了一个名为XmlServlet的类,它处理简单的GET和POST请求 这是我的班级: 第一包:Java 使用tomcat server 8.0的web.xml存在问题,java,xml,tomcat,servlets,Java,Xml,Tomcat,Servlets,我制作了一个简单的tomcat servlet,完全遵循这一点 我创建了一个名为XmlServlet的类,它处理简单的GET和POST请求 这是我的班级: 第一包: import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpSe
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class XmlServlet extends HttpServlet {
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
String UserName = request.getParameter("UserName");
String FullName = request.getParameter("FullName");
System.out.println("hello u" + UserName);
}
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
String UserName = request.getParameter("UserName");
String FullName = request.getParameter("FullName");
String location = request.getParameter("location");
String prof = request.getParameter("prof");
out.println("hello u from dpost" + UserName + "u full name" + FullName
+ "address" + location);
}
}
和Servlet:
package First;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class SimpleServlet
*/
@WebServlet(description = "My First One", urlPatterns = { "/SimpleServletPath" })
public class SimpleServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public SimpleServlet() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
}
还有我的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"
id="WebApp_ID" version="3.1">
<!--
<servlet>
<servlet-name>XmlServlet</servlet-name>
<servlet-class>First.Xmlservlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>XmlServlet</servlet-name>
<url-pattern>/SimpleServletPath</url-pattern>
</servlet-mapping>
-->
</web-app>
and i create simple html page to represent this
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<form method="get" action="SimpleServletPath">
user name<input name="UserName" /> full name<input name="FullName" />
<br>
Work <input type="radio" name="prof" value="developer">developer</input>
<input type="radio" name="prof" value="IT">IT</input>
<select name="location" multiple size=3 >
<option value="here">here</option>
<option value="home">home</option>
<option value="school">school</option>
<option value="football">football</option>
<option value="chelsea">Chelsea</option>
</select>
</br>
<input type="Submit" />
</form>
</body>
</html>
我无法从HTML页面获取任何数据。一切似乎都很好,
但是我得到一个关于web.xml的错误。
有人能帮我检查一下servlet、class和web.xml,告诉我问题出在哪里吗?所以,当你在HTML页面上提交时,它会转到servlet,你会得到一个空白页面,对吗?好的,这是因为servlet的doGet方法中没有任何内容。请注意,表单操作是SimpleServletPath而不是XmlServlet。但是等等,情况变得更糟了!在SimpleServlet java文件中,使用注释将路径映射到SimpleServletPath。但接下来还要将第二个servlet,XmlServlet映射到同一路径!使用web.xml。。。。所以这真是一团糟。也许由于双重映射,您实际上得到了一个错误页面
因此,要解决这个问题,请将每个servlet映射到它自己的URL,而不是同时映射到同一URL。然后确保从HTML表单中实际提交到的servlet实际上会向响应打印一些内容。另外,决定是否要将servlet映射到带有注释的URL或web.xml,而不是将这两种方法混合使用也是一个好主意。我想您尝试了这一方法,但没有对web.xml中的servlet信息进行注释?假设没有它,我忘了删除它,因为我提到的问题,所以我输入了代码 @CoqPwner@Ascalonianweb.xml在html页面上无法获取任何数据的问题是类不是servlet,所以我只有一个servelt并将该类映射到该url,很抱歉,我只是java EE和servlets的初学者,我也像教程@developerwjk@AhmedMahrous那样做,如果你这么认为,那么你真的很困惑,既然您不通过web.xml映射常规类,而且您的java文件说公共类XmlServlet扩展了HttpServlet:如果HttpServlet不是servlet,为什么要扩展它?也许你应该考虑使用java Web应用程序类或买一本书。不是所有的东西都可以通过观看youtube视频来学习。我也像那个教程一样做了,所以为什么它与他而不是我一起工作?@Ahmedmahrus视频无法学习如何编码。这对他有效,而对你无效,因为很明显,这比他表现出来的更有意义。或者你错过了什么。我不知道我只是一步一步地模仿他,我想跟着教程走,这个问题现在摆在我面前,我能为此做些什么