为了简化开发过程,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. MPSOC之5——开发流程BOOT.BIN

    需要把若干文件打成大包,烧写到flash或者sd卡中,才能启动运行. 1.petalinux打包 petalinux-packet打包时,需要petalinux的工程,限制太死了,不用. 2 wind ...

  2. mybatis 之 占位符#{} 和 ${}

    #{}占位符用来设置参数,参数的类型可以有3种,基本类型,自定义类型,map基本类型作为参数,参数与占位符中的名称无关. <select id="findById" para ...

  3. Android项目实战(三十九):Android集成Unity3D项目(图文详解)

    需求: Unity3D 一般用于做游戏 而且是跨平台的.原本设计是Android 应用端A(原生开发)进行一些业务处理,最后由A 打开Android 应用端B(Unity3D 游戏开发)进行游戏操作. ...

  4. JavaScript--AJAX页面传值

    1.首先 闲话不说 直接代码走起,都是我工作闲事的积累干货 //重要 js 运行 $(function (){ 代码 }); 2.ajax 传值 //第一种 输入框 <input type=&q ...

  5. Layui常见问题

    为什么表单不显示?当你使用表单时,Layui会对select.checkbox.radio等原始元素隐藏,从而进行美化修饰处理.但这需要依赖于form组件,所以你必须加载 form,并且执行一个实例. ...

  6. CP342-5做主站的profibus-dp组态应用

    1.CP342-5介绍 2.系统结构图 3.组态DP主站 4.组态DP从站 1)插入DP V0 slaves下的ET200M 2)设置属性 3)添加ET200M的其他模块 4)保存和编译 4.DP通信 ...

  7. xamarin android如何监听单击事件

    在xamarin android单击事件是最基础的事情,看过菜鸟上的android教程时,java写的都是监听事件,为一个按钮,单选按钮.多选按钮的单击事件有三种,前面两种用的非常普遍,也很简易,我这 ...

  8. NP完整性| 集1(简介)

    我们一直在写关于高效算法来解决复杂问题,如最短路径,欧拉图,最小生成树等.这些都是算法设计者的成功故事. 在这篇文章中,讨论了计算机科学的失败故事. 计算机可以解决所有的计算问题吗? 存在计算问题,即 ...

  9. [C#]获得WindowsForm上所有特定类型的控件

    本文为原创文章.源代码为原创代码,如转载/复制,请在网页/代码处明显位置标明原文名称.作者及网址,谢谢! 开发工具:VS2017 语言:C# DotNet版本:.Net FrameWork 4.0及以 ...

  10. tr 命令详解

    tr  作用:标准输入中通过替换或删除操作进行字符转换 语法:tr -c -d -s ["string1_to_translate_from"] ["string2_to ...