1、out 输出对象
2、request 请求对象
请求对象:存储客户端向服务器端发送的请求信息
常见方法:
String getParameter(String name); //由字段名返回字段值
String[] getParameterValues(String name); //由字段名返回多个字段值
void setCharacterEncoding("utf-8"); //设置请求编码,只对post方式有效
void getRequestDispatcher("xxx.jsp").foward(request,response); //请求转发,A->B页面跳转。
ServletContext getServerContest(); //获取项目的ServletContext对象
get 和 post方式的区别:
1、get方式获取的数据会在地址栏显示,且请求大小(4–5KB); post不会显示在地址栏;
2、文件上传必须使用post
3、post 更加安全
3、response:响应对象
响应对象:服务器对客户端的响应事件
void addCookie(Cookie cookie); //服务器向客户端增加Cookie对象
void sendRedirect(String location); //重定向,页面跳转的另一种方式,throw IOException;
void setContentType(String type); //设置服务器端响应编码
4、Session 会话对象
1、cookie
Cookie(客户端,不是内置对象):Cookie是由服务器端产生,再发送给客户端保存。相当于本地缓存的作用;
作用:提高访问服务器端的效率,但是安全性较差;
Cookie: name = value; (k-y对)
java . servelt . http . Cookie;
常见方法:
String getName( ); //获取name
String getValue( ); //获取Value
void setMaxAge( int expiry ); //最大有效期(秒)
使用方法:
1、服务器端准备Cookie:response.addCookie(Cookie cookie);
2、页面跳转(请求转发 / 重定向)
3、客户端获取cookie: request.getCookies( );
a、服务器增加 cookie :response 对象;
b、客户端获取对象:request 对象;
c、不能直接获取某一个单独对象,只能一次性全部获取所有的 cookie 对象;
2、Session机制:
(1)客户端第一次请求服务端时,服务端会产生一个 Session 对象(用于保存该用户的信息);并且每个 Session
对象都会产生一个sessionId ,用于区分其他的Session; (2)服务端会产生一个Cookie
对象,并且这个Cookie的name=JSESSIONID,value=服务端 sessionId
的值;然后服务端会在响应客户端的同时,将该Cookie 发送给客户端,至此 客户端就有了一个cookie(JSESSIONID)
(3)此时客户端的 Cookie 就和 服务端的Session 一一对应;(JSESSIONID == sessionId)
(4)当客户端第2/n次请求服务端时,服务端会先从客户端cookie 中的JSESSIONID
去服务端的session中匹配sessionId; 如果匹配成功,说明此用户可以直接登录;
常用方法:
String getId(); //获取sessionId
boolean isNew(); //判断是否是新用户(第一次访问)
void invalidate(); //使session失效 (退出登录,注销)
void setAttribute("k","y"); //设置key和value
Object getAttribute("k"); //由key获取value,返回值是Object
void setMaxInactiveInterval("秒"); //设置最大有效,非活动时间;
int getMaxInactiveInterval("秒); //获取最大有效,非活动时间;
Cookie 和 Session 的区别;
1、Session保存在服务端,Cookie保存在客户端;
2、Session相对于较为安全;客户端Cookie较为不安全;
3、Session保存的内容都是Object;而Cookie保存的内容是key—value对;
客户端在第一次请求服务端时,如果服务端发现此请求没有JSESSIONID,则会创建一个name=JSESSIONID的Cookie,发送给客户端;
5、Application 全局对象
常用方法:
String getContextPath(); //获取虚拟路径
String getRealPath("虚拟路径"); //获取绝对路径(虚拟路径相对应的绝对路径)
6、config 配置对象
7、page 当前JSP页面对象
8、exception 异常对象
四种范围对象:(小->大)
pageContext JSP页面容器、、当前页面有效,页面跳转后无效
request 请求对象、、一次请求有效(请求转发有效,重定向后无效)
session 会话对象、、同一次会话有效(浏览器跳转依然有效!)//关闭/切换浏览器后无效
application 全局对象、、全局有效(切换浏览器任然有效!)//关闭服务,和其他项目无法访问
以上四个对象共有的方法:
Object getAttribute(String name); //根据属性名,获取属性值
void setAttribute(String name, Object obj); //设置属性值(新增,修改)
void removeAttribute(String name); //根据属性名删除对象
以上四个范围对象,通过setAttribute( ) 赋值;通过getAttribute( )取值;
最好使用范围小的对象,由于范围越大,开销越大;
pageContext的范围:
//pageContext.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
pageContext.setAttribute("name", "Hello pageContext");
request.getRequestDispatcher("pageContext1.jsp").forward(request, response);
%>
<%=pageContext.getAttribute("name") %>
</body>
</html>
//pageContext1.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%=pageContext.getAttribute("name") %>
</body>
</html>
request的范围:
//request.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
request.setAttribute("name", "Hello Request");
request.getRequestDispatcher("request1.jsp").forward(request, response);
%>
<!-- <%=pageContext.getAttribute("name") %> -->
</body>
</html>
//request1.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%=request.getAttribute("name") %>
</body>
</html>
Session的范围:
//session.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
session.setAttribute("name", "Hello Session!");
//request.getRequestDispatcher("request1.jsp").forward(request, response);
response.sendRedirect("session1.jsp");
%>
</body>
</html>
//session1.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%=session.getAttribute("name") %>
</body>
</html>
application的范围:
//application.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
application.setAttribute("name", "Hello Application!");
//request.getRequestDispatcher("request1.jsp").forward(request, response);
response.sendRedirect("session1.jsp");
%>
</body>
</html>
//application1.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%=application.getAttribute("name") %>
</body>
</html>