繁体   English   中英

如何将值从一个jsp页面发送到另一页面,然后重定向到其他页面?

[英]How to send values from one jsp page to other but redirect to some other page?

我想将值从jsp1.jsp发送到jsp2.jsp,但将jsp1.jsp重定向到jsp3.jsp。 我在jsp1的servlet中使用了以下代码
response.sendRedirect("welcome1.jsp"); request.setAttribute("usern",user); RequestDispatcher rd = request.getRequestDispatcher("afterlogin.jsp"); rd.forward(request,response); 但它会继续显示此错误“ org.apache.jasper.JasperException:PWC6033:JSP的Javac编译错误”。

在这种情况下,您可以使用会话的条件,因此可以访问jsp2中的参数并将jsp 1重定向到3

https://www.javatpoint.com/servlet-http-session-login-and-logout-example http://java.candidjava.com/tutorial/Servlet-Jsp-HttpSession-Login-logout-example.htm

您可以将HttpSession对象用作用户会话,也可以使用ServletContext对象共享全局应用程序信息。 然后,使用方法getAttribute(字符串attb)和setAttribute(字符串attb,字符串值)在JSP中共享信息。 使用请求时的问题是,请求的域限制您仅在收到此请求时才使用此信息。

您还可以使用JavaBeans在JSP中共享信息

编辑:您是否将Java代码包含在scriptlet中? 在此处使用<%您的代码%>

当您使用sendRedirect函数时,它将立即重定向到该页面,不会读取下一行代码。

因此,根据您的代码,您的编译器很聪明,可以对其进行检查,从而给您带来错误。

请看下面

1)SendRedirect():

此方法在HttpServletResponse接口中声明。 签名:void sendRedirect(String url)

1)如果sendRedirect请求被转移到另一个资源到不同的域或不同的服务器进行进一步处理。 2)当您使用SendRedirect容器时,会将请求传输到客户端或浏览器,因此sendRedirect方法内给出的URL作为对客户端的新请求可见。 3)如果使用SendRedirect调用,则旧的请求和响应对象会丢失,因为浏览器将其视为新请求。 4)SendRedirect的速度较慢,因为创建了一个新的请求并且丢失了旧的请求对象,因此需要进行一次额外的往返。需要两个浏览器请求。 5)但是在sendRedirect中,如果要使用它,我们必须将数据存储在会话中或与URL一起传递。

2)Forward():

此方法在RequestDispatcher接口中声明。 签名:转发(ServletRequest请求,ServletResponse响应)

1)当我们使用转发方法时,请求被传输到同一服务器内的其他资源以进行进一步处理。 2)如果使用正向Web容器,则内部处理所有进程,并且不涉及客户端或浏览器。 3)当在requestdispather对象上调用forward时,我们传递请求和响应对象,因此我们的旧请求对象存在于将处理我们请求的新资源上
4)使用forward()方法比发送重定向要快。 5)当我们使用转发重定向并且我们想在新资源中使用相同的数据时,我们可以使用请求。 setAttribute(),因为我们有可用的请求对象。

更多内容: https : //www.javatpoint.com/q/3577/difference-between-requestdispatcher-and-sendredirect

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM