java Web第三章学习内容(内置对象(请求request,响应response,会话seession))
学习内容:
1.请求对象request
2.解决中文乱码
3.请求中保存属性或获取属性
4.转发及重定向
5.保存用户数据session
一.请求对象request
在form表单中可以通过请求对象request获取值,要给表单起个名字,通过名字转换为String类型
例:
String name = request.getParameter("username");
String pwd = request.getParameter("pwd");
在form表单中可以通过请求对象request获取集合,要给表单起个名字,通过名字转换为String类型
例:
String [] str = request.getParameterValues("spots");
二.解决中文乱码
用于通过请求对象获取值时可能出现乱码,需要调用方法设置编码格式
例:
request.setCharacterEncoding("utf-8");
四.转发及重定向
转发
例:
request.getRequestDispatcher("index.jsp").forward(request,response);
重定向
例:
response.sendRedirect("welcome.jsp?pwd="+pwd);
区别:
转发是一次请求,如客户端访问服务器,服务器直接返回信息给客户端
重定向是二次请求,如客户端访问服务器,服务器返回地址给客户端,客户端再访问该地址
五.session
保存用户数据并获取,作用域是一次会话,保存到服务器的
例:
session.setAttribute("username",name); 保存用户信息,键-值
session.getAttribute("username"); 获取用户信息
session.getId(); 获取sessionid;
会话清除和过时:
session.invalidate(); 设置会话失效
session.removaAttribute("username") 移除会话的一个属性
session.setMaxInactiveInterval(30*60); 根据时间过期,秒为单位,如30*60=30分钟
参考案例:
表单:
1.请求对象request
2.解决中文乱码
3.请求中保存属性或获取属性
4.转发及重定向
5.保存用户数据session
一.请求对象request
在form表单中可以通过请求对象request获取值,要给表单起个名字,通过名字转换为String类型
例:
String name = request.getParameter("username");
String pwd = request.getParameter("pwd");
在form表单中可以通过请求对象request获取集合,要给表单起个名字,通过名字转换为String类型
例:
String [] str = request.getParameterValues("spots");
二.解决中文乱码
用于通过请求对象获取值时可能出现乱码,需要调用方法设置编码格式
例:
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
三.请求存储数据
在请求中保存属性及获取属性,跟set,get类似
例:
request.setAttribute("mess","用户或密码错误");
request.getAttribute("mess");
注意:
获取存取属性的时候,要加判断,例如:
四.转发及重定向
转发
例:
request.getRequestDispatcher("index.jsp").forward(request,response);
重定向
例:
response.sendRedirect("welcome.jsp?pwd="+pwd);
区别:
转发是一次请求,如客户端访问服务器,服务器直接返回信息给客户端
重定向是二次请求,如客户端访问服务器,服务器返回地址给客户端,客户端再访问该地址
五.session
保存用户数据并获取,作用域是一次会话,保存到服务器的
例:
session.setAttribute("username",name); 保存用户信息,键-值
session.getAttribute("username"); 获取用户信息
session.getId(); 获取sessionid;
会话清除和过时:
session.invalidate(); 设置会话失效
session.removaAttribute("username") 移除会话的一个属性
session.setMaxInactiveInterval(30*60); 根据时间过期,秒为单位,如30*60=30分钟
参考案例:
表单:
<form method="post"action="doLogin.jsp"> <p>用户<input type="text"name="username"><span><%=request.getAttribute("mess")==null?"":request.getAttribute("mess")%></span></p> <p>密码<input type="password"name="pwd"></p> <p> <input type="checkbox"name="spots" value="篮球">篮球 <input type="checkbox"name="spots" value="Basketball">足球 <input type="checkbox"name="spots" value="Billiards">台球 </p> <p><input type="submit"value="确定"> <input type="reset"value="重置"></p> </form>
判断登录信息:
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <%--处理异常返回界面时使用--%> <%--<jsp:forward page="index.jsp"></jsp:forward>--%> <%--请求,响应--%> <% request.setCharacterEncoding("utf-8"); response.setCharacterEncoding("utf-8"); String name = request.getParameter("username"); String pwd = request.getParameter("pwd"); String [] str = request.getParameterValues("spots"); if (name.equals("admin")&&pwd.equals("123456")){ out.print("登录成功"); /*重定向*/ /* response.sendRedirect("welcome.jsp?pwd="+pwd);*/ /*保存用户数据*/ session.setAttribute("username",name); response.sendRedirect("welcome.jsp"); }else{ out.print("登录失败"); /*键值存储*/ request.setAttribute("mess","用户或密码错误"); /*转发*/ request.getRequestDispatcher("index.jsp").forward(request,response); } %> <% /* for (String str1:str){ out.println(str1); }*/ %>登录后的欢迎界面:
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>Title</title> </head> <body> <h1>欢迎登录<%=session.getAttribute("username")%>></h1> <%--<% out.print(request.getParameter("pwd")); %>>--%>