JSP9大内置对象

内置对象

	pageContext  JSP页面容器
	request   请求对象
	session   会话对象
	appliation 全局对象
	
	
	response  响应对象
	
	config  配置对象(服务器配置信息)
	out    输出对象
	page   当前JSP页面对象(相当于java中的this)
	exception 异常对象

四种范围对象

       												范围
pageContext:jsp页面容器(page对象):		当前页面有效(页面跳转无效)
request:请求对象;				同一次请求(请求转发有效,重定向无效)
session 会话对象							同一次会话(从登陆->退出都有效)
applicaton  全局对象	  全局有效(当前项目有效)服务器关闭、其他项目无效

多项目共享、重启后任然有效:JNDI技术
以上范围对象,尽量使用最小的范围, 对象范围越大,造成性能损耗越大

request:请求对象;存储“客户端向服务器发送的请求信息
get提交方式:method=“get“ 和地址栏、超链接请求方式默认 都属于get提交

get与post 请求方式上的区别:
	a、get 在地址栏显示 请求信息 (但是地址栏能够容纳的信息有限 4~5kb; 如果请求数据存在大文件 )
	b、 文件上传 必须是post
	推荐post

统一请求编码方式
	get:
		a、	统一每一个变量 的编码(每一个都改)
			name = new String(name.getBytes(“ios-8859-1”),”utf-8”)
			tomcat 7(ios-8859-1)
		b、	修改 server.xml  一次性的修改
			在改端口 的位置后加URIEncoding=”UTF-8”
	post:
		 request.setCharacterEncoding("utf-8") ;
response 响应对象

代码

	response.sendRedirect("success.jsp") ;//页面跳转:重定向, 导致数据丢失
		//页面跳转:请求转发, 可以获取到数据,并且 地址栏 没有改变(仍然保留 转发时的页面check.jsp)
	equest.getRequestDispatcher("success.jsp").forward(  request,response);

示例:
login.jsp -> check.jsp ->
两种方式的差别

请求转发重定向
地址栏是否改变不改变(check.jsp)改变(success.jsp)
是否保留第一次请求时的数据保留不保留
请求的次数12 先check.jsp –> success.jsp

在这里插入图片描述

session(服务端)
Cookie(客户端 ,不是内置对象):

有服务端产生,再发给客户端保存,相当于 本地缓存的作用,提高访问效率 但是安全性较差

	Cookie : key = value
	javax.servlet.http.Cookie
	public Cookie(String name , String value)
	String getName();获取name
	String getValue();获取value
	void sexMaxAge(int expiry);设置最大有效期(秒)
过程

1、服务端准备Cookie:
2、response。addCookie(Cookie cookie)
3、页面跳转(转发、重定向)
4、客户获取cookie:request.getCookies()

特点

a、 服务端增加cookie:response对象: 客户端获取对象:request对象
b、 不能直接获取某一单独对象,只能一次性将 全部cookie拿到
c、 除了自己设置的cookie对象外, 还有一个name为JSESSIONID的cookie
建议cookie只保存 数字英文 否则需要进行编码、解码
3、使用cookie记住 用户名 功能

4、session 会话:
a、浏览网站:开始—结束
b、购物 浏览、付款、退出

session机制:
1、客户端第一次请求服务端时,(jsessionId - sessionid)服务端会产生一个session 对象(用于保存该客户的信息);
	、并且每个session对象 都会有唯一的sessionID(用于区分其他的session);
	、服务端也会 产生一个cookie ,并且 该cookie 的name= JSEESIONID,value=服端sessionID的值;
	、然后 服务端会在 响应客服端的同时 将该cookie发送给客户端 自此 客户端就有了一个cookie(JSESSIONID);
	因此,客户端的cookie就可以和服务端的sessionID一一对应 (JSESSIONID-- sessionID)

2、客户端第二n/次请求服务端时:
	服务端会先根据客户端cookie 中的JSEESSIONID 去服务端中匹配sessionID如果匹配成功,
	说明此用户不是第一次访问,无需登录; 
