Servlet在重载或新窗口上将值传递给jsp

时间:2017-03-28 20:07:29

标签: javascript java jsp servlets

我有一个JSP页面和一个处理复选框表单的servlet。我希望表单即使在新会话中也能保留最后一个值。如果页面重新加载或打开了一个新窗口,我希望存储数据。

JSP:

<html><body>
<p>
<form name="checkboxes" action="${pageContext.request.contextPath}/Servlet" method="post">
<%  if(getServletContext().getAttribute("test").equals("on")) { %>
<input type=checkbox name="test" checked>Test
<%  } else { %>
        <input type=checkbox name="test" >Test
<% } %>
       <input type="submit" value="submit"">
       <%= getServletContext().getAttribute("test") %>
</form>
</p>

的Servlet

import java.io.*;
import javax.servlet.*;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.*;
@WebServlet("/Servlet")
public class Servlet extends HttpServlet
{
  private String c4;
  public void init() 
  { 
      c4 = "";
  } 

public void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException
{
      response.setContentType("text/html");
      String c1 = request.getParameter("test");
      ServletContext context = request.getServletContext();
      if(c1!=null) {
          System.out.println("c1 " + c1);
          context.setAttribute("test", "on");
      }
      else {
          context.setAttribute("test", "off");
      }
      request.getRequestDispatcher("/index.jsp").forward(request, response);


}

public void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException
{
    doPost(request,response);
}
}

1 个答案:

答案 0 :(得分:0)

  

我希望表单即使在新会话中也能保留最后一个值。如果   页面重新加载或打开一个新窗口,我希望存储数据。

您可以选择两个选项:

(1)将最后一个值保存在内存缓存存储中,并在请求到来时再次检索它。

(2)将最后一个值保存在持久存储(最好是数据库)中,并在请求到来时再次检索它。