目的介绍:
页面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");