Response
- response作为服务端响应给客户端的过程,仅仅是为了将服务端的请求重定向给了另一个地址
方法名 | 描述 |
---|---|
sendRedirect(url) | 重定向 |
登陆案例
<%
String uname = request.getParameter("uname");
String pwd = request.getParameter("pwd");
if("admin".equals(uname)){
//重定向
response.sendRedirect("success.jsp");
}else{
response.sendRedirect("error.jsp");
}
%>
response的特点
- 至少请求两次
- 地址栏中的地址会发生改变
- 不能携带参数
面试题:请求转发和重定向的区别
请求转发:
- 一次请求,多次转发
- 请求转发后,地址栏中的位置不会发生改变
- resquest请求转发可以携带参数
重定向:
- 至少请求两次
- 地址栏中的位置会发生改变
- 不能携带参数
Session对象
- Session称为一次会话,浏览器的打开及关闭.例如:登陆淘宝后,在该浏览器上无论打开的哪个页面都属于一次会话(不需要重新登陆了)
方法名 | 描述 |
---|---|
setAttribute(key,val) | 设置键值对 |
getAttribute(key) | 通过键,获取值 |
getId() | 获取sessoin的id |
removeAttribute(key) | 从session中移除指定的key |
setMaxInactiveInterval(time) | 设置session的过期时间:秒](tomact中默认配置的过期时间是30分钟) |
案例:使用session实现页面访问权限控制
<!--login.jsp-->
<%
String errMsg = "";
//登陆页面可能会被打开多次(用户想要切换账户)
Object object = session.getAttribute("reeMsg");
if(object != null){//从登陆失败后跳转过来的
errMsg = (String)object;
//移除session中的key
session.removeAttribute("errMsg")
}
%>
<p style="color:red;"><%=errMsg%></p>
<form action="control.jsp" method="post">
<input type="text" name="uname" placeholder="请输入用户名">
<input type="password" name="pwd" placeholder="请输入密码">
<input type="submit" value="登录">
</form>
<!--control.jsp-->
<%
//设置请求编码格式
request.setCharacterEncoding("utf-8");
//获取表单中的参数
String uname = request.getParameter("uname");
String pwd = request.getParameter("pwd");
//对用户名及密码进行验证(操作数据库)
if("admin".equals(uname) && "admin".equals(pwd)){
//将用户的用户名存储起来作为登录成功的标识
session.setAttribute("uname",uname);
//设置session的失效事件(单位:秒)
session.setMaxInactiveInterval(5);
//登录成功直接跳转到个人中心页面
response.sendRedirect("person.jsp");
}else{
//通过session存储一个错误信息
session.setAttribute("errMsg","用户名或密码错误");
//回到登录页面,并提示错误信息
response.sendRedirect("login.jsp");
}
%>
<!--个人中心-->
<%
//首先需要先验证用户是否已经登录
Object object = session.getAttribute("uname");
if(object == null){//代表用户未登录,跳转到登录页面
response.sendRedirect("login.jsp");
return;
}
%>
<h4>个人中心</h4>
<p>欢迎,<%=object%></p>