【问题标题】:forward request from one jsp to another jsp将请求从一个 jsp 转发到另一个 jsp
【发布时间】:2014-06-07 19:50:29
【问题描述】:

我有一个带有按钮的 jsp 页面“one.jsp”。 单击按钮时,我想用相同的请求对象调用“two.jsp”。我尝试了几个选项:-
1)单击按钮时,将请求发送到servlet,该servlet在请求调度程序的帮助下将请求转发到“two.jsp”,但无法使用“one.jsp”使用的请求对象参数。
2)建立活动链接并使用 response.sendredirect() 但这会创建一个新请求。
我在互联网上搜索并得到了<jsp:forward page="two.jsp">,但我不知道如何在按钮单击时进行 jsp 转发。

【问题讨论】:

  • 如果您在浏览器中看到该按钮,那么这意味着您从第一个请求(到 one.jsp)中获得了响应,因此用于服务此页面的请求已经结束许久。您应该阅读 HTTP 的工作原理:请求、响应,仅此而已。一旦请求被处理,它就会被终止。当您单击按钮时,您会发送另一个不同的请求。
  • @JBNizet 无论如何,我可以使用我用来在“two.jsp”中呈现“one.jsp”的请求参数吗?
  • 点击按钮时再次发送。如果按钮是链接,请在 URL 中使用查询字符串:two.jsp?param1=value1&param2=value2。如果是表单,请使用隐藏字段:<input type="hidden" name="param1" value="value1"/>

标签: jsp jakarta-ee servlets jsp-tags


【解决方案1】:

一个.jsp

   <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<form action="servletToJsp">
<input type="submit"></button>
</form>
</body>
</html>

两个.jsp

 <html>
<body bgcolor="white">
<h1> I have been invoked by 
<% 
out.print(request.getAttribute("servletName").toString());
%>
Servlet
</body>
</html>

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
  <display-name>WebPrj</display-name>
  <servlet>
    <description></description>
    <display-name>servletToJsp</display-name>
    <servlet-name>servletToJsp</servlet-name>
    <servlet-class>com.servletToJsp</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>servletToJsp</servlet-name>
    <url-pattern>/servletToJsp</url-pattern>
  </servlet-mapping>
</web-app>

com包内的servletToJsp.java

package com;

 import java.io.IOException;
import javax.servlet.*;
import javax.servlet.http.*;
public class servletToJsp extends HttpServlet {

  public void doGet(HttpServletRequest request, HttpServletResponse response){
    request.setAttribute("servletName", "servletToJsp");

    try {
      getServletConfig().getServletContext().getRequestDispatcher(
        "/two.jsp").forward(request,response);

    } catch (ServletException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    } catch (IOException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }
  }

}

【讨论】:

  • 谢谢,但这会创建新请求,我想使用 one.jsp 的请求参数
  • 在 one.jsp 中的隐藏参数中设置这些值。
猜你喜欢
  • 2012-04-24
  • 1970-01-01
  • 2013-09-16
  • 2013-11-11
  • 2014-02-25
  • 2011-07-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多