请求的资源不可用于默认jsp的输入

请求的资源不可用于默认jsp的输入,jsp,servlets,Jsp,Servlets,请求的资源不可用 我在EclipseforJavaEE中有一个作为动态Web应用程序的项目。一切都已设置,默认页面加载正确。上面有一张表格,上面有输入。当我点击它执行基于输入的操作时,我得到一个错误。启动servlet应该读取并处理输入,然后调用servlet类1中的doPost。然后doPost调用sort和outputSort函数。outputSort函数写入.jsp文件,然后返回doPost,doPost应该显示它。这是我的第一个JavaEE应用程序,所以我肯定我做错了一些事情。我正在将一

请求的资源不可用

我在EclipseforJavaEE中有一个作为动态Web应用程序的项目。一切都已设置,默认页面加载正确。上面有一张表格,上面有输入。当我点击它执行基于输入的操作时,我得到一个错误。启动servlet应该读取并处理输入,然后调用servlet类1中的doPost。然后doPost调用sort和outputSort函数。outputSort函数写入.jsp文件,然后返回doPost,doPost应该显示它。这是我的第一个JavaEE应用程序,所以我肯定我做错了一些事情。我正在将一个完整的Java桌面应用程序移植到web应用程序。我有更多的函数和类变量,但我在这里只展示了相关的函数和类变量。如果我能让这个工作,其余的将很容易移植整个应用程序。这是我的应用程序的基础,所以我想让它首先工作

以下是错误:

HTTP Status 404 - /MyProject/Startup

type Status report

message /MyProject/Startup

description The requested resource is not available.

Apache Tomcat/7.0.47
这是我的相关代码。我认为问题在于Class1中的readnums函数打开并读取输入文本文件。我想没有人找到它。我应该把它放在哪里,如何在代码中访问它?在此方面的任何帮助都将不胜感激。提前谢谢

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
  <display-name>MyProject</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>

  <servlet>
   <display-name>Startup</display-name>
   <servlet-name>Startup</servlet-name>
   <servlet-class>com.MyProject.Startup</servlet-class>
   <load-on-startup>1</load-on-startup>
</servlet>
  <servlet-mapping>
    <servlet-name>Startup</servlet-name>
    <url-pattern>/MyProject*</url-pattern>
 </servlet-mapping>

</web-app>
第一类

package com.MyProject;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.File;
import java.io.FileInputStream;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


public class CLass1 extends HttpServlet {


    String errorMessage;
    String sortInputText;
    String PB_operation;


    private static final long serialVersionUID = 1L;

    protected void doPost(HttpServletRequest req,
         HttpServletResponse response) throws ServletException, IOException {


        if (PB_operation == "sorts") {

            readnums();

            if (!errorMessage.isEmpty())  {


                req.getRequestDispatcher("/errormessage1.jsp").forward(req,response);

                return;


            }

            else {

                sort();

                outputSort();

                req.getRequestDispatcher("/class1sorts.jsp").forward(req,response);

            }

        }

      }


    void readnums() throws FileNotFoundException, IOException {

        int i,j;
        String Temp;
        String [] Temp2 = new String [80];

        getClass().getResource("/myfile.txt");

        String path;

        // Read the numbers

        inputfilefound = true;

        path = "/myfile.txt";

            File file_check = new File (path);

        if (!file_check.exists()) {

                errorMessage = "Input file not found";

            return;

        }


        File f = new File(path);

        FileReader fr = new FileReader(f);

        BufferedReader br = null;

        br = new BufferedReader (fr);

        while ((Temp = br.readLine()) != null) {

        // Read data into variables

        }

        br.close();
    }

}
编辑: 类1中的outputSort方法。方法中未定义的所有变量都是在类中定义的,但我没有在这里列出它们,或者其他地方列出它们,以尽量避免内容过于冗长

