
比较项 | Get | post |
|---|---|---|
参数出现在URL中 | 是 | 否 |
长度限制 | 有 | 无 |
安全性 | 低 | 高 |
URL可传播 | 是 | 否 |
处理客户端请求
方法名称 | 说明 |
|---|---|
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方式提交数据时
// 设置读取请求信息的字符编码为UTF-8
request.setCharacterEncoding("UTF-8");
// 读取用户名和密码
String name = request.getParameter("name");
String pwd = request.getParameter("pwd");
%>
<% // 以GET方式提交数据时
// 读取用户名和密码
String name = request.getParameter("name");
// 对请求数据进行字符编码
name = new String(name.getBytes("ISO-8859-1"), "UTF-8");
%>
在Tomcat目录结构\conf\server.xml中设置字符集
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" URIEncoding="UTF-8"
/>响应客户请求并向客户端输出信息
void sendRedirect(String location)//重定向,客户端将重新发送请求到指定的URL
转发是在服务器端发挥作用,将同一请求在服务器资源之间进行传递
客户端浏览器的地址栏不会显示转向后的地址
request.getRequestDispatcher("welcome.jsp").forward(request, response);重定向是在客户端发挥作用,通过发送一个新的请求实现页面转向
在地址栏中可以显示转向后的地址
response.sendRedirect("welcome.jsp");一个会话就是在一段时间内,一个客户端与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>是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的有效时间,以秒为单位 |
session | cookie |
|---|---|
在服务器端保存用户信息 | 在客户端保存用户信息 |
session中保存的是Object类型 | cookie保存的是 String类型 |
随会话的结束而将其存储的数据销毁 | cookie可以长期保存在客户端 |
保存重要的信息 | 保存不重要的用户信息 |
实现用户之间的数据共享
方法名称 | 说 明 |
|---|---|
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);
%>
对应的作用域访问对象为pageContext
指本JSP页面的范围
对应的作用域访问对象为request
一次请求
对应的作用域访问对象为session
一次会话
对应的作用域访问对象为application
整个应用的上下文
内置对象名称 | 说明 |
|---|---|
out | 用于向客户端输出数据 |
request | 主要用于处理客户端请求的数据信息 |
response | 用于响应客户端请求并向客户端输出信息 |
session | 用于记录会话状态的相关信息 |
application | 类似于系统的全局变量,用于实现Web应用中的资源共享 |