jsp九大内置对象(未完)


一、request内置对象

     request内置对象是最常用的对象之一,它代表的是Java.servlet.HttpServletRequest类的对象。request内置对象中包含了有关浏览器请求的信息,并提供了多个用于获取cookie、header以及session内数据的方法

request对象主要用于客户端请求处理,其中,该对象中所包含的方法有:

getMethod():返回HTTP请求信息中所使用到的方法名称;

getServletPath():返回请求信息中调用Servlet的URL部分;

getQueryString():返回HTTP GET请求信息中URL之后的查询字符串;

getContentType():返回请求实体的MIME类型;

getProtocol():返回请求信息中的协议名名字与版本号;

getPathInfo():返回有关任何路径信息;

getServletName():返回接受请求的服务器主机;

getServletPort():返回服务器的端口号;

getRemoteHost():返回提交请求的客户机的规范名字;

getRemoteAddr():返回提交请求的客户机的IP地址;

getScheme():返回请求使用的模式(协议)名字;

getParameter():返回客户端通过表单提交过来的参数值。例如request.getParameter(“myname”),通过该语句来获取客户端传递过来的myname 参数。

getContextPath():返回HTTP 请求中指示请求上下文的部分。

getHeaderNames():返回一个枚举类型,此枚举集合中包含了请求所含有的所有请求名。

getAuthType():返回用于保护Servlet 的认证模式的名字。例如,BASIC,SSL 或者NULL(没有保护)。

gtRequestURL():返回HTTP 请求信息中的第一行从协议名开始直至查询字符串之间的URL 部分。例如,对HTTP GET 请求http://www.zzbsite.com/helloworld?name=johnson&age=20,这个方法将返回http://www.zzbsite.com/helloworld 字符串。

gtCountLength():返回整数,表示请求实体的长度(以字节为单位)。

gtUestPrincipal():返回java.security 类的Principal 对象,其中包含有目前授权用户的名字。

iUserInRole(String role):返回一个布尔值,指示某个授权用户是否包含在某个具体的逻辑角色role 中。

gtRemoteHost():如果用户已经被授权,则返回提交请求的用户的注册名字,否则返回一个NULL。

二、response内置对象

    response对象与request对象相对应,它是用于响应客户请求,向客户端输出信息。response是javax.servlet.HttpServletResponse类的对象。

setContentLength(intlen):此方法用于设置响应头的长度。

setContentType(Stringtype):用于设置HTTP响应的contentType中的MIME类型,其中可以包含字符编码的规则。例如可以把contentType设置为“text/html;charset=GBK”。在Servelet编写过程中,需要调用此方法进行设置,但是在JSP中一般都是使用page指令直接指定contentType的属性。

getOutputStream():此方法返回一个Servlet的输出流。用于在响应中写入二进制数据。Servlet容器不对二进制数据进行编码。

getWriter():此方法返回一个PrintWriter对象,在Servlet编写过程使用的比较频繁,而在JSP文件中,由于out是用getWriter()创建的PrintWriter对象的隐含对象,所以可以直接调用out对象作输出响应。

getCharacterEncoding():该方法获得此时响应所采用的字符编码类型。

sendError(intstatus):使用指定错误状态码向客户机发送相应的错误信息。

sendError(intstatus,Stringmessage):使用自定义的错误状态码以及描述信息向客户机发送错误的提示信息。

sendRedirect(Stringlocation):将请求重新定位到一个不同的URL(页面)上。此方法在实际开发过程中会经常使用到。

setDateHeader(Stringheadername, longdate):把指定的头名称以及日期设置为响应头信息。其中日期是用long值表示的,这是按照从新纪元开始算起的毫秒数。

ContainsHeader(Stringname):检测指定的头信息是否存在。返回一个布尔类型。

setHeader(Stringheadername,Stringvalue):此方法使用指定的头名字以及相应的值来设置头信息。如果此头信息已经设置,则新的值会覆盖掉旧的值。如果头信息已经被发送出去,则此方法的设置将被忽略。

addheader(Stringheadername,Stringvalue):把指定的头名字以及相应值添加到头信息当中去。

addIntHeader(Stringheadername,intvalue):把指定的头名字以及整数值设置为头信息。如果头信息已经设置了,则新的设置值将覆盖掉以前的值。

setStatus(intsc):给响应设置状态的代码。

setStatus(intsc,Stringsm):为响应设置状态代码以及信息。这是在没有错误的时候使用的。

forward(转发)和redirect(重定向)区别:

直接转发方式(Forward),客户端和浏览器只发出一次请求,Servlet、HTML、JSP或其它信息资源,由第二个信息资源响应该请求,在请求对象request中,保存的对象对于一个每个信息资源是共享的。

间接转发方式(Redirect)实际是两次HTTP请求,服务器端在响应第一次请求的时候,让浏览器再向另外一个URL发出请求,从而达到转发的目的。

1.从地址栏显示来说

forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器.浏览器根本不知道服务器发送的内容从哪里来的,所以它的地址栏还是原来的地址.

redirect是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址.所以地址栏显示的是新的URL.所以redirect等于客户端向服务器端发出两次request,同时也接受两次response。

2.从数据共享来说

forward:转发页面和转发到的页面可以共享request里面的数据.

redirect:不能共享数据.

