首页 > Web开发 > 详细

JSP内置对象

时间:2020-04-18 16:52:41      阅读:52      评论:0      收藏:0      [点我收藏+]

------------恢复内容开始------------
JSP中的内置对象
1.什么是内置对象
直接在jsp页面中可以使用的对象

2.内置对象有哪些?
jsp中有9大内置对象
pageContext jsp页面上下文对象,可以获取其他内置对象
request 从客户端向服务器发送的请求对象
session 服务器为客户端创建的会话对象
application 代表应用或者整个工程。

out		 向输出流写入内容的对象
response	 从服务器向客户端作出响应的对象

page	 当前的jsp翻译成Servlet后的对象的引用 this
config	 jsp的ServletConfig对象
exception	 表示jsp页面运行时产生的异常对象  jsp页面指令必须指定 isErrorPage="true",才可以使用
	需要另外打开浏览器输入网址才能看到效果。
final javax.servlet.jsp.PageContext pageContext;
javax.servlet.http.HttpSession session = null;
final javax.servlet.ServletContext application;
final javax.servlet.ServletConfig config;
javax.servlet.jsp.JspWriter out = null;
final java.lang.Object page = this;

final javax.servlet.http.HttpServletRequest request
final javax.servlet.http.HttpServletResponse response
java.lang.Throwable exception 

3.out对象
类型:JspWriter类 相当于带缓存的PrinWriter
可以向客户端浏览器输出信息,普通文本,HTML标记,js脚本。

PrinWriter:
   write(内容):直接向浏览器写出内容

JspWriter:
   write(内容):向jsp缓冲区写出内容
out对象输出内容会放置到response的缓冲区去。

当满足以下条件之一,缓冲区内容直接写出到客户端浏览器:
	1)缓冲区满了
	2)刷新缓冲区
	3)关闭缓冲区
	4)jsp页面执行完成

请求响应模式:
1.客户端向服务器端发送请求,2.服务器端接收客户端请求数据,3.进行处理,4.然后再响应到客户端!
编写了前台登录页面,输入用户名和密码,将用户名和密码发送到后台页面,并模拟判断登陆是否成功!
request对象
获取请求参数数据:1.接收单个参数值: request.getParameter("uname")
2.接收多个参数值:request.getParameterValues("hobby")
如果请求页面用户什么都没有输入,文本框形式的接收到的参数值是空字符串
如果是选择框,不选或参数名错误,获取到的参数值都为null
如果接收的参数名不存在,接收到的参数值就为null
第一次访问页面时不会传递任何参数,除非网址拼接带有参数

如果参数值有中文,
处理方式:
如果是post请求方式: 在接收参数之前设置编码格式<% request.setCharacterEncoding("utf-8"); %>
如果是get请求方式:方式一:new String( uname.getBytes("iso-8859-1"),"utf-8")或
new String( uname.getBytes(),"utf-8")
方式二:在Tomcat服务器server.xml文件中加上URIEncoding="utf-8"

两个按钮共用一个表单:(登陆,注册)
一个按钮设置submit,
另外一个按钮设置button,添加click事件。在事件中window.location.href=URL
属性管理:
提供所在请求域范围数据的存取方法
向所在域保存数据
void setAttribute(String name,Object value);
向所在范围取数据:
Object getAttribute(String name);
作用:可以保存数据,也可以获取数据,分享数据
保存的数据只能本页面或请求转发页面获取(同一个请求有效),其他页面无法获取
移除某个保存数据:
request.removeAttribute("bookname")

  request.getRequestDispatcher("welcome.jsp").forward(request, response);
  请求转发:
    1).地址栏不会改变
2).请求次数只有一次,主要是服务器内部帮客户端执行了后续工作
3).转发过程中,可以把数据保存到request域对象中
4).请求的资源只能是本网站的

response对象
1.页面重定向
sendRedirect(url)
1).地址栏会改变,变成重定向到的地址
2).请求次数至少是两次,服务器在第一次请求后,会返回302以及一个地址,
浏览器根据这个地址,执行第二次请求访问。
3).重定向过程中,不可以把数据保存到request域对象中
4).请求的资源可以是任意的

   2.设置客户端浏览器接收响应数据的编码格式以及如何展示响应数据
   response.setContentType("text/html; charset=UTF-8");

   3.设置页面自动刷新   例如:
response.setHeader("refresh","10");

   4.向客户端直接发送信息
     response.getWriter().write("response输出信息!");

