24_Jsp_9大内置对象_4大域对象
来源:互联网 发布:算法工程师课程 编辑:程序博客网 时间:2024/06/07 08:29
9大内置对象
内置对象不能在<%! %>中使用!
1)out对象
out对象是javax.servlet.jsp.JspWriter的实例,代表jsp的输出流,用于输出内容形成html页面。
- out对象一些方法:
- out.println( ):输出完成后会换行,换行效果在页面中不显示只在源码中显示
- out.print( ):输出后不换行
- out.getBufferSize( ):输出缓冲区大小
- out.getRemaining( ):输出剩余缓冲区大小
- out.clear( ):清空缓冲区,不将数据发送至客户端
- out.clearBuffer( ):将数据发送至客户端,再清空缓冲区
- out.flush( ):输出缓冲区内容
- out.close( ):关闭输出流
2)request对象
request对象是jsp中的重要对象,每个对象封装着一次用户请求,并且所有对请求参数都被封装在request对象中,request对象是获取用户请求参数的重要途径。
request对象的一些方法:
- request.getMethod( ):获取请求的方法名,如get,post.
- request.getRequestURI( ):获取请求资源名.如请求访问:/jspstudy/08/request.jsp
- request.getProtocol( ):获取请求使用的协议.如:HTTP/1.1
- request.getServerName( ):获取请求使用的服务器,如:localhost.
- request.getServerPort( ):获取请求使用的服务器端口,如:8080
- request.getRemoteAddr( ):获取客户端的ip地址.
- request.getRemoteHost( ):获取客户端主机.
- request.getParameter( ):获取传递过来的参数值.
- request.getParameterValues( ):请求参数有多个值时,该方法返回多个值组成的数组.
- request.setAttribute( ):用来在同一个request周期中保存变量使用;
setAttribute( )
方法和RequestDispatcher.forward()
都在一起使用。 - request.getAttribute( ):可得到JSP页面一表单中控件的Value
- request.getRequestDispatcher( ).forward( ):请求转发
测试
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><!DOCTYPE html><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>request方法</title></head><body><form action="" method="post"> username:<input type="text" name="username"><br/> <input type="submit"> 请求方法名:<%=request.getMethod() %><br/> 请求的资源:<%=request.getRequestURI() %><br/> 请求使用的协议:<%=request.getProtocol() %><br/> 请求使用的服务器:<%=request.getServerName() %><br/> 请求使用的服务器端口:<%=request.getServerPort() %><br/> 客户端的IP地址:<%=request.getRemoteAddr() %><br/> 客户端主机:<%=request.getRemoteHost() %><br/> 表单提交过来的值:<%=request.getParameter("username") %><br/> </form></body></html>
- 输出
请求方法名:POST请求的资源:/jspstudy/08/request.jsp请求使用的协议:HTTP/1.1请求使用的服务器:localhost请求使用的服务器端口:8080客户端的IP地址:0:0:0:0:0:0:0:1客户端主机:0:0:0:0:0:0:0:1表单提交过来的值:test
3)response对象
response对象用于服务器对客户端的响应,大部分时候使用out对象向页面输出,但是out对象是JspWriter对象的实例,JapWriter是Writer的子类,Writer是字符流,因此out对象无法输出非字符内容。jsp页面需要输出图片、pdf文档、excel等非字符对象时需要使用response作为响应输出;response还可以用于重定向,向客户端增加cookie.
常用方法:
- addCookie(Cookie):添加cookie
- setHeader(String name,String value):设置头信息。
- sendRedirect( ):重定向,类似于客户端跳转
- getOutputStream( ):输出流
常用用法:
- 定时刷新:
response.setHeader("refresh","2")
:2秒刷新一次。 - 定时跳转:
response.setHeader("refresh","2;URL=hello.jsp")
:2秒后跳转到hello.jsp。注:此为客户端跳转; - 客户端跳转:
response.sendRedirect("hello.jsp");
注意:以上(2)用法可能会失败,原因是用户在2秒内刷新了页面,导致refresh失效;
- 定时刷新:
4)session对象
session对象代表一次用户会话,一次用户会话的含义是:从客户端连接服务器开始,到客户端与服务器断开为止,这个过程就是一次会话。
session通常用于跟踪用户的会话信息,如判断用户是否登录,购物车中跟踪用户购买的商品。
session范围的属性可以在多个页面点跳转之间共享,一旦关闭浏览器,session结束,session范围内的属性就会全部丢失。
- session常用方法:
- String getId( ):获得Session Id。Session Id类似于Cookie的JSessionId,是服务器自动分配的;
- session.setAttribute(key , value):设置属性。
- session.getCreationTime( ):获得创建时间。
- session.getLastAccessedTime( ):获得最后访问时间。
- session.isNew( ):这个Session是否是新的,即判断Session Id。
- session.invalidate( ):把session的属性设置全部清空。
- 登录-注销页面:
- 使用session.setAttribute( )注册。
- 使用session.getAttribute( )判断是否已经注册。
- 使用session.invalidate( )注销。
5)page对象
代表该页面本身,通常没有太大用处。
6)pageContext对象
代表页面上下文,主要用于jsp之间的共享数据,使用pageContext对象可以访问page、request、session、application范围的变量。
- pageContext.forward(String)
- pageContext.include(String)
- pageContext.getServletConfig( )
- pageContext.getServletContext( )
- pageContext.getRequest( )
- pageContext.geResponse( )
pageContext.getSession( )
- 也就是说,只要有了pageContext对象,就能完成一切内置对象的功能;
7)application对象
jsp、servlet之间不能相互调用,为了解决jsp和servlet之间数据交换的问题,web服务器提供了四个对象,分别是application、session、request、page。放入application对象中的数据对整个Web应用有效,一旦jsp、servlet将数据放入application对象之中,该数据可以被该应用下其它jsp、servlet访问。
- 常用方法:
- getRealPath(path):获得真实路径。
- getContextPath( ):获得虚拟路径。
- getInitParameter(String )
//我们可以在web.xml中添加初始化参数:[html] view plain copy<context-param> <param-name></param-name> <param-value></param-value> </context-param> application==this.getServletContext()
8)config对象
config对象代表当前jsp配置信息,但jsp页面通常无需配置,该对象在jsp页面中较少使用,在servlet中使用较多。
- 如果将一个hello.jsp文件放到WEB-INF中,如果能够让其能够被访问。
答案就是在WEB-INF/web.xml设置即可,内容如下:
<servlet> <servlet-name>he</servlet-name> <jsp-file>/WEB-INF/hello.jsp</jsp-file></servlet><servlet-mapping> <servlet-name>he</servlet-name> <url-pattern>hello</url-pattern></sevlet-mapping>重启服务器后,则在地址栏输入http://localhost:8080/test/hello即可。
config常用方法:
- getInitParameterNames( )
- getInitParameter(String name)
什么是初始化参数呢?
初始化参数在web.xml中进行配置,形式如下:
<servlet><init-param> <param-name>name</param-name> <param-value>value</param-value></init-param></servlet>
9)exception对象
exception对象是Throwable的实例,代表jsp脚本中产生的错误和异常,是jsp页面异常机制的一部分。把page指令的isErrowPage属性设置为true时可以访问exception内置对象。
- 常用方法:
- getMessage( );
4大域对象
- request——HttpServletRequet
- session——HttpSession
- application——ServletContext
page——PageContext
- 这四个对象有3个方法:
1)void setAttribute(String key,Object o)//设置属性
2)Object getAttribute(String key)//取得后要向下转型
3)void removeAttribute(String key)//删除属性
注意:在getAttribute之后一定要转型!
- 这四个对象有3个方法:
//举例:pageContext.setAttribute("name","xiazdong");//只能在单个页面中进行保存String name = (String)pageContext.getAttribute("name");//换了一个页面后就无法取得//注意:尽可能在满足功能的前提下,将属性设置的保存范围尽可能的小。这样能够提高性能;
- 24_Jsp_9大内置对象_4大域对象
- 九大内置对象
- JSP9大内置对象
- JSP9大内置对象
- Jsp9大内置对象
- JSP9大内置对象
- 九大内置对象
- 九大内置对象
- 九大内置对象
- 九大内置对象
- 九大内置对象
- JSP9大内置对象
- jsp9大内置对象
- 九大内置对象
- JSP9大内置对象
- 九大内置对象
- 九大内置对象
- 九大内置对象
- 解决listview显示全部数据和隐藏部分数据时候postion错乱
- 23_Jsp_3指令_7动作_登录应用
- Android混合开发之WebView使用总结
- head标签内的设置
- 无人驾驶路上:激光雷达和摄像头都干了些什么?
- 24_Jsp_9大内置对象_4大域对象
- 策略模式
- markdown一些技巧(1)
- 输入某年某月某日,判断这一天是这一年的第几天?
- 25_mvc入门
- Anaconda python各模块简介
- ffplay源码剖析(3.2.4 + sdl2)(2):初始化与解复用
- 26_mvc入门案例
- kotlin的网络请求