白梓墨

导航

请求转发,重定向

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
//page:指定的属性;
//language:jsp页面使用的脚本语言;
//import:导入类;
//pageEncoding:jsp文件自身编码;
//contentType:浏览器解析jsp的编码;
  
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
</body>
</html>
 
 
 
jsp内置对象:
1.out:向客户端输出内容;
2.pageContext:
3.request:请求对象,存储客户端向服务端发送的请求信息;
常见方法:
String getParameter(String name):根据请求的字段名key,返回字段值value;
String[] getParameterValues(String name):根据请求的字段名key,返回多个字段值value(checkbox)
void setCharacterEncoding("编码格式"):设置请求编码;
getRequestDispatcher("b.jsp").forward(request,response):请求转发的方式跳转页面   a跳转到b;
ServerletContext  getServerContext():通过项目的ServerletContext对象;
4.response:响应对象;
提供的方法:
1.void addCookie(Cookie cookis);服务端向客户端增加cookie对象;
2.void sebdRedirect(String locstion) throws IOException;页面跳转的一种方式(重定向);
3.void setContentType(String type):设置服务端响应的编码(设置服务端的ContentType类型)
  请求转发 重定向
地址栏是否发生改变 不变(check.jsp) 改变(success.jsp)
是否保留第一次请求时的数据 保留 不保留
请求的次数 1 2
转发:
 张三(客户端)-服务窗口(a)-服务窗口(B)
 
重定向:
张三(客户端)-服务窗口(A)-去找B
张三(客户端)-服务窗口(B)-结束
5.session:
  1.    Cookie(客户端,不是内置对象):Cooki是由服务端生成的,再发给客户端保存;
相当于本地缓存,客户端(hello.mp4,zs/abc)-服务端(hello.mp4;zs/abc)
作用:提高访问服务端的效率,但是安全行较差。
Cookie:name=value
javax.servlet.http.Cookie
public Coookie(String nsme,String value)
String getName()
String getValue()
void setMaxAge(int expiry);最大有效期(秒)
 
服务端准备Cookie:
response.addCookie(Cookie cookie)
页面跳转(转发,重定向)
客户获取cookie:request.getCookies();
 
建议cookie只保存英文数字,否则需要进行编码、解码
 
使用Cookie实现 记住用户名 功能
 
2.session:会话
 
a.浏览网站:开始-关闭
b.购物:浏览-付款-退出
c.电子邮件:浏览、写邮件、退出
                   开始-结束
 
 
session机制:
客户端第一次请求服务端时,服务端会产生一个session对象(用于保存该客户的的信息);
并且每个session对象都会有一个唯一的sessionID(用于区分其他session);
服务端又会产生一个cookie,并且该cookie的name=JESSIONID,value=服务端sessionID的值;
然后服务端会在响应客户端的同时,将该cookie发送给客户端,至此客户端就有了一个cookie(JESSIONID);
因此,客户端的cookie就可以和服务端的session一一对应(JESSIONID-sessionID)
 
客户端在第二次请求服务端时:服务端会先用客户端的cookie中的JESSIONID去服务端的session中匹配sessionid,如果匹配成功(cookie   jessionid和session   sessionid),说明用户不是第一次访问;
 
 
session方法:
String getId():获取sessionid
boolean  isNew():判断是否为新用户(第一次访问)
void invalidate():使session失效(退出登录、注销)
 
setAttribute();
getAttribute();
 
void setMaxInactiveInterval(秒):设置最大有效非活动时间;
int getMaxInactiveInterval(秒):获取最大有效非活动时间;
 
Cookie:
不是内置对象,要使用必须要new;
但是,服务端会自动产生一个(服务端自动new一个cookie)name=JESSIONID的cookie,并返回给客户端
 
cookie和session的区别:
  session cookie
保存的位置 服务端 客户性
安全性 较安全 较不安全
保存的内容 Object String
JSP0大内置对象:
pageContext    JSP页面内容
request    请求对象
response   响应对象
session   会话对象
application   全局对象
config   配置对象(服务器配置信息)
out   输出对象
page   当前JSP页面对象(相当于java中的this)
exception  异常对象
 
四种范围对象:
pageContext    JSP页面内容             当前页面有效             页面跳转后无效
request    请求对象        同一次请求有效          其他请求无效(请求转发后有效;重定向后无效)
session   会话对象        同一次会话有效          无论怎么跳转,都有效;关闭/切换浏览器后无效;从登录-退出之间全部有效
application   全局对象       全局有效(整个项目有效)      整个项目运行期间都有效(切换浏览器任然有效);关闭服务、其他项目无效;
以上四个范围对象,通过setAttribute()赋值,通过getAttribute()取值;
以上四个范围对象,尽量使用最小的范围。因为范围越大,造成的性能损耗就越大;
 
以上四个对象共有的方法:
Object getAttribute(String name):根据属性名,或者属性值;
void setAttribute(String name ,Object obj):设置属性值(新增,修改)
        setAttribute("a","b");如果a对象之前不存在,则新建一个a对象;
           如果a之前已经存在,则将a的值改为b
void removeAttribute(String name):根据属性名,删除对象
6.application:全局对象
String getContextPath()虚拟路径;
String getRealPath(String name):绝对路径(虚拟路径 相对的绝对路径)
7.config:
8.page:
9.exception:
 
 

posted on 2020-01-01 17:26  白梓墨  阅读(136)  评论(0编辑  收藏  举报