Лучшее, что вы можете сделать, это отправить свой собственный сервлет, который, в свою очередь, запускает другой запрос на внешнее веб-приложение в фоновом режиме с небольшой помощью java.net.URLConnection
. Наконец, просто отправьте обратно на страницу результатов в рамках одного запроса, чтобы вы могли просто получить доступ к параметрам запроса на EL. Существует неявная EL-переменная ${param}
, которая дает вам доступ к параметрам запроса, например Map
, где ключом является имя параметра.
Так с помощью следующей формы
<form action="myservlet" method="post">
<input type="text" name="foo">
<input type="text" name="bar">
<input type="submit">
</form>
и примерно следующий сервлета метод
protected void doPost(HttpServletRequest request, HttpServletResponse response) {
String foo = request.getParameter("foo");
String bar = request.getParameter("bar");
String url = "http://external.com/someapp";
String charset = "UTF-8";
String query = String.format("foo=%s&bar=%s", URLEncoder.encode(foo, charset), URLEncoder.encode(bar, charset));
URLConnection connection = new URL(url).openConnection();
connection.setUseCaches(false);
connection.setDoOutput(true); // Triggers POST.
connection.setRequestProperty("accept-charset", charset);
connection.setRequestProperty("content-type", "application/x-www-form-urlencoded;charset=" + charset);
try (OutputStreamWriter writer = new OutputStreamWriter(connection.getOutputStream(), charset)) {
writer.write(query);
}
InputStream result = connection.getInputStream();
// Do something with result here? Check if it returned OK response?
// Now forward to the JSP.
request.getRequestDispatcher("result.jsp").forward(request, response);
}
вы должны быть в состоянии получить доступ на вход в result.jsp
следующим
<p>Foo: <c:out value="${param.foo}" /></p>
<p>Bar: <c:out value="${param.bar}" /></p>
Простой, как что. Нет необходимости в jsp:useBean
и/или отвратительных сценариях.
Один вопрос: если не используется ни база данных, ни какой-либо файл, как вы предлагаете «сохранить предоставленные данные»? – duffymo