2013-07-25 3 views
0

У меня есть два сервера, и я могу вызвать jsp другого сервера из 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> 

Когда я нажимаю на Submit контроля будет идти на втором сервере будет принимать имя в качестве параметра и поместить его в JSP моего второго Server.

Второй сервер 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.

Я попытался с перенаправлением Сервлета, мой элемент управления перейдет на второй сервер, но из-за перенаправления он не будет принимать «имя» peramater.

Я пробовал с форвардом, но он также не работает, потому что он находит этот jsp на первом сервере.

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

Моя забота о JSP - это сервлет. Если это делается с помощью jsp, это означает, что для его выполнения должен быть какой-то способ.

Спасибо.

+0

Append параметры запроса в то время как перенаправлять! – NINCOMPOOP

+0

как this request.setAttribute ("jsonString", "This Is Json String"); response.sendRedirect ("локальный: 8080/WebApplication4/index.jsp"); ? – KSHiTiJ

+0

Нет как часть строки запроса URL. – NINCOMPOOP

ответ

0

Вы можете использовать response.sendRedirect ("url_where_to_redirect");

Здесь текущий запрос будет завершен, и он будет перенаправлен в другой контекст.

Но здесь вы можете вызвать один внешний URL-адрес сервера, вот и все. Я думаю, вам нужно показать страницу со второго сервера в соответствии с вашим запросом с URL-адресом с вашей текущей страницы. Если вам это нужно, вы должны использовать некоторый код для обработки запроса во втором серверном приложении.

+0

Во втором JSP я использую следующий код для получения запроса Peramater. <% Строка jsonString1 = (String) request.getAttribute ("jasonString"); String jsonString2 = (String) request.getParameter ("jasonString"); % Json String <% = jsonString1%> <% = jsonString2%> – KSHiTiJ

+0

Как ваш URL-адрес перенаправления? – pikrut

+0

Пожалуйста, проверьте мой первый JSP. Мне нужен точный код в Servlet. Значит, что первый jsp выполняет работу, которую я хочу сделать в Servlet. – KSHiTiJ

0

Вы можете попробовать с sendRedirect()

Этот метод используется для перенаправления запроса клиента в другое место для дальнейшей обработки, новое расположение доступно на другом сервере или ином контексте. Веб-контейнер обрабатывает это и передает запрос с помощью браузера, и этот запрос отображается в браузере в качестве нового запроса. Некоторое время это также называется перенаправлением на стороне клиента.

response.sendRedirect("http://server2/app1/index.jsp"); 
+0

Это означает, что если я буду использовать следующий код, тогда я получу запрос peramater в JSP. request.setAttribute ("jsonString", "This Is Json String"); response.sendRedirect ("http: // localhost: 8080/WebApplication4/index.jsp"); – KSHiTiJ

+0

Нет, вы не можете установить атрибут в запросе и получить значение при перенаправлении. Потому что это новый запрос, если вы используете метод перенаправления. – pikrut

0

Вы можете перенаправить почтовые запросы, используя временную переадресацию HTTP 307.

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

Вы можете найти более подробную информацию по этой теме здесь:

Response.Redirect with POST instead of Get?

1

Отправить Вы формируете параметр из сервлета таким образом. Следующий JSP получит name parameter по запросу.

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

С sendRedirect

response.sendRedirect("http://server2/app1/index.jsp?name=setUserNameHereFromRequest"); 
+0

сэр Я читал, что диспетчер запросов не может выйти за пределы веб-приложения. Для этого нам нужно использовать sendRedirect. Вы уверены, что ваше решение работает? –

+0

Да, я уверен. Вы можете добавить параметр, как я. Ответ отредактирован. –

+0

вот вверху вверх –

Смежные вопросы