Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/343.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 错误状态404:源服务器未找到当前表示_Java_Tomcat_Servlets - Fatal编程技术网

Java 错误状态404:源服务器未找到当前表示

Java 错误状态404:源服务器未找到当前表示,java,tomcat,servlets,Java,Tomcat,Servlets,我有一个netbeans项目,其结构如下。当我访问localhost:8080/Project/Song时,出现以下错误: HTTP状态404 描述:源服务器未找到目标资源的当前表示形式 您知道问题在哪里以及如何纠正吗 项目结构: Project Web Pages META-INF WEB-INF web.xml lib jstl-1

我有一个netbeans项目,其结构如下。当我访问localhost:8080/Project/Song时,出现以下错误:

HTTP状态404

描述:源服务器未找到目标资源的当前表示形式

您知道问题在哪里以及如何纠正吗

项目结构:

 Project
        Web Pages
            META-INF
            WEB-INF
               web.xml
               lib
                  jstl-1.2.jar 
           songs.jsp

        Source Packages
            data
                Song.java
package data;    
import org.apache.jena.base.Sys;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.ArrayList;


@WebServlet(name = "/Song")
public class Song extends HttpServlet {
    /*protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    }*/

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        QueryManager qm = new QueryManager();
        ArrayList<ArrayList<String>> result = qm.getSongs();
        qm.closeConnections();

        request.setAttribute("result", result.get(0));
        request.setAttribute("id", result.get(1));
        RequestDispatcher view=request.getRequestDispatcher("songs.jsp");
        view.forward(request,response);
    }

    public void init(){
        System.out.println("Songs page");
    }
}
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
  <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
    <html>
      <head>
        <link href="style.css" rel="stylesheet">
        <title>Songs List</title>
      </head>
      <body>

        <div id="songs">

          <c:forEach items="${result}" var="item" varStatus="status">
            <a href="/SongPage?name=${result[status.index].replace(" ","+")}&id=${id[status.index]}"> ${result[status.index]} </a> <br />
          </c:forEach>
        </div>

      </body>
    </html>
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
         version="3.1">

  <servlet>
    <servlet-name>Song</servlet-name>
    <servlet-class>Song</servlet-class>
  </servlet>

  <servlet-mapping>
    <servlet-name>Song</servlet-name>
    <url-pattern>/Song</url-pattern>
  </servlet-mapping>
Song.java:

 Project
        Web Pages
            META-INF
            WEB-INF
               web.xml
               lib
                  jstl-1.2.jar 
           songs.jsp

        Source Packages
            data
                Song.java
package data;    
import org.apache.jena.base.Sys;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.ArrayList;


@WebServlet(name = "/Song")
public class Song extends HttpServlet {
    /*protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    }*/

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        QueryManager qm = new QueryManager();
        ArrayList<ArrayList<String>> result = qm.getSongs();
        qm.closeConnections();

        request.setAttribute("result", result.get(0));
        request.setAttribute("id", result.get(1));
        RequestDispatcher view=request.getRequestDispatcher("songs.jsp");
        view.forward(request,response);
    }

    public void init(){
        System.out.println("Songs page");
    }
}
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
  <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
    <html>
      <head>
        <link href="style.css" rel="stylesheet">
        <title>Songs List</title>
      </head>
      <body>

        <div id="songs">

          <c:forEach items="${result}" var="item" varStatus="status">
            <a href="/SongPage?name=${result[status.index].replace(" ","+")}&id=${id[status.index]}"> ${result[status.index]} </a> <br />
          </c:forEach>
        </div>

      </body>
    </html>
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
         version="3.1">

  <servlet>
    <servlet-name>Song</servlet-name>
    <servlet-class>Song</servlet-class>
  </servlet>

  <servlet-mapping>
    <servlet-name>Song</servlet-name>
    <url-pattern>/Song</url-pattern>
  </servlet-mapping>
包数据;
导入org.apache.jena.base.Sys;
导入javax.servlet.RequestDispatcher;
导入javax.servlet.ServletException;
导入javax.servlet.annotation.WebServlet;
导入javax.servlet.http.HttpServlet;
导入javax.servlet.http.HttpServletRequest;
导入javax.servlet.http.HttpServletResponse;
导入java.io.IOException;
导入java.util.ArrayList;
@WebServlet(name=“/Song”)
公共类Song扩展了HttpServlet{
/*受保护的void doPost(HttpServletRequest请求、HttpServletResponse响应)引发ServletException、IOException{
}*/
受保护的void doGet(HttpServletRequest请求,HttpServletResponse响应)抛出ServletException,IOException{
QueryManager qm=新的QueryManager();
ArrayList
web xml:

 Project
        Web Pages
            META-INF
            WEB-INF
               web.xml
               lib
                  jstl-1.2.jar 
           songs.jsp

        Source Packages
            data
                Song.java
package data;    
import org.apache.jena.base.Sys;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.ArrayList;


@WebServlet(name = "/Song")
public class Song extends HttpServlet {
    /*protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    }*/

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        QueryManager qm = new QueryManager();
        ArrayList<ArrayList<String>> result = qm.getSongs();
        qm.closeConnections();

        request.setAttribute("result", result.get(0));
        request.setAttribute("id", result.get(1));
        RequestDispatcher view=request.getRequestDispatcher("songs.jsp");
        view.forward(request,response);
    }

    public void init(){
        System.out.println("Songs page");
    }
}
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
  <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
    <html>
      <head>
        <link href="style.css" rel="stylesheet">
        <title>Songs List</title>
      </head>
      <body>

        <div id="songs">

          <c:forEach items="${result}" var="item" varStatus="status">
            <a href="/SongPage?name=${result[status.index].replace(" ","+")}&id=${id[status.index]}"> ${result[status.index]} </a> <br />
          </c:forEach>
        </div>

      </body>
    </html>
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
         version="3.1">

  <servlet>
    <servlet-name>Song</servlet-name>
    <servlet-class>Song</servlet-class>
  </servlet>

  <servlet-mapping>
    <servlet-name>Song</servlet-name>
    <url-pattern>/Song</url-pattern>
  </servlet-mapping>

歌曲
歌曲
歌曲
/歌

您正在使用两种servlet映射方法。请使用其中一种。注释方法或web.xml从web.xml文件中删除servlet映射。表示删除下面的部分

<servlet>
    <servlet-name>Song</servlet-name>
    <servlet-class>Song</servlet-class>
  </servlet>

  <servlet-mapping>
    <servlet-name>Song</servlet-name>
    <url-pattern>/Song</url-pattern>
  </servlet-mapping>
用这个

  @WebServlet(name = "Song", urlPatterns = {"/Song"})

尝试将request.getRequestDispatcher(“songs.jsp”);更改为request.getRequestDispatcher(“/songs.jsp”);谢谢,但也不起作用!您需要映射WebServlet和xml吗?尝试删除WebServlet..tomcat的哪个版本?歌曲类名应该是packagename.ClassName版本是8.5。servlet名称中的projectdata/Song显示错误无法启动应用程序上下文路径。谢谢,但问题仍然存在。似乎是404错误。谢谢,它与@WebServlet(name=“Song”,urlPatterns={”/Song“}一起工作。