在java中执行JSP

在java中执行JSP,java,jsp,tomcat,web-applications,Java,Jsp,Tomcat,Web Applications,我试图通过URL连接在本地机器上执行JSP,但我似乎无法让它执行,我认为可能是java找不到JSP,但我似乎无法找出原因,因为JSP的URL看起来很好,有人知道它为什么不执行吗?下面是我的代码片段和webapp结构 谢谢 URL url = new URL("http://127.0.0.1/folder1/folder2/folder3/test.jsp"); URLConnection connection = url.openConnection();

我试图通过URL连接在本地机器上执行JSP,但我似乎无法让它执行,我认为可能是java找不到JSP,但我似乎无法找出原因,因为JSP的URL看起来很好,有人知道它为什么不执行吗?下面是我的代码片段和webapp结构

谢谢

       URL url = new URL("http://127.0.0.1/folder1/folder2/folder3/test.jsp");
       URLConnection connection = url.openConnection();
       connection.setDoOutput(true);
       OutputStreamWriter out = new OutputStreamWriter(connection.getOutputStream());
       out.write("id=" + id);
       out.close();

       BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream(), "UTF-8"));
       String output;
       StringBuilder sb = new StringBuilder();
       boolean started = false;

       while ((output = in.readLine()) != null) {
           if (!output.trim().equals("")) {
                started = true;
           }
            if (started) {
                sb.append(output);
                sb.append("\r\n");
            }
        }
        in.close();
        System.out.println(sb.toString());
我的Webapp的结构与下面的类似

 webapp
    /WEB-INF
         /classes
         web.xml
    /folder1
       /folder2
          /folder3
             test.jsp

我认为你缺少你的申请名称。如果您在tomcat内运行应用程序,则默认端口为8080

http://127.0.0.1:<port>/<web-app-name>/folder1/folder2/folder3/test.jsp
http://127.0.0.1://folder1/folder2/folder3/test.jsp

我认为您缺少应用程序名称。如果您在tomcat内运行应用程序,则默认端口为8080

http://127.0.0.1:<port>/<web-app-name>/folder1/folder2/folder3/test.jsp
http://127.0.0.1://folder1/folder2/folder3/test.jsp

鉴于我对您收到的故障消息知之甚少,我在下面给出了一种故障排除方法

  • 我会尝试访问其他网页,而不是您要访问的URL 假如只是为了证明你的URLConnection方法是正确的 这是一个访问JSP文件的问题

  • 查看您的请求返回的实际消息/页面。 是404页吗?如果是这样,那么你的URL是关闭的

  • 并确保您可以在浏览器中直接访问该URL


  • 我在下面给出了一种故障排除方法,因为我不太了解您收到的故障消息

  • 我会尝试访问其他网页,而不是您要访问的URL 假如只是为了证明你的URLConnection方法是正确的 这是一个访问JSP文件的问题

  • 查看您的请求返回的实际消息/页面。 是404页吗?如果是这样,那么你的URL是关闭的

  • 并确保您可以在浏览器中直接访问该URL


  • 我认为您可能打算执行以下操作(不包括输出部分):

    使用StringBuilder进行
    输出
    ——效率更高


    text.jsp是否应同时执行这两项操作:在表单中询问
    id
    ,并处理表单,然后不要使用:

    但是使用GET/POST不可知/不相关代码:

    String id = request.getParameter("id");
    if (id != null) {
        ... handle given id
        return;
    }
    ... show form
    

    因此,HTTP GET可以让您所做的工作正常运行。

    我认为您可能打算执行以下操作(不包括输出部分):

    使用StringBuilder进行
    输出
    ——效率更高


    text.jsp是否应同时执行这两项操作:在表单中询问
    id
    ,并处理表单,然后不要使用:

    但是使用GET/POST不可知/不相关代码:

    String id = request.getParameter("id");
    if (id != null) {
        ... handle given id
        return;
    }
    ... show form
    

    因此,HTTP GET you正在运行。

    问题原来是由于从
    **HTTP**/localhost/folder1/folder2/folder3/test.jsp
    重定向到
    **https**/localhost/folder1/folder2/folder3/test.jsp
    ,当我在浏览器中打开JSP时,这不是最简单的重定向,最令人恼火的是url。openConnection()似乎什么都没有发生

    问题原来是由于从
    **http**/localhost/folder1/folder2/folder3/test.jsp
    重定向到
    **https**/localhost/folder1/folder2/folder3/test.jsp
    ,这并不是我在浏览器中打开jsp时最容易重定向到spot的地方。非常恼人的是url.openConnection()好像什么都没发生一样

    当您将URL直接粘贴到浏览器中时,它会起作用吗?您会收到什么样的消息?您是否收到404或任何类型的HTTP错误代码?@Thihara JSP在web浏览器中运行良好。@Usman Mutawakil no URL连接就像什么都没有发生一样,没有错误,也没有来自JSP的打印消息来确认它是否正常工作。至少如果它抛出了一个错误,我不知道从哪里开始。当你将URL直接粘贴到浏览器中时,它能工作吗?你会收到什么样的消息?您是否收到404或任何类型的HTTP错误代码?@Thihara JSP在web浏览器中运行良好。@Usman Mutawakil no URL连接就像什么都没有发生一样,没有错误,也没有来自JSP的打印消息来确认它是否正常工作。至少如果它抛出了一个错误,我将不知道从何处开始。由于我在ROOT.xml中为Web应用设置了上下文路径,因此可以在没有应用名称的情况下访问我的Web应用,但我仍然尝试了您的方法。不幸的是,它不起作用。可以在没有应用名称的情况下从中访问我的Web应用,由于我在ROOT.xml中为webapp设置了上下文路径,但我仍然尝试了您的方法。不幸的是,它不起作用。没有任何影响。@JCS如果您在空行中忽略检查,会发生什么?也许就是这样。是为了跳过HTTP头行吗?没有任何区别。@JCS如果您在空行上漏掉检查,会发生什么?也许就是这样。是跳过HTTP头行吗?