redirect不仅可以重定向到当前应用程序的其他资源,还可以重定向到同一个站点上的其他应用程序中的资源,甚至是使用绝对URL重定向到其他站点的资源.

forward,方法只能在同一个Web应用程序内的资源之间转发请求.

forward是服务器内部的一种操作.

redirect是服务器通知客户端,让客户端重新发起请求.

3.从运用地方来说

forward:一般用于用户登陆的时候,根据角色转发到相应的模块.

redirect:一般用于用户注销登陆时返回主页面和跳转到其它的网站等.

三、page对象

page对象有点类似于Java编程中的this指针,就是指当前JSP页面本身。page是java.lang.Object类的对象。

四、session内置对象

session是与请求有关的会话期,它是java.servlet.http.HttpSession类的对象,用来表示和存储当前页面的请求信息。

getId():此方法返回唯一的标识,这些标识为每个session而产生。当只有一个单一的值与一个session联合时,或当日志信息与先前的sessions有关时,它被当作键名用。

getCreationTime():返回session被创建的时间。最小单位为千分之一秒。为得到一个对打印输出很有用的值,可将此值传给Date constructor 或者GregorianCalendar的方法setTimeInMillis。

getLastAccessedTime():返回session最后被客户发送的时间。最小单位为千分之一秒。

getMaxInactiveInterval():返回总时间(秒),负值表示session永远不会超时。

getAttribute(String key):通过给定的关键字获取一个存储在session中相对应的信息。例如,Integer item = (Integer) session.getAttrobute("item")。

setAttribute(String key, Object obj):提供一个关键词和一个对象值,然后存在session当中。例如,session.setAttribute("ItemValue", itemName)

session和cookie的区别:

cookie数据保存在客户端,session数据保存在服务器端。

Cookies是属于Session对象的一种。但有不同,Cookies不会占服务器资源,是存在客服端内存或者一个cookie的文本文件中;而“Session”则会占用服务器资源。所以,尽量不要使用Session,而使用Cookies。但是我们一般认为cookie是不可靠的,session是可靠地,但是目前很多著名的站点也都以来cookie。有时候为了解决禁用cookie后的页面处理,通常采用url重写技术,调用session中大量有用的方法从session中获取数据后置入页面。

Cookies的安全性能一直是倍受争议的。虽然Cookies是保存在本机上的,但是其信息的完全可见性且易于本地编辑性,往往可以引起很多的安全问题。

cookie最典型的应用是:

(一):判断用户是否登陆过网站,以便下次登录时能够直接登录。如果我们删除cookie,则每次登录必须从新填写登录的相关信息。

(二):另一个重要的应用是“购物车”中类的处理和设计。用户可能在一段时间内在同一家网站的不同页面选择不同的商品,可以将这些信息都写入cookie,在最后付款时从cookie中提取这些信息,当然这里面有了安全和性能问题需要我们考虑了。

五、application内置对象

application是javax.servlet.ServletContext类对象的一个实例,用于实现用户之间的数据共享(多使用于网络聊天系统)。

application对象与session对象的区别

它的作用有点类似于前一节介绍的session内置对象。但是它们之间还是有区别的,一般来说,一个用户对应着一个session,并且随着用户的离开session中的信息也会消失,所以不同客户之间的会话必须要确保某一时刻至少有一个客户没有终止会话;而applicat则不同,它会一直存在,类似于系统的“全局变量”,而且只有一个实例。

getAttribute(String key):通过一个关键字返回用户所需要的信息,返回类型为对象(Object),类似于session中的getAttribute(String key)方法。

getAttributeNames():返回所有可用的属性名,返回类型为枚举(Enumeration)。

setAttribute(String key, Object obj):保存一个对象信息,并指定给一个关键字。

removeAttribute(String key):通过关键字来删除一个对象信息。

getServletInfo():返回JSP引擎的相关信息。

getRealPath(String path):返回虚拟路径的真实路径。

getContext(String URLPath):返回执行Web应用的application对象。

getMajorVersion()和getMinorVersion():返回服务器所支持的Servlet API最大和最小版本号。

getMineType(String file):返回指定文件的MIME类型。

getResource(String path):返回指定资源的URL路径。

getResourceAsStream(String path):返回指定资源的输入流。

getRequestDispatcher(String URLPath):返回指定资源的RequestDispatcher对象。

getServlet(String name):返回指定名称的Servlet。

getServlets():返回所有的Servlet,返回类型为枚举型。

getServletNames():返回所有的Servlet名称,返回类型为枚举型。

log(String msg):把指定信息写入到Servlet的日志文件中。

log(String msg, Throwable throwable):把栈轨迹以及给出的Throwable异常的说明信息写入Servlet的日志文件。

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

推荐阅读更多精彩内容

  • 从三月份找实习到现在,面了一些公司,挂了不少,但最终还是拿到小米、百度、阿里、京东、新浪、CVTE、乐视家的研发岗...
    时芥蓝阅读 42,004评论 11 349
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,087评论 18 139
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,292评论 18 399
  • 这件事要抽很早说起,早到〈哈姆雷特〉的台词,我还没有完全背完。 马老师告诉我们,我们演完哈姆雷特,再过...
    阿里土鳖王子阅读 227评论 2 1
  • 今夜何事牵愁肠? 低头问花花不语。 悲观离合总无情, 一滴思忆到天明。
    方小敏123阅读 124评论 0 1