为了简化开发过程,JSP提供了一些内置对象,它们由容器实现和管理。开发者在JSP页面中无需声明无需实例化就可使用。主要有out,request,response,session,application,pageContext,page,config和exception这九个,其中前五个最常用。

out


out对象为客户打开输出流,向客户端发送输出流。简单来说就是向客户端输出数据。

常用方法:

out.print("hello world");   //输出到浏览器
out.print(23.5f); //同上,可输出基本类型,字符数组,日期等多种类型
out.println("hello world"); //输出并换行
out.isAutoFlush(); //判断是否自动刷新缓冲区
out.getBufferSize(); //获取缓冲区大小
out.getRemaining(); //获取缓冲区剩余空间大小
out.flush(); //清除缓冲区里的数据,并输出到客户端显示
out.clear(); //清除缓冲区里的数据,不输出到客户端
out.close(); //关闭输出流

request


当用户访问一个服务器页面时,就会提交一个HTTP请求。JSP内置的request对象封装了用户提交的信息,开发者可以通过从中获取用户提交表单中的信息。

常用方法示例:

request.getMethod();                    //获取请求方式,通常是get或post
request.setAttribute("age",20); //设置一个叫age的属性,并赋值为20
request.getAttribute("age"); //获取上面的age属性的值,若属性不存在,返回null
request.removeAttribute("age"); //删除name为age的属性值
request.getAttributeNames(); //返回所有属性的名字集合
request.getCaracterEncoding(); //返回编码格式,通常在解决乱码时候用
request.getParameter("user"); //用户提交的form中有一个name为"user"的input框(结点),可以用这种方式获取input框(结点)的内容
request.getParameterValues("hobbies"); //用户提交的form中有一个name为"hobbies"的复选框,可以获取到其中选中部分的值

response


服务器收到用户发来的请求后,会做出响应。response对象封装了JSP响应信息,被发送到客户端。

因为输出流是缓冲的,所以可以设置HTTP状态码(常见的404,500,504等)和response头。

常用方法:

response.addCookie(Cookie cook);              //添加一个用于保存用户信息的Cookie对象
response.addHeader(String name,String value); //添加信息到头文件中,如果已存在就覆盖
response.containsHeader(String name); //判断指定名字的HTTP头是否已存在
response.sendError(int); //返回错误信息
response.sendRedirect(String location); //重定向
response.setHeader(String name,String value); //设置指定名字的HTTP文件头的值。

session


敲黑板!!咣咣咣!!!这个很重要!

很多朋友对session都有种既熟悉有陌生的感觉,这个词在开发中太常见了!但是很多地方的理解都很模糊。

这里说的session是用来保存每个用户信息的内置对象,以便跟踪每个用户的操作状态

为什么要跟踪用户状态呢?因为HTTP是一种无状态协议,当客户向服务器发送一个请求(request)后,服务器返回一个(response),连接就关闭了(故也称为一次性连接)。当下一次连接时,服务器无法判断当前连接与之前的是否是同一用户。(例如用户在同一个网站中访问不同的页面时,总不能访问一个页面登录一次吧。。。)这时就用到了session来记录有关连接的信息。

session从用户打开浏览器与服务器建立连接开始,到用户关闭浏览器离开服务器结束。服务器将sessionID写入到浏览器的Cookie中,作为这个用户的唯一标识。每个用户都有自己的sessionID,当用户退出系统时,session会自动消失。

session的信息保存在服务端,session的ID保存在客户端Cookie中。如果客户端禁用Cookie,同一用户在不同页面间的session对象有可能是不同的

常用方法,getAttribute(),setAttribute(),removeAttribute()等,均是对对象中的属性进行增删改查,在此就不一一赘述了

举个例子,通过session我们可以构造一个简单的购物车功能模块。

1.用户登录购物商城,JSP引擎自动创建session对象

2.向session中添加两个属性goods(购买的商品),price(价格),方式如下

session.setAttribute("goods"," ");

session.setAttribute("price"," ");

3.在不同的页面(生活用品类,食物类)选择商品添加到购物车,每一次添加商品,就向goods和price中追加内容,例如

session.setAttribute("goods",session.getAttribute("goods")+"鸡蛋");//其中session.getAttribute("goods")可以从session中获取已添加到购物车的商品

session.setAttribute("price",session.getAttribute("price")+15);//其中session.getAttribute("price")可以从session获取当前购物车中所有商品的价格

application


application对象为所有的用户保存共享信息。

虽然application和session都可以为用户保存信息,但是这两个是不同的:

1.服务器为每个用户创建一个session对象,每个人的session都是不同的;而application是为多个应用程序保存公用信息,对于一个容器而言,所有用户的application对象是同一个

2.session和application的生命周期不同。session的生命周期是从用户打开浏览器建立与服务器的连接开始,到关闭浏览器离开服务器结束的这段时间;而application的生命周期是从服务器启动服务器关闭的这段时间。

应用场景示例:

例如网站上常见的本站点击量统计,就可以使用application来实现。定义一个字段count用来计数,每次点击就++,然后将count保存在application对象中,application.setAttribute("Counter",count);获取当前点击量时,application.getAttribute("Counter")即可。

