Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用tomcat server 8.0的web.xml存在问题_Java_Xml_Tomcat_Servlets - Fatal编程技术网

Java 使用tomcat server 8.0的web.xml存在问题

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

我制作了一个简单的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.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视频无法学习如何编码。这对他有效,而对你无效,因为很明显,这比他表现出来的更有意义。或者你错过了什么。我不知道我只是一步一步地模仿他,我想跟着教程走,这个问题现在摆在我面前,我能为此做些什么