会话管理:管理浏览器和服务器之间的会话过程中产生的会话数据
1.cookie技术:会话数据保存在客户端浏览器
cookie:小饼干,其实就是一份小数据,是服务器发送到客户端保存的一份小数据
应用场景:自动登录,浏览记录,购物车
为什么要用cookie
http的请求是无状态。客户端与服务器在通讯的时候,是无状态的,
其实就是客户端在第二次访问的时候,服务器根本就不知道这个客户端以前有没有访问过。
为了更好的用户体验,更好的交互[自动登录]。如果从公司层面讲,就是为了更好收集用户
习惯或信息[大数据]
如何使用Cookie
1.添加Cookie到客户端
在响应的时候,添加Cookie(需要用到response)
Cookie cookie=new Cookie(String name,String value);
//1).创建Cookie对象
Cookie cookie=new Cookie("uname","zhangsan");
//2).把Cookie对象添加到response对象中
response.addCookie(cookie);
2.获取Cookie(需要用到request)
Cookie[] cookies= request.getCookies();
if(cookies!=null){
for(Cookie c:cookies){
String name= c.getName();
String value=c.getValue();
out.print(name+":"+value+"
");
}
}
原理:
1.服务器创建Cookie对象,把会话数据存储到cookie对象中。
Cookie cookie=new Cookie("uname","zhangsan");
2.服务器发送cookie信息到浏览器
response.addCookie(cookie);
//set-cookie:uname=zhangsan(响应头部信息中)
3.浏览器得到服务器发送的cookie,然后保存到浏览器端。
4.浏览器下次访问服务器时,会带着cookie信息
//cookie:uanme=zhangsan(请求头部信息中)
5.服务器接收到客服端浏览器带来的cookie信息
request.getCookies()

注意点:
   1)cookie没有设置有效期,其作用与session相似,cookie的添加与浏览器关闭
   2)设置有效期,生存期与有效期相关,与浏览器的打开与关闭无关
   3)cookie保存的数据只能是字符串,而且不能有中文
   4) setPath(String uri):设置cookie的有效访问路径,有效路径指的是访问页面的网址中带有该路径
   5)setMaxAge(int time) :设置cookie的有效时间
          正整数:表示cookie数据保存在浏览器缓存目录中的时间
	  负整数:表示cookie数据保存在浏览器内存中。浏览器关闭,cookie就丢失。
	  零:表示删除同名的cookie数据
       6)可以保存多个cookie,但是浏览器保存一般只允许两三百多左右。每个cookie的大小限制为4kb左右。
    
   2.session技术:会话数据保存在服务器端
     1)创建或得到session对象
    getSession() 创建或得到session对象
    getSession(true) 创建session对象
    getSession(false) 得到session对象
 2)保存会话数据到session对象
    向所在域保存数据
	void  setAttribute(String name,Object value);
    向所在范围取数据:
	Object  getAttribute(String name);
    作用:可以保存数据,也可以获取数据,分享数据
        保存的数据可以是本网站同一个浏览器中任意页面,(必须是同一个浏览器),关闭浏览器,保存数据失效。
    移除某个保存数据:
         removeAttribute("bookname")
  3)设置session对象
     a)设置session的有效时间setMaxInactiveInterval(int n)(默认有效时间:30分钟)
     b)销毁session对象
        invalidate()
	这个方法执行之后不会马上销毁session对象,本页面执行完毕之后销毁session对象
     c)getId()获得session编号
       sessionid:7BD0AEAA80F716ED2677689D68DF57FE 
       sessionid:7BD0AEAA80F716ED2677689D68DF57FE
       不同浏览器:
       sessionid:7B8573EB1CB59010676D54B3762B211B
       sessionid:7B8573EB1CB59010676D54B3762B211B
           第一次访问本网站,响应头部信息中有
       JSESSIONID=7E884AB65AB5818A79F98900482BC7C1
       第二次访问本网站:请求头部信息中有
       Cookie: JSESSIONID=7E884AB65AB5818A79F98900482BC7C1

session原理
session为什么能够识别不同的浏览器
浏览器1:第一次访问网站时,服务会分配一个唯一的一个标记sessionid:s001,
发送到客户端浏览器保存
1)创建session对象s1,保存数据
浏览器1的新窗口(带有s001的标记访问服务器查询session对象,s001->s1)
1)获得session对象,以及获得保存的数据

 新的浏览器1:(没有带s001,所以不能得到浏览1中的s1对象)
          第一次访问网站时,服务会分配一个唯一的一个标记sessionid:s002,
          1)创建session对象s2,保存数据
 新的浏览器1的新窗口(带有s002的标记访问服务器查询session对象,s002->s2)
         1)获得session对象,以及获得保存的数据 
    
 浏览器2:(没有带s001,所以不能得到浏览1中的s1对象)
          第一次访问网站时,服务会分配一个唯一的一个标记sessionid:s003,
       1)创建session对象s3,保存数据
 浏览器2的新窗口(带有s003的标记访问服务器查询session对象,s003->s3)
         1)获得session对象,以及获得保存的数据 
   

 1) 第一次访问网站时创建session对象,会给session对象分配一个唯一的一个标记id,
     JSSIONID,new HttpSession();
 2)  把JSSIONID作为cookie值发送给浏览器保存
 3)第二次访问时,浏览器带着JSSIONID的cookie访问服务器
 4)服务器得到JSSIONID,在服务器中搜索是否存放对应的session对象
 5)如果找到对应编号的session对象,直接返回该对象
 6)如果找不到对应编号的session对象,创建session对象,继续按1)的流程走。

application对象

  保存全局数据到application对象
    向所在域保存数据
	void  setAttribute(String name,Object value);
    向所在范围取数据:
	Object  getAttribute(String name);
    作用:可以保存数据,也可以获取数据,分享数据
         保存的数据可以是本网站中任意页面,关闭服务器,保存数据失效。
    移除某个保存数据:
         removeAttribute("bookname")

------------恢复内容结束------------

JSP内置对象

原文:https://www.cnblogs.com/ChristianYu/p/12726548.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!