JSP

JSP

JSP九大内置对象(自带的,不需要new也能使用的对象)

pageContext JSP页面容器
request     请求对象
session     会话对象
appliation  全局对象

response    响应对象

config     配置对象(服务器配置信息)
out        输出对象
page      当前JSP页面对象(相当于java中的this)
exception 异常对象

一、out: 输出对象,向客户端输出内容

二、request(见register.jsp&&show.jsp)

	request: 请求对象;存储“客户端向服务端发送的请求信息”r
	request对象的常见方法:
	String.getParameter (String name) :根据请求的字段名key.,返回字段值value,
	String[] getParameterValues (String name): 根据请求的字段名key,返回多个字段值value  ( checkbox )
	void setCharacterEncoding("编码格式utf-8") :设置请求编码 ( tomcat7以前默认iso-8859-1, tomcat8以后改为了utf-8)
	getRequestDi spatcher("b.jsp").forward(request, response);  :请求转发的方式跳转页面 A  -> B
	ServletContext getServerContext () :获取项目的ServletContext对象

	统一请求的编码 request
	gеt方式请求如果出现乱码,解决:
		a:统一每一个变量的编码(不推荐)
 		 newString( 旧编码, 新编码) ;
 		 name = new String (name. getBytes(" iso-8859-1"), "utf-8");
  
		b. 修改server. xml ,一次性的 更改tomcat默认get提交方式的编码 (utf-8)
		建议使用tomcat时,首先在server.xml中统一get方式的编码..URIEncoding="UTF-8"
		tomcat7 (iso-8859-1)     tomcat8 (utf-8)

		post
		request. setCharacterEncoding("utf-8") ;

三response(见login文件夹)

1.response:响应对象
提供的方法:
void addCookie(Cookie cookie):服务端向客户端增加cookie对象
void sendRedirect(String location)throws IOException:页面跳转的一种方式(重定向)
实例:登录
login.jsp -> check.jsp - > success.jsp
				请求转发			重定向
地址栏是否改变		不变check.jsp		改变success.jsp

是否保留第一次		保留				不保留
请求时的数据

	请求的次数			1					2

跳转发生的位置		服务端				客户端发出的第二次跳转

请求转发: 张三(客户端) -> 【服务窗口A(服务端) -> 服务窗口B】 ->张三
重定向:   张三(客户端) ->   服务窗口A(服务端   -> 去找B
		   张三(客户端) ->   服务窗口B(服务端) -> 结束
void setContetType(String type):设置服务端响应的编码(设置服务端的contetType类型)

四、session(服务端)(见cookie文件夹)

Cookie(客户端,不是内置对象):Cookie是由服务端产生,再发送给客户端保存。
相当于  本地缓存的作用: 客户端 -> 服务端(hello.mp4)
作用:提高访问服务端的效率,但是安全性较差。
Cookie对象由javax.servlet.http.Cookie类产生: key=value
方法:
public Cookie(String key,String value)
String getName();获取name
String getValue();获取value
void setMaxAge(int expiry);最大有效时间(秒)

服务端发送给客户端(增加cookie,response对象):
					response.addCookie(Cookie cookie)
页面跳转(转发、重定向)
客户端获取cookie对象(request对象):   request.getCookies();

不能直接获取某一个单独对象,只能一次性将全部的cookie拿到
通过F12发现,除了自己设置的Cookie对象外,还有一个name为JSESSIONID的cookie
建议 cookie 只保存英文数字,否则需要进行编码解码

3.使用Cookie实现 记住用户名 功能(见cookieDemo文件夹)

 4. session :会话
 a.浏览网站:幵始-关闭
 b.购物: 浏览、付款、退出
c.电子邨件:浏览、写邮件、退出
		幵始-结束

 session机制:
客戸端第一次求服各端吋,(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和session sessionID),说明该用户不是第一次访问,无需登录。

例子:
客户端:			顾客(客户端)
服务端:存包处	-	商场(服务端)
顾客第一次存包:商场判断此人是之前已经存过包(通过你手里是否有钥匙)。
如果是新顾客(没钥匙),分配一个钥匙给该顾客;钥匙 会和 柜子一一对应;
第二/n次存包:商场判断此人是之前已经存过包(通过你手里有钥匙)。
如果是老顾客(有钥匙),则不需要分配;该顾客钥匙会和柜子自动一一对应。

session:
a. session存储在服务端
b. session是在 同一个用户(客户)请求时共享
C.实现机制:第一次客户请求时产生一个sessionid并复制给cookie的isessionid 然后发给客户端。最终通过sessionId-	jsessionId一一对应
void setAttribute();
0bject getAttribute() ;
void setMaxInactiveInterval(秒) :设置最大有效非活动时间
int getMax InactiveInterval() :获取最大有效非活动时间

cookie和session的区别:    session     cookie
	保存的位置            服务端      客户端
	 	安全性               较安全      较不安全
保存的内容             0bject      String
实例:登录(见sessionDemo)

客户端在第一次请求服务器时,如果服务器发现此请求没有 JSESSIONID,则会创建一个name= JSESSIONID的 cookie,并返回给客户端

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

五、appliation全局对象

String getContextPath() 虛拟路径
String getRealPath(String name): 绝对路径(虚拟路径相对的绝对路径)

四种范围对象从小到大
pageContext JSP页面容器 当前页面有效
request 请求对象 同一次请求有效
session 会话对象 同一次会话有效
appliation 全局对象 全局有效(整个项目有效)

以上4个对象共有的方法:.
object getAttribute(String name) :根据属性名,或者属性值
void setAttribute (String name, Object obj) : 设置属性值(新增,修改)
setAttribute(“a”,“b”) ;//如果a对 象之前不存在,则新建一个a对象;如果a之前已经存在,则将a的值改为b
void removeAttribute(String name): 根据属性名,删除对象

pageContext当前页面有效(页面跳转后无效)
request同一次请求有效:其他请求无效(请求转发后有效: 重定向后无效)
session同一 次会话有效(无论怎么跳转, 都有效;关闭/切换浏览器后无效;从登陆->退出之间全部有效
application全局变量;整个项目运行期间都有效(切换浏览器仍然有效)关闭服务、其他项目无效

->多个项目共享、重启后仍然有效: JNDI

1.以上的4个范围对象,通过setAttribute() 赋值,通过getAttribute ()取值:
2.以上范围对象,尽量使用最小的范围叫因为对象的范围越大,造成的性能损耗越大。1

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值