JSP九大内置对象
1、out :输出对象
向客户端输出内容
2、pageContext:JSP页面容器
3、request :请求对象
请求对象,存储客户端向服务端发送的请求信息。
常见方法:
String getParameter(String name):根据请求的字段名key,返回字段值value;
String[] getParameterValues(String name):根据请求的字段名key,返回多个字段值value (checkbox);
void setCharacterEncoding(“编码格式utf-8”):设置请求编码
getRequestDispatcher(“b.jsp”).forward(request,response):请求转发的方式跳转页面
getServerContext():获取项目的ServletContext对象
4、response:响应对象
提供的方法:
void addCookie():服务端向客户端增加cookie对象。
void sendRedirect(String location) throws IOEexception:页面跳转的一种方式。
void setContentType(String type):设置服务端响应的编码(设置服务端的contentType类型)。
请求转发和重定向的区别:
– | 请求转发 | 重定向 |
---|---|---|
地址栏是否改变 | 不变 | 改变 |
是否保留第一次请求时数据 | 保留 | 不保留 |
请求次数 | 1 | 2 |
跳转发生的位置 | 服务端 | 客户端发出的第二次跳转 |
5、session(服务端):会话对象
Cookie(客户端,不是内置对象):Cookie是由服务端生成的,再发送给客户端保存。相当于本地缓存,可提高服务端的效率,但安全性较差。
Cookie: key = value,由javax.servlet.http.Cookie类产生。
Cookie方法:
public Cookie(String name,String value)
String getName():获取name
String getValue():获取value
void setMaxAge(int expiry):最大有效期(秒)
客户端在第一次请求服务端时,如果服务端发现此请求没有JESESSIONID,会创建一个name=JESESSIONID的cookie,并返回给客户端。
注cookie:
1、不是内对象,要使用必须new。
2、但是服务端会生成一个(服务端自动new一个cookie)name=JSESSIONID的cookie,并返回给客户端
服务端准备发送给客户端:
response.addCookie(Cookie cookie);
页面跳转(转发,重定向)
客户端获取cookie:request.getCookies();
服务端增加cookie:response对象;客户端获取对象:request对象,不能直接获取某一个单独对象,只能一次性将全部cookie拿到。
session:会话
session机制:
客户端第一次请求服务端时,服务端会产生一个session对象(用于保存该客户的信息);并且每个session对象都会有一个唯一的sessionId(用于区分其他session);服务端由会产生一个cookie,并且该cookie=JSESSIONID,value=服务端sessionId的值;然后服务端会在响应客户端的同时,将该cookie发送给客户端,至此客户端就有了一个cookie(JSESSIONID);因此客户端的cookie就可以和服务端的session一一对应(JSESSION-sessionID)。
客户端第二次或第n次请求服务端时,服务端会先用客户端cookie中的JSESSIONID去服务端的session中匹配sessionid,如果匹配成功(cookie jssessionid和sessionid),说明此用户不是第一次访问,就无需再次登录;
session方法:
String getId():获取sessionId
boolean isNew():判断是否是 新用户(第一次访问)
void invalidate():使session失效(退出登录,注销)
void setAttribute()
Object getAttribute()
void setMaxInactiveInterval(秒):设置最大有效非活动时间(重新登录)
int getMaxInactiveInterval():获取最大有效非活动时间
cookie和session的区别:
- | session | cookie |
---|---|---|
保存的位置 | 服务端 | 客户端 |
安全性 | 较安全 | 较不安全 |
保存的内容 | Object | String |
6、application:全局对象
String getContextPath():获取虚拟路径
String getRealPath(String name):获取绝对路径(虚拟路径相对的绝对路径)
7、config:配置对象(服务器配置信息)
8、page:当前JSP页面对象
相当于java中的this
9、exception:异常对象
四种范围对象(小->大)
pageContext(page对象)
request
session
application
– | – | – | – |
---|---|---|---|
pageContext | JSP页面容器 | 当前页面有效 | 页面跳转后无效 |
request | 请求对象 | 同一次请求有效 | 请求转发后有效;重定向后无效 |
session | 会话对象 | 同一次会话有效 | 切换浏览器后无效(登录->退出) |
application | 全局对象 | 全局有效(整个项目有效) | 切换浏览器仍然有效;关闭服务、其他项目无效 |
以上四个对象共有的方法:
Object getAttribute(String name):根据属性名,获取属性值
void setAttribute(String name,Object obj):设置属性值(新增,修改)
例:setAttribute(“a”,“b”);//若a对象之前不存在,则新建一个a对象;若a之前已存在,则将a 的值改为b
void removeAttribute(String name):根据属性名,删除对象