写一个简单的登录页面
1.创建一个login.jsp文件
主要内容:
<form action="check.jsp" method="post"> 用户名:<input type="text" name="uname"><br/> 密码:<input type="password" name="upwd"><br/> <input type="submit" value="登录"><br/> </form>
2.创建一个check.jsp文件
检查用户名和密码是否正确,正确跳转到成功界面,否则输出“用户名或者密码错误”
主要代码:
<% request.setCharacterEncoding("utf-8"); String name = request.getParameter("uname"); String pwd = request.getParameter("upwd"); if(name.equals("mwf")&&pwd.equals("123456")){ //response.sendRedirect("success.jsp"); //重定向,数据丢失 request.getRequestDispatcher("success.jsp").forward(request, response); //请求转发 } else{ out.print("用户名或密码错误!"); } %>
3.创建一个success.jsp文件
用来输出登陆者的用户名
登录成功!<br/> 欢迎你: <% String name = request.getParameter("uname") ; out.print(name) ; %>
4.实验效果
总结:
1.当使用response.sendRedirect("success.jsp");的时候页面会跳转到success.jsp,会发生数据丢失的现象,出来的用户名为null,重定向数据丢失;
原因是:sendRedirect()会新建request对象,所以request中的数据会丢失。
当使用request.getRequestDispatcher("success.jsp").forward(request, response);的时候,页面地址还是会在check.jsp的地址,但是内容是success.jsp的内容,这种叫做请求转发,内容正常显示。
2.response :响应对象提供的几种方法:
void addCookie( Cookie cookie ); 服务端向客户端增加cookie对象
void sendRedirect(String location ) throws IOException; :页面跳转的一种方式(重定向)
void setContetType(String type):设置服务端响应的编码(设置服务端的contentType类型)
有不足的地方欢迎交流指正,感谢阅读!