
jsp内置对象详解.ppt
70页第4章 JSP内置对象详解 Jsp基础,熟练掌握 为什么叫JSP内置对象 不用声明就可以在jsp页面的脚本部分使用 第4章 JSP内置对象详解 4.1 请求对象:request 4.2 响应对象:response 4.3 会话对象:session 4.4 多客户端共享对象:application 4.5 页面对象:page 第4章 JSP内置对象详解 4.6 页面上下文对象:pageContext 4.7 输出对象:out 4.8 配置对象:config 4.9 异常对象:exception http协议的运行过程 •WWW协议(World Wide Web) •使用浏览器从网站获取HTTP页面时,使用HTTP (Hypertext Transfer Protocol)协议规定信息在 Internet上的传输方法,特别规定了浏览器与服务 器的交互方法 •从网站获取页面时,首先浏览器在网站上打开一 个对网络服务器的连接,并发出请求,服务器收 到请求后响应,返回结果 HTTP请求的结构 包括请求行、头域和可能的信息体 例: GET/hello.htm HTTP/1.1 Host: •一个典型的请求包含许多HTTP请求头。
头提供了 关于信息体的附加信息及请求的来源,其中有些 头是标准的,有些头和特定的浏览器有关 •请求还可能包含信息体如表单内容 Accept:浏览器可接受的MIME类型 Accept-Charset:浏览器可接受的字符集 Accept-Encoding:浏览器能够进行解码的数据编码方式,如gzipServlet能够向 支持gzip的浏览器返回经gzip编码的HTML页面许多情形下这可以减少5到10 倍的下载时间 Accept-Language:浏览器所希望的语言种类,当服务器能够提供一种以上的语言 版本时要用到 Content-Length:表示请求消息的正文长度 Cookie:这是最重要的请求头信息之一 From:请求发送者的email地址,有一些特殊的web客户程序使用,浏览器不会用 到它 Host:初始URL中的主机和端口 Referer:包含一个URL,用户从该URL代表的页面出发访问当前请求的页面 User-Agent:浏览器类型,如servlet返回内容与浏览器类型有关则该值非常有用 UA=Pixel,UA-Color,UA-OS,UA-CPU:由某些版本的IE浏览器所发送的非标准 的请求头,表示屏幕大小、颜色深度、操作系统和CPU类型。
HTTP响应的结构 •每个响应都由状态行开始,可以包含几个头及可 能的信息体,称作响应的HTTP头和响应信息体 •这些头和信息体由服务器发送给客户的浏览器, 信息体就是客户请求的网页的运行结果,对于JSP 页面,就是网页的静态信息 4.1 请求对象:request •内置对象request封装了用户提交的信息该对象 调用相应的方法可以获得封装的信息 •客户一般使用HTML表单向服务器的某个JSP页面 提交信息 •例: • •提交的手段 • 4.1 请求对象:request 4.1.1 获取请求参数 4.1.2 在作用域中管理属性 4.1.3 获取Cookie对象 4.1.4 获取客户端信息 参数“name”与form表单中的name属性对应,或者与提交链接的参 数名对应,如果参数值不存在,则返回null值,该方法的返回值类型是 String request对象通过getParameter()方法可以用来获取用户提交的数据 获取请求参数的使用格式如下: 获取请求参数 String name=request.getParameter(“name”) 例:request.getParameter(“boy”) 例: tree.jsp 获取文本框提交的信息: 获取按钮的名字: 例: try{ number=Double.parseDouble(textContent); if(number=0) { r=Math.sqrt(number); out.print(“”+String.valueOf(number)+”的平方根:”); out.print(“”+String.valueOf(r)); } else { out.print(“”+”请输入一个正数”); } } catch(NumberFormatException e) { out.print(“”+”请输入数字字符”); } •使用对象前确定客户是否已提交数据,如客户 还没有提交表单数据,那调用该对象就会出现 空对象错误。
即NullPointException异常为了 避免使用空对象,可以添加如下代码: String textContent=request.getParameter(“girl”); double number=0,r=0; if(textContent==null) { textContent=“”; } 处理汉字对象 •当用request对象获取客户提交的汉字字符时, 会出现乱码问题,所以对含有汉字字符的信息 必须进行特殊处理 •首先,将获取的字符串用ISO-8859-1进行编码 ,并将编码存放到一个字节数组中,然后再将 这个数组转化成字符串对象,例: String textContent=request.getParameter(“boy”); Byte b[]=textContent.getBytes(“ISO-8859-1”); textContent=new String(b); 例: tree.jsp 获取文本框提交的信息: 获取按钮的名字: 在作用域中管理属性 在进行请求转发操作时,把一些数据带到转发后的页面处理这时, 就可以使用request对象的setAttribute()方法将数据设置在request范围内 存取。
在request作用域中,设置转发数据的方法使用格式如下: request.setAttribute(“key”,value); 参数key为String类型的键名在转发后的页面取数据时,通过这个 键名来获取数据;参数value为Object类型的键值,代表需要保存在 request范围内的数据在requet作用域中,获取转发数据的方法使用格式 如下: Object object=request.getAttribute(“name”); 在requet作用域中,获取所有属性的名称集的方法使用格式如下 : request.getAttributeNames(); 该方法返回值是枚举类型(Enumeration)数据 示例:详见教材及源代码 index.jsp 用户注册信息 账号: 密码: 真实姓名: Email地址: 性别: 男 女 dealwith.jsp showUser.jsp 显示用户注册信息 账号: 密码: 真实姓名: Email地址: 性别: 获取Cookie对象 Cookie是Web应用程序保存用户相关信息提供的一种有效的方法, 它是一段文本信息,伴随着用户请求和页面在Web服务器和浏览器之间 传递。
用户每次访问站点时,Web应用程序都可以读取Cookie包含的信 息在JSP页面中,可以通过requet对象中的getCookie()方法获取Cookie 中的数据,格式如下: Cookie[] cookie= request.getCookie(); 该方法返回值是Cookie数组 …………………… 获取客户端信息 request对象的一些方法可以用于确定组成JSP页面的客户端的信息 ,request对象用于访问请求行元素的方法如表所示 方法名称含义 String getMethod()返回用来生成请求的HTTP方法名称,例如get()方法或post()方法等 String getPathInfo()返回任何额外的路径信息,这些信息与服务器小程序路径、查询字符串之间的 URL相关联 String getRequestURI()返回请求的URI部分,位于HTTP请求第一行的协议名和查询字符串之间的内容 String getContextPath()返回请求URI部分,表示请求的应用程序环境 String getServletPath()返回请求URI部分,指定服务器小程序或JSP页面 String getQueryString()返回跟随在URI的路径部分后面的查询字符串 session和cookie •session是保存在服务端的内存里面,而cookie保 存于浏览器或客户端文件里面; •session是基于访问的进程,记录了一个访问的开 始到结束,当浏览器或进程关闭之后,session也 就“消失”了,而cookie更多地被用于标识用户, 它可以是长久的,用于用户跟踪和识别唯一用 户(Unique Visitor)。
其他常用方法 •getRemoteAddr() 获取客户端的IP地址 •getRemoteHost() 获取客户端的名字 •getServerName() 获取服务器的名字 •getServerPort() 获取服务器的端口号 •getHeader()获取客户端的浏览器类型 4.2 响应对象:response •Response的http文件头: •http请求和http响应; •典型的http请求: post/tree.jsp/http/1.1 host:localhost:8080 accept_encoding:gzip,deflate Response的状态行 •当服务器对客户请求进行响应时,它发送的首行 称作状态行 •状态行包括3位数字的状态行代码和对状态代码的 描述 5类状态代码的简单描述 •1yy: (1开头的3位数)主要是实验性质的 •2yy:用来表明请求成功 •3yy:用来表明在请求满足之前应采取进一步的行 动 •4yy:当浏览器做出无法满足的请求时,返回该代 码 •5yy:用来表示服务器出现问题 4.2 响应对象:response 4.2.1 客户端与服务器端的交互 4.2.2 页面重定向 4.2.3 缓冲区的输出 4.2.4 response对象常用方法 客户端与服务器端的交互 request对象和response对象的结合可以使JSP更好地实现客户端与服 务器的信息交互。
用户在客户端浏览器中发出的请求信息被保存在 request对象中并发送给Web服务器,JSP引擎根据JSP文件的指示处理 request对象,或者根据实际需要将request对象转发给由JSP文件所指定 的其他服务器端组件,如Servlet组件、JavaBean组件或EJB组件等处 理结果则以response对象的方式返回给JSP引擎,JSP引擎和Web服务器 根据response对象最终生成JSP页面,返回给客户端浏览器,这也是用户 最终看到的内容客户端与服务器端信息交互的流程如图所示 页面重定向 JSP页面可以使用response对象中的setRedirect()方法将客户请求重 定向到一个不同的页面资源例如: response.sendRedirect(“sanyang,jsp”) JSP页面还可以使用response对象中的sendError()方法指明一个错 误状态,该方法接受一个错误及一条可选的错误信息该信息将在内 容主体上返回给客户例如: response.sendError(500,”请求页面存在错误”); 上述两个方法都会中止当前的请求和响应response对象中用于重 定向的方法如下: vsendError(int number)方法:使用指定的状态码向客户发送错误响应。
vsendError(int number,String msg)方法:使用指定的状态码和描述性消息向 客户发送错误响应 vsendRedirect(String location)方法:指定的重定向位置。