JSP最常用的五种内置对象(out,request,response,session,application)的更多相关文章

  1. JSP 内置对象(request response session application out pageContext)

    request对象  javax.servlet.http.HttpServletRequest接口的实例 request.setCharacterEncoding("utf-8" ...

  2. JSP内置对象--pageContent,request,response,session,application,config,out,page,exception

  3. JavaWeb【五、内置对象】

    简介 Web容器创建的一组对象,不用new即可使用. 共有9种,out.request.response.session.application,五种比较常用,page.pageContent.exc ...

  4. JSP 脚本中的 9 个内置对象

    JSP 脚本中包含了 9 个内置对象,这 9 个内置对象都是 Servlet API 接口的实例,只是 JSP 规范对它们进行了默认初始化. 这 9 个内置对象如下: 1.application:ja ...

  5. JSP脚本中的9个内置对象

    JSP脚本中包含9个内置对象,这9个内置对象都是Servlet API接口的实例,只是JSP规范对它们进行了默认初始化.也就是说它们已经是对象,可以直接使用. 我们随意打开一个由JSP页面生成的Ser ...

  6. .Net的内置对象之一 Request

    一.Request简介 Request对象是.net的内置对象之一,也是.net中常用的对象,用于获取客户端的信息,可以使用Request对象访问任何基于HTTP请求传递的所有信息.通过Request ...

  7. 菜鸟学Java(五)——JSP内置对象之request

    书接上回,上次跟大家概括的说了说JSP的九种常用内置对象.接下来就该聊聊它们各自的特点了,今天先说说request吧. 下面是request的一些常用方法: isUserInRole(String r ...

  8. JSP内置对象之request

    书接上回,上次跟大家概括的说了说JSP的九种常用内置对象.接下来就该聊聊它们各自的特点了,今天先说说request吧. 下面是request的一些常用方法: isUserInRole(String r ...

  9. JSP中的Java代码和内置对象

    一.JSP中的Java代码 (一)JSP页面中有三种方式嵌入java代码: 1.java的表达式 格式:<%= java表达式 %> 2.java的语句 格式:<% java语句&g ...

随机推荐

  1. python 列表解析

    列表解析,主要用于动态创建列表 本篇主要说一下,lambda.map().和filter()同列表解析语句之间结合的用法 列表解析的基本语法为:[expr for iter_var in iterab ...

  2. 【ANT】taskdef class org.programmerplanet.ant.taskdefs.jmeter.JMeterTask cannot be found using the classloader AntClassLoader[]解决办法

    把文件apache-jmeter-3.1\extras\ant-jmeter-1.1.1.jar复制到apache-ant-1.10.1\lib目录下即可.

  3. 指针变量的*p,p以及&p的区别

    23/7/2017  决定夯实基础,回顾指针的知识点,该博文转载于CSDN博主百家晓东,小部分修改,外加编译图引证 正文如下: 以下面的情况说明: int a = 5; int* p = &a ...

  4. ES6函数的拓展

    ES里面现在支持在函数的参数直接给参数赋一个默认值,ES6支持拓展运算符(...)三个英文的点,这个形式如function(...a)这个里面...a可以接受若干的值,这个拓展运算符也可以把若干的值转 ...

  5. 学习ABP ASP.NET Core with Angular 环境问题

    1. 前言 最近学习ABP架构 搭建ASP.NET Core with Angular遇到了些问题,折腾了一个礼拜最终在今天解决了,想想这个过程的痛苦就想利用博客记录下来.其实一直想写博客,但因为 时 ...

  6. Oracle数据库部分迁至闪存存储方案

    Oracle数据库部分迁至闪存存储方案 1.实施需求 2.确认迁移表空间信息 3.确认redo信息 4.确认undo信息 5.表空间迁移到闪存 6.redo迁移到闪存 7.undo迁移到闪存 8.备库 ...

  7. C语言应用程序的内存图

    1.综述 c语言应用程序加载到内存,这时它所占据的内存分为四个区,分别为栈Stack,堆Heap,静态存储区Static Area,代码存储区Code Area,这四个区分别放置应用程序的不同部分,从 ...

  8. ASP.NET Core文件上传与下载(多种上传方式)

    前言 前段时间项目上线,实在太忙,最近终于开始可以研究研究ASP.NET Core了. 打算写个系列,但是还没想好目录,今天先来一篇,后面在整理吧. ASP.NET Core 2.0 发展到现在,已经 ...

  9. sql sever分组查询和连接查询

    分组查询select 查询信息 from 表名where 条件group by 按照列分组(可多个 ,隔开)order by 排序方式(查询信息如果列名和聚合函数同时出现,要么在聚合函数中出现,要么就 ...

  10. 如何复制Google浏览器的控制台内容

    今天在调用第三方的接口,对着文档,传参数,老是报参数错误,没办法只能把参数打印出来看看,在Google控制台上看,费劲,就想复制出来,格式化一下,然后对着文档进行对比. console.info(JS ...