我如何传递隐藏的参数?我想调用一个页面(test.jsp),但也要像post一样传递两个隐藏参数。
response.sendRedirect("/content/test.jsp");发布于 2013-06-09 00:22:59
TheNewIdiot's answer成功地解释了问题以及无法通过重定向发送请求中的属性的原因。可能的解决方案:
使用转发的
JSP(您的)
使用scriptlet:
<% out.println(request.getAttribute("message"));%>
这只是为了给提供信息,。必须避免使用Scriptlet::How to avoid Java code in JSP files?。下面是使用EL和JSTL的示例。
视图
同样,使用scriptlet,然后使用EL +JSTL来显示:
<% out.println(session.getAttribute("message"));session.removeAttribute("message");%>
发布于 2013-06-08 23:49:47
一般情况下,无法使用sendRedirect()方法发送POST请求。您可以使用RequestDispatcher在相同的web应用程序、相同的上下文中使用带参数的forward()请求。
RequestDispatcher dispatcher = servletContext().getRequestDispatcher("test.jsp");
dispatcher.forward(request, response);HTTP规范规定所有重定向必须采用GET (或HEAD)的形式。如果安全性是个问题,您可以考虑加密查询字符串参数。另一种方法是,您可以通过使用POST方法创建一个隐藏的表单,并在页面加载时使用javascript提交它,从而将POST发送到目标。
发布于 2016-11-24 23:44:27
使用session,我成功地将参数(name)从servlet #1传递到servlet #2,使用servlet #1中的response.sendRedirect。Servlet #1代码:
protected void doPost(HttpServletRequest request, HttpServletResponse response) {
String name = request.getParameter("name");
String password = request.getParameter("password");
...
request.getSession().setAttribute("name", name);
response.sendRedirect("/todo.do");在Servlet #2中,您不需要获取name。它已经连接到会话。你可以做String name = (String) request.getSession().getAttribute("name"); -但你不需要这个。
如果Servlet #2调用JSP,您可以在JSP网页上以这种方式显示name:
<h1>Welcome ${name}</h1>
https://stackoverflow.com/questions/17001185
复制相似问题