1

我试图通过建立一个 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
4

4 回答 4

1

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

URL url = new URL("http://127.0.0.1/folder1/folder2/folder3/test.jsp?id=" + id);

使用 StringBuilder output- 它更有效。


text.jsp 应该两者都做:在表单中请求id并处理表单,然后不要使用

if (request.getMethod().equals("POST")) {
    String id = request.getParameter("id");
    ... handle given id
    return;
}
... show form

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

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

这样你正在做的 HTTP GET 工作。

于 2013-08-07T09:11:17.457 回答
0

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

http://127.0.0.1:<port>/<web-app-name>/folder1/folder2/folder3/test.jsp
于 2013-08-07T08:23:58.553 回答
0

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

  1. 我会尝试访问您提供的 URL 以外的其他网页;只是为了证明您的 URLConnection 方法是正确的,并且这是访问 JSP 文件的问题。

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

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

于 2013-08-07T09:02:50.373 回答
0

问题原来是由于从**http**://localhost/folder1/folder2/folder3/test.jspto**https**://localhost/folder1/folder2/folder3/test.jsp的重定向,当我在浏览器中打开 JSP 时,这并不是最容易发现的重定向,非常烦人的是 url.openConnection() 似乎没有任何事情发生。

于 2013-08-07T18:13:10.130 回答