get与post区别
比较项 | Get | post |
---|---|---|
参数出现在URL中 | 是 | 否 |
长度限制 | 有 | 无 |
安全性 | 低 | 高 |
URL可传播 | 是 | 否 |
request对象
作用
处理客户端请求
方法
方法名称 | 说明 |
---|---|
String getParameter(String name) | 根据表单组件名称获取提交数据 |
String[ ] getParameterValues(String name) | 获取表单组件对应多个值时的请求数据 |
void setCharacterEncoding(String charset) | 指定每个请求的编码 |
RequestDispatcher getRequestDispatcher(String path) | 返回一个RequestDispatcher对象,该对象的forward( )方法用于转发请求 |
示例
<% //读取用户名和密码 String name = request.getParameter("name"); String pwd = request.getParameter("pwd"); ……//HTML页面 //读取复选框选择项 String[] channels = request.getParameterValues("channel"); if (channels != null) { for (String channel : channels) { out.println(channel); } } %>
内置对象
请求对象:request 输出对象:out 响应对象:response 应用程序对象:application 会话对象:session 页面上下文对象:pageContext 页面对象:page 配置对象:config 异常对象:exception
解决字符集编码问题
post方式
<% // 以POST方式提交数据时 // 设置读取请求信息的字符编码为UTF-8 request.setCharacterEncoding("UTF-8"); // 读取用户名和密码 String name = request.getParameter("name"); String pwd = request.getParameter("pwd"); %>
get方式1
<% // 以GET方式提交数据时 // 读取用户名和密码 String name = request.getParameter("name"); // 对请求数据进行字符编码 name = new String(name.getBytes("ISO-8859-1"), "UTF-8"); %>
get方式2
在Tomcat目录结构\conf\server.xml中设置字符集 <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8" />
response对象
作用
响应客户请求并向客户端输出信息
方法
void sendRedirect(String location)//重定向,客户端将重新发送请求到指定的URL
重定向与转发
转发
作用
转发是在服务器端发挥作用,将同一请求在服务器资源之间进行传递
特点
客户端浏览器的地址栏不会显示转向后的地址
举例
request.getRequestDispatcher("welcome.jsp").forward(request, response);
重定向
作用
重定向是在客户端发挥作用,通过发送一个新的请求实现页面转向
特点
在地址栏中可以显示转向后的地址
举例
response.sendRedirect("welcome.jsp");
session对象
定义
一个会话就是在一段时间内,一个客户端与Web服务器的一连串相关的交互过程
常用方法
方法名称 | 说明 |
---|---|
String getId() | 获取sessionid |
void setMaxInactiveInterval(int interval) | 设定session的非活动时间 |
int getMaxInactiveInterval() | 获取session的有效非活动时间(以秒为单位) |
void invalidate() | 设置session对象失效 |
void setAttribute(String key, Object value) | 以key/value的形式保存对象值 |
Object getAttribute(String key) | 通过key获取对象值 |
void removeAttribute(String key) | 从session中删除指定名称(key)所对应的对象 |
注意点
1.每个session对象都与一个浏览器窗口对应 ,重新开启一个浏览器窗口,可以重新创建一个session对象(不同版本浏览器可能有所差别) 2.通过超链接打开的新窗口,新窗口的session与其父窗口的session相同
举例
<% if ("admin".equals(name) && "admin".equals(pwd)) { // 如果是已注册用户 session.setAttribute("login", name); // 设置session过期时间 session.setMaxInactiveInterval(10*60); request.getRequestDispatcher("admin.jsp").forward(request, response); } else { response.sendRedirect("index.jsp"); } %> <% String login = (String) session.getAttribute("login"); if (login == null) { response.sendRedirect("index.jsp"); return; } %>
关于失效
手动设置失效:
session.invalidate()
超时失效
1.通过setMaxInactiveInterval( )方法,单位是秒
session.setMaxInactiveInterval(600);
<% session.setAttribute("login","admin"); session.setMaxInactiveInterval(600); response.sendRedirect("admin.jsp"); %>
2.通过设置项目的web.xml或Tomcat目录下的/conf/web.xml文件,单位是分钟
<session-config> <session-timeout>10</session-timeout> </session-config>
cookie
简介
是Web服务器保存在客户端的一系列文本信息
作用
对特定对象的追踪 实现各种个性化服务 简化登录
安全性
容易泄露信息
创建对象
Cookie newCookie = new Cookie(String key, String value);
写入
response.addCookie(newCookie);
读取
Cookie[] cookies = request.getCookies();
常用方法
方法名称 | 说 明 |
---|---|
void setMaxAge(int expiry) | 设置cookie的有效期,以秒为单位 |
void setValue(String value) | 在cookie创建后,对cookie进行赋值 |
String getName() | 获取cookie的名称 |
String getValue() | 获取cookie的值 |
int getMaxAge() | 获取cookie的有效时间,以秒为单位 |
cookie与session的对比
session | cookie |
---|---|
在服务器端保存用户信息 | 在客户端保存用户信息 |
session中保存的是Object类型 | cookie保存的是 String类型 |
随会话的结束而将其存储的数据销毁 | cookie可以长期保存在客户端 |
保存重要的信息 | 保存不重要的用户信息 |
application对象
作用
实现用户之间的数据共享
常用方法
方法名称 | 说 明 |
---|---|
void setAttribute(String key, Object value) | 以key/value的形式保存对象值 |
Object getAttribute(String key) | 通过key获取对象值 |
String getRealPath(String path) | 返回相对路径的真实路径 |
示例
<% Integer count = (Integer) application.getAttribute("count"); if (count != null) { count = 1 + count; } else { count = 1; } application.setAttribute("count", count); %>
作用域分类
page作用域
对应的作用域访问对象为pageContext
范围
指本JSP页面的范围
request作用域
对应的作用域访问对象为request
范围
一次请求
session作用域
对应的作用域访问对象为session
范围
一次会话
application作用域
对应的作用域访问对象为application
范围
整个应用的上下文
jsp内置对象回顾
内置对象名称 | 说明 |
---|---|
out | 用于向客户端输出数据 |
request | 主要用于处理客户端请求的数据信息 |
response | 用于响应客户端请求并向客户端输出信息 |
session | 用于记录会话状态的相关信息 |
application | 类似于系统的全局变量,用于实现Web应用中的资源共享 |
####