可复制直接测试
Login.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> <!--method不填默认是get--> <form action="check.jsp" method="post"> 用 户名:<input type="text" name="user"/><br/> 密码 : <input type="password" name="pwd"/><br/> <input type="submit" value="登录"> </form> </body> </html>
check.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> <% request.setCharacterEncoding("utf-8");//设置post的参数编码 //取参数 String name = request.getParameter("user"); String pwd = request.getParameter("pwd"); if(name.equals("hj")&&pwd.equals("123")){ request.getRequestDispatcher("success.jsp").forward(request,response);//请求转发,转发后地址栏不变 //response.sendRedirect("success.jsp");//重定向参数丢失,导致success.jsp不能正确显示name }else{ out.print("error"); } %> </body> </html>
success.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> <% String user = request.getParameter("user");//接收参数 out.print("Welcome"+user);//输出,如果用重定向,那么结果会显示为null %> </body> </html>
大体流程:
1. 用户在客户端(login.jsp浏览器端)填好参数user和pwd 点击提交,信息被发送到check.jsp
2. check.jsp 接收两个参数 ,进行验证,如果确认是正确的用户,进行请求转发转发到success.jsp
3. success.jsp 回显Weclome注意: 此时地址栏显示的是check.jsp
请求转发和重定向的区别:
1.
请求转发地址栏不变
重定向地址栏会改变
2.
请求时的数据,在请求转发时会保留
重定向并不保留
get与post区别:
1. get在地址栏上会显示所有的请求数据,(有长度限制,4-5kb;不能上传大文件)
2. 文件上传操作必须是post,post的数据不会显示在地址栏相对安全