void outputSort () throws IOException  {

        String path, Temp;
        int i;

        path = "Class1sorts.jsp";

        BufferedWriter bw = null;

        bw = new BufferedWriter(new FileWriter(new File(path), false));

        Temp = "<%@ page language=\"java\" contentType=\"text/html; charset=ISO-8859-1\" pageEncoding=\"UTF-8\"%>";
        bw.write(Temp);
        bw.newLine();

        Temp = "<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">";
        bw.write(Temp);
        bw.newLine();

        Temp = "<html>";
        bw.write(Temp);
        bw.newLine();

        Temp = "<head>";
        bw.write(Temp);
        bw.newLine();

        Temp = "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=ISO-8859-1\">";
        bw.write(Temp);
        bw.newLine();

        Temp = "<title>MyProject</title>";
        bw.write(Temp);
        bw.newLine();

        Temp = "</head>";
        bw.write(Temp);
        bw.newLine();

        Temp = "<body>";
        bw.write(Temp);
        bw.newLine();

        Temp = "<h2>The sorted totals for the range selected</h2>";
        bw.write(Temp);
        bw.newLine();

        Temp = "<form action=\"Startup\" method=\"Post\">";
        bw.write(Temp);
        bw.newLine();

        Temp = "Go back to prevoius page: ";
        bw.write(Temp);
        bw.newLine();

        Temp = "<br><br>";
        bw.write(Temp);
        bw.newLine();

        Temp = " <input type=\"submit\" name=\"action\" value=\"Go Back to prvious page\">";
        bw.write(Temp);
        bw.newLine();

        Temp = "</form>";
        bw.write(Temp);
        bw.newLine();

        Temp = "<pre>";
        bw.write(Temp);
        bw.newLine();

        Temp = "Rank     Numbers     Totals       XNumber     Totals";
        bw.write(Temp);
        bw.newLine();
        bw.newLine();

        for (i = 1; i <= NUMLIMIT; i++)  {

            Temp =  Integer.toString(i);

            if (i < 10)

                Temp += " ";

            Temp +=  Integer.toString(sortnums[i][1]) + "     ";
            Temp +=  Integer.toString(sortnums[i][2]) + "     ";

            if (i <= XLIMIT) {

                Temp +=  Integer.toString(sortxball[i][1]) + "     ";
                Temp +=  Integer.toString(sortxball[i][2]) + "     ";

            }

            bw.write(Temp);
            bw.newLine();


        }

        Temp = "</pre>";

        Temp = "</body>";

        Temp = "</html>";

    bw.close();

}
void outputSort()引发IOException{
字符串路径,临时;
int i;
path=“classsorts.jsp”;
BufferedWriter bw=null;
bw=新的BufferedWriter(新的FileWriter(新文件(路径),false));
温度=”;
HTTP Status 404 - /MyProject/Startup
写入(临时); 换行符(); 温度=”;
HTTP Status 404 - /MyProject/Startup
写入(临时); 换行符(); 温度=”;
HTTP Status 404 - /MyProject/Startup
写入(临时); 换行符(); 温度=”;
HTTP Status 404 - /MyProject/Startup
写入(临时); 换行符(); 温度=”;
HTTP Status 404 - /MyProject/Startup
写入(临时); 换行符(); Temp=“MyProject”;
HTTP Status 404 - /MyProject/Startup
写入(临时); 换行符(); 温度=”;
HTTP Status 404 - /MyProject/Startup
写入(临时); 换行符(); 温度=”;
HTTP Status 404 - /MyProject/Startup
写入(临时); 换行符(); Temp=“所选范围的排序总数”;
HTTP Status 404 - /MyProject/Startup
写入(临时); 换行符(); 温度=”;
HTTP Status 404 - /MyProject/Startup
写入(临时); 换行符(); Temp=“返回上一页:”;
HTTP Status 404 - /MyProject/Startup
写入(临时); 换行符(); Temp=“

”;
HTTP Status 404 - /MyProject/Startup
写入(临时); 换行符(); 温度=”;
HTTP Status 404 - /MyProject/Startup
写入(临时); 换行符(); 温度=”;
HTTP Status 404 - /MyProject/Startup
写入(临时); 换行符(); 温度=”;
HTTP Status 404 - /MyProject/Startup
写入(临时); 换行符(); Temp=“排名总数XNumber总数”;
HTTP Status 404 - /MyProject/Startup
写入(临时); 换行符(); 换行符(); 对于(i=1;i 此错误告诉您,它找不到根据请求URL映射的资源。 加上

/我的项目*

这意味着它被映射到以下对象:

http://HOST:PORT/PROJECTNAME/MyProject

其中PROJECTNAME是部署它的目录名或您设置的上下文

如果希望将servlet映射为:

http://HOST:PORT/PROJECTNAME/STARTUP

您应该将其映射为:

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

启动
/*


启动
/启动

我通过对doGet和doPost使用“@Override”并将我的Sartup.jsp放在WEB-INFO文件夹中解决了我的问题。下面是代码:


编辑:显然Startup.jsp也必须在WebContent文件夹中。这是为了让它可以在web.xml的欢迎文件列表中看到。

你的项目目录结构是什么?我没有资源文件夹。我应该添加一个吗?目录结构在原始帖子的编辑中。谢谢回复。请参阅我的回答OK我会试试的。谢谢你的回复。我的项目名称请参见对我原始帖子的编辑。是的,根据当前的项目层次结构和servlet映射,这样做:这将调用servlet的doGet方法,但当你点击表单时,它将调用doPost,正如你在我的文章中提到的那样,我将更改为你列出的第二个选项…/Startup…b但我无法访问localhost上的Startup。我可以运行Startup.jsp,但我猜当我单击按钮输入表单时,它找不到Startup servlet。我猜这一直都是问题所在。如何解决此问题?我收到有关服务器冲突端口的弹出错误。说它们有时正在使用中…这可能相关吗?首先,您应该停止我是雄猫。