JSP隐式对象是可以直接在jsp页面使用的对象,不用使用"new"来获取实例
常用的有五个内置对象 request ,response, session,application,out (在这里只说4个)
request里重要的方法是setAttribute和getAttribute
<% //存储request对象 request.setAttribute("name","这里是名字"); //返回name属性的值 String name = (String)request.getAttribute("name"); %> <%= name %>页面效果
response对象的转发和重定向
转发: 张三(客户端) 到 -> 【窗口 A (服务端 ) -> 窗口B 】 比如张三去问A借某个东西,A没有,于是A问B借。B把东西给A,A又把东西给张三。张三和B之间没有任何交集 重定向: 张三(客户端) -> 窗口 A (服务端 ) ->去找B 张三(客户端) -> 窗口 B (服务端 ) ->结束 例:张三问A借东西,A没有,A给张三说:你去问B借。然后张三就又去问B借,借到之后结束 // 转发,地址栏不会改变 request.getRequestDispatcher("two.jsp").forward(request,response); //重定向,地址栏会发生改变 response.sendRedirect("MyJsp2.jsp"); 转发重定向地址栏是否改变不变改变是否保留第一次保留不保留请求的次数12跳转发生的位置服务端客户端发出的第二次跳转同一次会话有效 (无论怎么跳转,都有效;关闭/切换浏览器后无效 ; 从 登陆->退出 之间 全部有效)
客户端第一次请求服务端时,(jsessionid-sessionid)服务端会产生一个session对象(用于保存该客户的信息); 并且每个session对象 都会有一个唯一的 sessionId( 用于区分其他session); 服务端由会 产生一个cookie,并且 该cookie的name=JSESSIONID ,value=服务端sessionId的值; 然后 服务端会在 响应客户端的同时 将该cookie发送给客户端,至此 客户端就有了 一个cookie(JSESSIONID); 因此,客户端的cookie就可以和服务端的session一一对应(JSESSIONID - sessionID) 客户端第二/n次请求服务端时:服务端会先用客户端cookie种的JSESSIONID 去服务端的session中匹配sessionid, 如果匹配成功(cookie jsessionid和sesion sessionid),说明此用户 不是第一次访问,无需登录;例子:
客户端: 顾客(客户端) 服务端: 存包处 - 商场(服务端) 顾客第一次存包:商场 判断此人是 之前已经存过包(通过你手里是否有钥匙)。 如果是新顾客(没钥匙) ,分配一个钥匙 给该顾客; 钥匙 会和 柜子 一一对应; 第二/n次 存包:商场 判断此人是 之前已经存过包(通过你手里是否有钥匙) 如果是老顾客(有钥匙),则不需要分配;该顾客手里的钥匙 会 和柜子 自动一一对应。session方法:
String getId() :获取sessionId boolean isNew() :判断是否是 新用户(第一次访问) void invalidate():使session失效 (退出登录、注销) void setAttribute() Object getAttribute(); void setMaxInactiveInterval(秒) :设置最大有效 非活动时间 int getMaxInactiveInterval():获取最大有效 非活动时间application全局变量
String getContextPath() 虚拟路径 String getRealPath(String name): 绝对路径(虚拟路径 相对的绝对路径)