JSP内置对象
out
request
response
session
application
杨老师总结:
setAttribute(key,value) getAttribute(key) 设置/获取 属性变量
放在不同的范围内被读取访问
四个范围变量(内置对象)
当前页面
page
page a.jsp同一页面
requesta.jsp--->b.jsp--->c.jsp同一请求多个页面
session同一会话多个请求
application同一个服务器 多个会话
为了简化开发过程,JSP提供了一些内置对象,它们由容器实现和管理。开发者在JSP页面中无需声明,无需实例化就可使用。主要有out,request,response,session,application,pageContext,page,config和exception这九个,其中前五个最常用。
1、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();//关闭输出流
2、request
当用户访问一个服务器页面时,就会提交一个HTTP请求。JSP内置的request对象封装了用户提交的信息,开发者可以通过从中获取用户提交表单中的信息。
常用方法示例:
request.getMethod();//获取请求方式,通常是get或postrequest.setAttribute("age",20);//设置一个叫age的属性,并赋值为20request.getAttribute("age");//获取上面的age属性的值,若属性不存在,返回nullrequest.removeAttribute("age"); //删除name为age的属性值
request.getAttributeNames();//返回所有属性的名字集合request.getCharacterEncoding();//返回编码格式,通常在解决乱码时候用request.getParameter("user");//用户提交的form中有一个name为"user"的input框(结点),可以用这种方式获取input框(结点)的内容request.getParameterValues("hobbies");//用户提交的form中有一个name为"hobbies"的复选框,可以获取到其中选中部分的值
3、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文件头的值。
4、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获取当前购物车中所有商品的价格
5、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")即可。
6、pageContext 对象
pageContext 对象的作用是取得任何范围的参数,通过它可以获取 JSP页面的out、request、reponse、session、application 等对象。pageContext对象的创建和初始化都是由容器来完成的,在JSP页面中可以直接使用 pageContext对象。
7、config 对象
config 对象的主要作用是取得服务器的配置信息。通过 pageConext对象的 getServletConfig() 方法可以获取一个config对象。当一个Servlet 初始化时,容器把某些信息通过 config对象传递给这个 Servlet。 开发者可以在web.xml 文件中为应用程序环境中的Servlet程序和JSP页面提供初始化参数。
8、page 对象
page 对象代表JSP本身,只有在JSP页面内才是合法的。 page隐含对象本质上包含当前 Servlet接口引用的变量,类似于Java编程中的 this 指针。
9、exception 对象
exception 对象的作用是显示异常信息,只有在包含 isErrorPage="true" 的页面中才可以被使用,在一般的JSP页面中使用该对象将无法编译JSP文件。excepation对象和Java的所有对象一样,都具有系统提供的继承结构。exception 对象几乎定义了所有异常情况。在Java程序中,可以使用try/catch关键字来处理异常情况; 如果在JSP页面中出现没有捕获到的异常,就会生成 exception 对象,并把 exception 对象传送到在page指令中设定的错误页面中,然后在错误页面中处理相应的 exception 对象。
领取专属 10元无门槛券
私享最新 技术干货