0

我有两台服务器,我可以从我服务器的 jsp 调用另一台服务器的 jsp。

像下面的代码。第一个服务器 JSP。

    <%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
    <body>
        <h1>Hello World!</h1>
        <form method="post" action="http://localhost:8080/Second_App/index.jsp">
            Name : <input type="text" name="name"/>
            Surname : <input type="text" name="surname"/>
            <input type="submit" value="Submit"/>
        </form>
    </body>
</html>

当我单击提交时,控件将进入第二个服务器,它将名称作为参数并将其放入我的第二个服务器的 jsp。

第二个服务器 JSP。

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
    <body>
        <h1>Hello World!</h1>
        <% 
            String name = (String) request.getParameter("name");
            String surName = (String) request.getParameter("surname");
        %>
        Name    : <%= name %>
        Surname : <%= surName %>
    </body>
</html>

我想使用 Servlet 做完全相同的事情。

我尝试使用 Servlet 的 Redirect,我的控件将转到第二个服务器,但由于 Redirect,它不会使用“name”peramater。

我尝试使用 Forward 但它也无法正常工作,因为它在第一台服务器中找到了该 jsp。

RequestDispatcher dispatcher = request.getRequestDispatcher("http://server2/app1/index.jsp");
        dispatcher.forward(request, response);

我担心的是 JSP 是 Servlet。如果这是使用 jsp 完成的,则意味着应该有某种方法可以使用 servlet 来完成。

谢谢。

4

4 回答 4

1

Send you form parameter from Servlet in this way. Next JSP will get name parameter from request.

RequestDispatcher dispatcher = request.getRequestDispatcher("http://server2/app1/index.jsp?name=setUserNameHereFromRequest");
        dispatcher.forward(request, response);

With sendRedirect

response.sendRedirect("http://server2/app1/index.jsp?name=setUserNameHereFromRequest");
于 2013-07-25T09:54:56.653 回答
0

您可以使用 HTTP 307 临时重定向重定向发布请求。

response.setStatus(HttpServletResponse.SC_TEMPORARY_REDIRECT );  
response.addHeader("Location","target/example.jsp");

您可以在此处找到有关此主题的更多详细信息:

Response.Redirect 使用 POST 而不是 Get?

于 2013-07-25T08:44:41.990 回答
0

您可以使用 response.sendRedirect("url_where_to_redirect");

在这里,当前请求将结束,并将重定向到另一个上下文。

但是在这里您可以调用一个外部服务器 url 就可以了。我认为您需要根据您的请求显示来自第二台服务器的页面以及当前页面中的 url。如果您需要,那么您应该使用一些代码来处理第二个服务器应用程序中的请求。

于 2013-07-25T07:08:50.940 回答
0

你可以试试sendRedirect()

此方法用于将客户端请求重定向到其他位置以进行进一步处理,新位置在不同的服务器或不同的上下文中可用。Web 容器处理此问题并使用浏览器传输请求,并且此请求在浏览器中作为新请求可见。有时这也称为客户端重定向。

response.sendRedirect("http://server2/app1/index.jsp"); 
于 2013-07-25T07:09:14.033 回答