session方法:( 在同一次会话中共享 )
	String getID() : 获取sessionID
	boolean isNew() : 判断是否是新用户(第一次访问)
	void invalidate() : 使session失效;

	属性:
	getAttribute()
	setAttribute()

	void   setMaxInactiveInterval(秒): 设置最大有效  非活动时间
	int  getMaxInactiveInterval(); 获取最大有效 非活动时间
Cookie

a、不是内置对象 要使用,必须new
b、但是,服务端会自动生成一个(服务器自动new一个cookie) name = JSESSIONID的cookie 并返回给客户端

cookie 与 session 的区别

sessioncookie
保存的位置服务端客户端
安全性较安全较不安全
保存的内容objectstring
applicaton 全局对象
	String  getContentPath() 虚拟路径
	String  getRealPath(“虚拟路径”)虚拟路径 相对的 绝对路径

具体方法介绍

四个对象共有的方法
object getAttribute(String  name);
void setAttribute(String name,object  obj)设置属性值(增加、修改)
void removeAttribute(String name)删除对象
1、request 对象, 获取提交的信息
		
from  action=“JSP页面” method=get (显示地址栏)| 	post(不显示)  
			JSP页面String  getParameter(String  s)
			String[]  getParameterValues(String  s) 
 
	设置JSP请求编码  request.setCharacterEncoding("UTF=8");

	getRequestDispatcher(“B.jsp”).forword(request,response) (常用写法):请求转发 的方式跳转A -> b
	
	ServletContext getServerContext(); 获取项目的ServletContext 对象

	getProtocol() 获取用户向服务器提交信息所使用的通信协议, 比如http/1.1等。
	getServletPath() 获取用户请求的JSP页面文件的目录。 				
	getContextPath() 获取用户请求的当前Web服务目录。 			
	getRemoteAddr() 获取用户的IP地址。
	getRemoteHost() 获取用户机的名称(如果获取不到,就获取 IP地址)。		
	getServerName() 获取服务器的名称。 
	getServerPort() 获取服务器的端口号。
2、response对象 动态响应
	void addCookie(Cookie   cookie)向服务器增加cookie对象
	sendRedirect(Sting   location)  throws  IOException :页面跳转的一种方式(重定向)
	void setContentType(String type):设置服务器响应的编码( 服务器contentType)  s 可取得值:text/html , text/plain , image/gif等
3、session对象 记录会话(相关链接) 同一个id号是同一个用户 信息留在服务器端
	1.Long getCreationTime():返回Session创建时间
 	2.Public String getid():返回session创建时JSP引擎为其分配的唯一ID
	3.public void setAttribute (String key ,Object obj):session对象可以调用 该方法将参数Object指定的对象obj添加到
		session对象中,并为添加的 对象指定了一个索引关键字。
	4.public Object getAttribute(String key):获取session对象索引关键字是 key的对象。		
	5.session对象使用setMaxInactiveInterval(int interval)方法设置 最长的“发呆”状态时间。默认发呆时间30分钟
4、application对象 有服务器创建
	1、public void setAttribute(String key ,Object obj)
		application对 象可以调用该方法将参数Object 指定的对象 obj添加到application 对象中,
		并为添加的对象指定了一个索引关键字。 	
	2、public Object getAttribute(String key)获取application对象含 有的关键字是key的对象。
	3、public Enumeration getAttributeNames()产生一个枚举对象, 
		该枚举对象使用nextElemets()遍历application 中的各个对象对应 的关键字
5、out 对象
	1.out.println() 向客户端输出字符串 
	2.out.flush() 将缓冲区内容输出到客户端 	
	3. out.clearBuffer() 清除缓冲区的内容
	param标记不能独立使用,需作为jsp:include、 jsp:forward、jsp:plugin标记的子标记来使用。
	 	param动作标记语法格式是:
		<jsp:param name= "名字" value= "指定给param的值">用request可以得到传来的值
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值