21、内置对象

学习目标:

1、了解JSP的内置对象

2、着重了解request对象的方法和使用

学习过程:

一、复习

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

1、http协议特点。

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

2、http消息头

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

二、内置对象

JSP 隐式对象是 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对象

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

先要修改page指令为

<%@ page language="java" isErrorPage="true"  pageEncoding="UTF-8"%>

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

<body>
   <%=exception %>
</body>

2、request对象

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

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
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("username");

//往request作用域设值和取值
request.setAttribute("name", "test");
request.getAttribute("name");
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值