JAVA Web基础学习---JSP(二)

JSP内置对象

JSP内置对象是Web容器创建的一组对象,不使用new关键字就可以使用的内置对象,一共有9种内置对象,
分别为:out 、 request 、 response 、 session 、 applicationPage 、 pageContext 、 exception 、 config
其中常用的有:out 、 request 、 response 、 session 、 application
不太常用的对象:Page 、 pageContext 、 exception 、 config

1.out对象

out对象是JspWriter类的实例,是向客户端(这里指浏览器)输出内容的常用对象。
常用方法
· void println()向客户端打印字符
· void clear()清除缓冲区的内容。如果在flush之后调用,会抛出异常
· void clearBuffer() 也是清除缓冲区内容,但在flush之后不会抛出异常
· void flush()将缓冲区内容输出到客户端
· int getRemaining()返回缓冲区还剩余多少可用
· int getBufferSize()返回缓冲区的大小(字节数),如不设缓冲区则为0
· boolean isAutoFlush()返回缓冲区满时,是否自动清空缓冲区
· void close()关闭输出流

2.request对象

request对象表示客户端的请求,客户端的请求信息被封装在request对象中,通过他才能了解到客户的需求,然后做出响应,他是HttpServletRequest类的实例,request对象具有请求域,即完成客户端的请求之前,该对象一直有效.
常用方法

  1. String getParameter(String name)返回name指定参数的参数值(用户名,密码)
  2. Stringp[] getParameterValues(String name)返回包含参数name的所有值数组(复选框)
  3. void setAttribute(String,Object):存储此请求中的属性
  4. object getAttribute(String name)返回指定属性的属性值
  5. String getContentType():得到请求体的MIME类型
  6. String getProtocol()返回请求用的协议类型以版本号
  7. String getServerName():返回接受请求的服务器主机名

8.int getServerPort():返回服务器接受此请求所用的端口号
9.String getCharacterEncoding():返回字符编码方式
10.void setCharacterEncodign():设置请求的字符编码方式在server.xml的<connector></connector>内添加 URIEncoding="UTF-8"
11.int getContentLength():返回请求体的长度(以字节数)
12.String getRemoteAddr():返回发送此请求的客户端IP地址
13.String getRealPath(String path):返回虚拟路径的真实路径

下面通过一个小例子.看一下实现结果:
首先在项目中新建一个jsp文件,命名为reg.jsp,用于创建一个注册界面,把输出字符编码更改为utf-8,如下图:


image.png

使用表单方式创建界面结构,程序如下图:


image.png

新建一个request.jsp文件,用于接收表单传输的内容并测试request对象方法,程序代码如下:
image.png

实现结果如下:
image.png

点击登录之后,运行结果如下图:


image.png

response对象

respones对象包含了响应客户请求的有关信息,但在JSP中很少直接到它,它是HttpServletResponse类的实例,response对象具有页面的作用域,即访问一个页面时,该页面的response对象只能对这次访问有效,其他的页面response对象对当前页面无效
常用方法:
String getCharacterEncoding( ) 返回响应用的是何种字符编码
void setContentType (String type) 设置响应的MIME类型
PrintWriter getWriter( ) 返回可以向客户端输出字符的一个对象(注意比较:PrintWriter 与内置out对象的区别)
sendRedirect(java.lang.String location) 重新定向客户端的请求
测试代码如下所示:

image.png

image.png

有图可见,虽然out对象的输出程序代码写在前面,但是显示在由PrintWriter getWriter( )定义的outer对象后面.可见其两者的优先关系.
请求转发与请求重定向
1.请求重定向:
客户端行为,response.sendRedirect(),从本质上讲等同于两次请求,前一次的请求对象不会保存,地址栏的URL地址会发成改变!
2.请求转发:
服务器行为,request.getRequestDispatcher().forward(request,response);是一次请求,转发后请求对象会保存,地址栏的URL地址不会发成改变!

session对象

session介绍
1.1 session表示客户端与服务端的一次会话
1.2 Web中的session指的是用户在浏览某个网站的时候,从进入网站到浏览器关闭所经过的这段时间,也就是用户浏览这个网站所花费的时间
1.3 从上述定义中可以看到,session实际上是一个特定的时间概念
session保存在服务器内存中,并未不同用户保存不同session
session对象
session对象是一个JSP内置对象
session对象在第一个JSP页面被装载时自动创建,完成会话期管理
从一个客户打开浏览器并连接服务器开始,到客户关闭浏览器离开这个服务器结束,被称为一个会话
当一个客户访问一个服务器时,可能会在服务器的几个页面之间切换,服务器应当通过某种方法知道这是个客户,就需要session对象
session对象是HttpSession类的实例
常用方法
session对象常用方法
long getCreationTime():返回创建SESSION创建时间
public String getId():返回SESSION创建时JSP引擎为他设的唯一ID号
public Object setAttribute(String name,Object value):使用指定名称将对象绑定到此会话
public Object getAttribute(String name):返回与此会话中的指定名称绑定在一起的对象,如果没有对象绑定在改名下,则返回null
String[] getValueNames()"返回一个包含此SESSION中所有可用属性的数组
int getMaxInactiveInterval():返回两次请求间隔多长时间此SESSION被取消(单位秒)
测试程序如下:

image.png

页面结果如下:
image.png

当设置了session最大生存期限为10秒时,点击跳转到session2,实现如下图:
image.png

可见ID编号变了,说明这是第二次会话.
当取消session最大生存期限后,结果如下图:
image.png

可见ID号相同,用户名均存在,是同一次会话.
session生命周期
创建->活动->销毁

  1. 创建
    当客户端第一次访问某个jsp或者servlet时候,服务器会为当前会话创建一个sessionID,每次客户端向服务端发送请求时,都会将此sessionID携带过去,服务端会对此sessionId进行校验,会判断是否是同意会话
  2. 活动
    2.1 某次会话当中通过超链接打开的新页面属于同一次会话
    2.2 只要当前会话页面没有全部关闭,重新打开新的浏览器窗口访问同意项目时属于同一会话
    2.3 除非本次会话的所有页面都关闭后在重新访问某个Jsp或者Servlet将会创建新的会话
    注意事项:
    注意原有会话还存在,只是这个旧的sessionID任然存在与服务端,只不过再也没有客户端携带它然后交与服务端校验
    1. 销毁
      session销毁有三种方式
      3.2 调用了session.invalidate() 3.3 session超时(过期)
      3.4 服务器重新启动
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,080评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,422评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,630评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,554评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,662评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,856评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,014评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,752评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,212评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,541评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,687评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,347评论 4 331
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,973评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,777评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,006评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,406评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,576评论 2 349

推荐阅读更多精彩内容

  • JSP总结(经典) day1 JSP 定义: 1)Java Server Page, Java EE 组件,本...
    java日记阅读 3,421评论 0 13
  • 0. 引言 学习Jsp的目的是为了解技术从前后端强耦合到前后端分离的过程,增加自己的技术积淀。了解并且体会这个过程...
    付凯强阅读 1,209评论 0 5
  • 一、jsp定义及作用 JSP技术使用Java编程语言编写类XML的tags和scriptlets,来封装产生动态网...
    yzw12138阅读 1,227评论 0 0
  • JAVA相关基础知识 1、面向对象的特征有哪些方面 1.抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以...
    yangkg阅读 661评论 0 1
  • 前言 生命在前行中顿悟,岁月在积累中生香。无论何种事业,都要日积月累,平凡的工作也要努力做,每天不断提高。 (一)...
    金奇老师阅读 622评论 0 0