九大内置对象:
request
response
pageContext
session
application
config
out
page
exception
这些对象不需要实例化,可以直接使用
不需要实例化的原因:JSP内置对象是由Web容器初始化并加载的,这些实例按照JSP规范进行默认的初始化操作,可直接再JSP中使用
request
request对象主要用于处理客户端请求
服务器通过request对象获取浏览器发送的数据
request常用方法
String getParameter(String name):根据表单组件名称获取提交数据
void setCharacterEncoding(String charset):指定每个请求的编码
String[ ] getParameterValues(String name):获取表单组件对应多个值时的请求数据
RequestDispatcher getRequestDispatcher(String path):返回一个RequestDispatcher对象,该对象的forward( )方法用于转发请求
request.setCharacterEncoding("UTF-8");
String name = request.getParameter("username");
String pwd = request.getParameter("password");
if("lv".equals(name)&&"123".equals(pwd)){
request.getRequestDispatcher("index.jsp").forward(request,response);
}
response
response对象用于设置响应参数和获取响应流
response对象提供了请求重定向功能
response常用方法
void addCookie(Cookie cookie):向客户端添加Cookie
void setContentType(String type):设置HTTP响应的contentType类型
void setCharacterEncoding(String charset):设置响应所采用的字符编码类型
void sendRedirect(String location):将请求重新定位到一个新的URL上
request.setCharacterEncoding("UTF-8");
String name = request.getParameter("username");
String pwd = request.getParameter("password");
if ("lv".equals(name) && "123".equals(pwd)) {
response.sendRedirect("index.jsp");
}
使用查询字符串可以在重定向时实现简单的数据传递
名值对方式
通过字符“?”连接在URL地址后面
多个名值对可用字符“&“进行分隔
response.sendRedirect("index.jsp?username="+URLEncoder.encode(name,"UTF-8"));
session
由于session对象存储与内存中,而内存空间是有限的,因此session对象适合存储一些体量较小,频繁存取的数据
Session将数据保存在服务器端
session与窗口的关系
每个session对象都与一个浏览器窗口对应
重新开启一个浏览器窗口,可以重新创建一个session对象
通过超链接打开的新窗口,新窗口的session与其父窗口的session相同
session常用方法
String getId():获取sessionid
long getCreationTime():返回session对象被创建的时间,以毫秒为单位
int getMaxInactiveInterval():获取session的有效非活动时间,以秒为单位
void invalidate():设置session对象失效
Object getAttribute(String key):通过key获取session中保存的对象
void removeAttribute(String key):从session中删除指定key对应的对象
Session Id 是:<%= session.getId()%></br>
Session 创建时间:<%= new Date(session.getCreationTime())%>
setMaxInactiveInterval(int interval):设置session有效时长,单位秒
void setAttribute(String key, Object value):以key/value的形式将对象保存到session中
request.setCharacterEncoding("UTF-8");
String username = request.getParameter("username");
String password = request.getParameter("password");
if("lv".equals(username) && "123".equals(password)){
//验证通过,设置登录用户信息
session.setAttribute("user",username);
//设置session过期时间
session.setMaxInactiveInterval(15*60);
//打开首页
request.getRequestDispatcher("index.jsp").forward(request,response);
}else{
response.sendRedirect("login.jsp");
}
Cookie
Cookie是Web服务器存储在客户端的一系列文本信息
Cookie会将数据保存在客户端
作用
对特定对象的追踪
实现各种个性化服务
在Cookie有效期内,记录用户登录信息
创建Cookie对象
Cookie newCookie = new Cookie(String key,String value);
写入Cookie对象
Cookie name=new Cookie("username",username);
Cookie pwd=new Cookie("password",password);
response.addCookie(name);
response.addCookie(pwd);
response.sendRedirect("getCookie.jsp");
Cookie对象的setMaxAge(int expiry)方法可以设置Cookie有效期,单位为秒
Cookie name = new Cookie("username",username);
Cookie pwd = new Cookie("password",password);
name.setMaxAge(60);
pwd.setMaxAge(60);
Cookie其他方法
void setValue(String value):在cookie创建后,对cookie进行赋值
String getName():获取cookie的名称
String getValue():获取cookie的值
int getMaxAge():获取cookie的有效时间,以秒为单位
转发和重定向
转发
原理:转发在服务器端发挥作用,指在服务器内部控制权的转移,通过forward()方法请求在多个页面中进行转移。浏览器的地址栏不会显示出转向后的地址,可以共享请求后的数据
作用:通过RequestDispatcher对象的forward()方法提交信息在多个页面中进行传递
request.getRequestDispatcher("ok.jsp").forward(request, response);
重定向
原理:重定向在客户端发挥作用,通过浏览器重新请求新地址,实现页面转向,在地址栏中可以显示转向后的地址,不能共享上一次请求中的数据。
作用:通过请求新的地址实现页面转向