2019-01-17

内置对象

一、

我们先思考一下,我们这个网络访问的过程是怎样的?

1、http协议特点。

超文本传输协议(HTTP-Hypertext transfer protocol) 是一种详细规定了浏览器和万维网服务器之间互相通信的规则,通过因特网传送万维网文档的数据传送协议。q超文本传输协议 q 无状态协议 q 用于通过 Internet 发送请求消息和响应消息 q 使用端口接收和发送消息,默认为80端口HTTP是基于客户/服务器模式且是面向连接的,HTTP能够传送任意类型数据对象。HTTP连接是一种一次性连接,每次连接只处理一个请求,HTTP是一种无状态协议,即服务器不保留与客户交易时的任何状态,

2、http消息头

我们平时上网感觉就是输入网址,然后从服务器下载网页显示就可以了,事实这个过程非常复杂,需要传输的内容也非常多,在一个每一次访问都是一个请求(request),服务器对这个请求都会做出应答(response),在这个过程中传输的内容都是根据http的协议封装到http的消息头中的。http的消息头有其固定个格式规范,从这个消息头里面我们可以得到很多信息,虽然大部分信息对普通用户而言都是无关重要的,但是对我们程序员来说可能是非常有用的。消息头的内容都已经封装到jsp的内置对象里了,所以我们并不需要自己手动的去解析它,这里我们只需要简单的理解就可以了。

二、内置对象

qJSP 隐式对象是 Web 容器加载的一组类 q它不像一般的Java对象那样用”new”去获取实例,而是可以直接在JSP页面使用的对象  q隐式对象的名称是 JSP 的保留字 qJSP 使用 Java 定义的隐式对象来访问网页的动态内容。

事实上我们已经使用过jsp的隐式对象了,比如out对象,不是多有的对象在使用前都必须先new出来吗,为什么这些对象不需要呢,你可以再去查看jsp转译后的java文件,事实这个java文件不是一个普通的java文件,它已经帮助我们构造了很多很有用的对象了,所有这些对象我们并不需要自己手动的去new出来,就可以直接使用了。

常用的隐式对象有:

输入/输出对象:request,response,out。

作用域通信对象:session,application,pageContext。

Servlet 对象:page,config。

错误对象:exception。

上面这些对象我们以后都会学习到,这里先讲解一下exception、request和response三个内置对象。

1、exception对象

qexception对象用于处理 JSP 页面中的错误 qexception 对象用于访问执行 JSP 的过程中引发的异常 qexception 对象是 java.lang.Throwable 类的实例。

先要修改page指令为isErrorPage="true"。

然后就可以在页面上面直接打印了。

<body>

   <%=exception %>

  </body>

2、request对象

request是一个非常重要的对象,它会把用户的请求操作封装在这个对象中。http消息头中一些很有用的信息都可以取得,具体方法如下:

String encodString = request.getCharacterEncoding();//请求编码int contentLength = request.getContentLength();//请求内容的长度,get提交是-1,post则有长度String ContentType = request.getContentType();//请求内容的类型,get提交是null,post则为application/x-www-form-urlencodedString contextPath = request.getContextPath();//页面传来的请求路径,form中的actionString LocalAddr = request.getLocalAddr();String LocalName = request.getLocalName();int LocalPort = request.getLocalPort();String RemoteAddr = request.getRemoteAddr();// 获得客户端的IP地址String RemoteHost = request.getRemoteHost();// 获得客户端电脑的名字,若失败,则返回客户端电脑的IP地址String RemoteUser = request.getRemoteUser();String Method = request.getMethod();//页面提交的方法String QueryString = request.getQueryString();//请求字符串,get提交则有,post为nullString RequestURI = request.getRequestURI();// 获得发出请求字符串的客户端地址String ServerName = request.getServerName();// 获得服务器的名字int ServerPort = request.getServerPort();// 获得服务器的端口号String ServletPath = request.getServletPath();// 获得客户端所请求的脚本文件的文件路径System.out.println("编码:" + encodString + ";请求内容的长度:" + contentLength+ ";请求类型:" + ContentType + ";请求路径:" + contextPath);System.out.println("本地地址:" + LocalAddr + ";本地名称:" + LocalName+ ";本地端口:" + LocalPort);System.out.println("远程地址:" + RemoteAddr + ";远程用户名:" + RemoteUser+ ";远程端口:" + RemoteHost);System.out.println("请求方法:" + Method);System.out.println("请求字符串:" + QueryString + ";请求url:" + RequestURI);System.out.println("服务名称:" + ServerName + ";服务端口:" + ServerPort);System.out.println("路径:" + ServletPath);String user_agent = request.getHeader("User-agent");// 返回客户端浏览器的版本号、类型System.out.println("user_agent>>" + user_agent);// 返回所有request header的名字,结果集是一个Enumeration(枚举)类的实例System.out.println("浏览器和客户端的信息");Enumeration enumeration = request.getHeaderNames();while (enumeration.hasMoreElements()) {    String elent = (String) enumeration.nextElement();    System.out.println(elent + ">>" + request.getHeader(elent));}

另外还有三个很有用的方法是

request.getParameter("uanme");request.setAttribute("name", "value");request.getAttribute("name");


小编整理了一些java进阶学习资料和面试题,需要资料的请加JAVA高阶学习Q群:664389243 这是小编创建的java高阶学习交流群,加群一起交流学习深造。群里也有小编整理的2019年最新最全的java高阶学习资料!



rmal;t��[\�

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,539评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,911评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,337评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,723评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,795评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,762评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,742评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,508评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,954评论 1 308
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,247评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,404评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,104评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,736评论 3 324
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,352评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,557评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,371评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,292评论 2 352

推荐阅读更多精彩内容

  • JSP总结(经典) day1 JSP 定义: 1)Java Server Page, Java EE 组件,本...
    java日记阅读 3,434评论 0 13
  • JAVA面试题 1、作用域public,private,protected,以及不写时的区别答:区别如下:作用域 ...
    JA尐白阅读 1,151评论 1 0
  • get和post方法提交,mvc三层模式介绍和servlet的生命周期 servlet是一个比较重要的内容,我们以...
    会飞的猪bj阅读 203评论 0 0
  • jsp的实质是什么? 一、JSP的概念 我们的目标是要搞清楚什么是JSP,他和HTML的静态页面有什么区别呢? j...
    会飞的猪bj阅读 276评论 0 0
  • 婆媳关系是世界难题,但总有解决办法。作为一个聪明女人,合格的妻子,负责任的母亲,到底该怎样应对婆婆呢?赶紧学学这样...
    jnrk120阅读 350评论 0 1