两个JSP页面经过servlet后传参数并添加新参数(并获取web.xml中的参数)

目的介绍:
页面A输入用户名密码,在页面B显示用户名和密码,并且将存在 web.XML里面的默认密码显示在页面B中。

表单页面A

<form action="LoginServlet" method="post">
			用户名:<input type="text" name="userName"> 
			密 码:<input type="password" name="password"> 
			<input type="submit" name="submitbtn" value = "登陆">
</form>

接收页面B

  <%
  String userName = "";
  String password = "";
  String defaultPassword = "";
  if(request.getParameter("userName") != null){
  	userName = (String)request.getParameter("userName");
  }
  if(request.getParameter("password") != null){
  	password = (String)request.getParameter("password");
  }
  if(request.getParameter("defaultPassword") != null){
  	defaultPassword = (String)request.getParameter("defaultPassword");
  }
  %>
   <p> 用户输入的用户名为:<%=userName %></p>
   <p> 用户输入的密码为:<%=password %></p>
   <p> 系统的默认密码为:<%=defaultPassword %></p>

本想直接用同一个request(即页面A的表单产生的request),在页面A产生的request中用request.setAttribute(“defaultPassword”,defaultPassword); 直接添加一个新的参数,然后在页面B中直接接收“userName、password、defaultPassword”三个参数。但是结果是每次只能传递用户名和密码两个参数。

public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		request.setCharacterEncoding("UTF-8");
		response.setCharacterEncoding("UTF-8");
		String userName = request.getParameter("userName");
		String password = request.getParameter("password");
		String dpassword = defaultPassword;
		System.out.println("用户输入的用户名为:"+userName);
		System.out.println("用户输入的密码为:"+password);
		System.out.println("系统的默认密码为:"+defaultPassword);
		request.setAttribute("userName",userName);
		request.setAttribute("password",password);
		request.setAttribute("defaultPassword",defaultPassword);
		request.getRequestDispatcher("index.jsp").forward(request, response);
	}

后来我了解到已经生成了的 request 中的参数不能直接添加和改变。
只能在new一个request对象,然后重新设置参数,这样过于麻烦,新添加的参数我还是选择用session传参。
这样就是保留了页面A传过来的request又在session中新建了一个参数。

	public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		request.setCharacterEncoding("UTF-8");
		response.setCharacterEncoding("UTF-8");
		String userName = request.getParameter("userName");
		String password = request.getParameter("password");
		String dpassword = defaultPassword;
		System.out.println("用户输入的用户名为:"+userName);
		System.out.println("用户输入的密码为:"+password);
		System.out.println("系统的默认密码为:"+defaultPassword);
		request.setAttribute("userName",userName);
		request.setAttribute("password",password);
		request.getSession().setAttribute("defaultPassword",defaultPassword);
		request.getRequestDispatcher("index.jsp").forward(request, response);
	}

页面B的代码为:

  <%
  String userName = "";
  String password = "";
  String defaultPassword = "";
  if(request.getParameter("userName") != null){
  	userName = (String)request.getParameter("userName");
  }
  if(request.getParameter("password") != null){
  	password = (String)request.getParameter("password");
  }
  if(request.getSession().getAttribute("defaultPassword") != null){
  	defaultPassword = (String)request.getSession().getAttribute("defaultPassword");
  }

   %>
   <p> 用户输入的用户名为:<%=userName %></p>
   <p> 用户输入的密码为:<%=password %></p>
   <p> 系统的默认密码为:<%=defaultPassword %></p>

结果
在这里插入图片描述

补充:
在web.xml中设置参数的方法为

  <servlet>
    <servlet-name>LoginServlet</servlet-name> 
    <servlet-class>cap.action.LoginServlet</servlet-class>
    <init-param>
 	<param-name>password</param-name>
 	<param-value>888888</param-value>
 	</init-param>
  </servlet>

获取参数

		defaultPassword = this.getServletConfig().getInitParameter("password");

猜你喜欢

转载自blog.csdn.net/yxw908186797/article/details/88046321