内置对象的特点

内置对象
一、
我们先思考一下,我们这个网络访问的过程是怎样的?
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”。
然后就可以在页面上面直接打印了。

   <%=exception %>   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-urlencoded String contextPath = request.getContextPath();//页面传来的请求路径,form中的action String 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为null String 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高阶学习资料!

猜你喜欢

转载自blog.csdn.net/weixin_44331525/article/details/86525155