Javaee 复习 Day2

JSP内置对象

JSP容器(如:Tomcat)为用户创建了9个可以直接使用的内置对象,分别是out、response、request、session、application、config、pageContext、page、exception。所有这些对象在Tomcat容器启动时都会自动创建,程序员在JSP程序中可以直接使用这些对象(属性或方法)。

一、向客户端输出信息对象out

JSP内置对象out是抽象类java.io.Writer的实例(PrintWriter是其子类)。

out的常用方法是println(exp),其中,exp可以是普通文本、含有变量的表达式,甚至是作为特殊字符串的JS脚本。

例如:out.println("<script>alert('hello dta...')</script>");

注:<%out.println(exp);%>与JSP表达式用法<%=exp%>等效

二、响应对象response

response代表服务器对客户端请求进行响应的对象,是Java扩展包javax.servlet.http里接口HttpServletResponse的实例,其常用方法如下:

●sendRedirect(String location)

重定向请求,产生页面跳转

注:

重定向方法sendRedirect()会产生新的请求对象,跳转发生在客户端,地址栏也会相应地变化。

而JSP转发动作标签<jsp:forward>属于服务器端跳转,地址栏不会变化

使用Servlet实现的转发,属于服务器端跳转,不会引起浏览器地址栏中地址的变化。

●setContentType("text/html;charset=code")     

设置响应信息的字符编码,其中code通常取值为utf-8

注:在Servlet程序里,如果响应信息包括中文,应在向客户端输出前使用setContentType()指定字符编码。否则,页面会出现中文乱码。

●getWriter()       

获取java.io.PrinterWriter类型的响应流对象

●void setHeader(String name, String value)       

设置页面自动刷新和自动跳转

●addCookie()       

建立Cookie信息,向客户端写入一个Cookie

三、请求对象request

request对象是接口javax.servlet.http.HttpServletRequest的实例,封装了客户端请求的相关信息

对象request主要封装了表单提交的数据、超级链接时传递的参数、客户端的IP地址和Cookie信息等。该对象具有获取这些信息的相关方法,方法如下:

●String getParameter("name") 

获得客户端的请求数据,对应于参数name的值

●String[ ] getParameterValues("name")

获取客户端的请求数据,对应于name的数组

●void setCharacterEncoding("code")

设定请求信息的编码,其中code通常取值为utf-8

●void setAttribute("kn", obj)

属性设置,其中kn为键名,obj为任意类型的键值

●Object getAttribute("kn")

获取属性,返回值为顶级的Object类型

●String getRemoteAddr()

获取客户端的IP地址

●HttpSession getSession() 

获取会话对象

●●

四、会话对象session

session对象是接口javax.servlet.http.HttpSession的实例化对象

当客户端访问一个Web服务器时,用户可能会在这个服务器的多个页面之间反复跳转。

从一个客户端打开浏览器并连接到服务器,到客户端关闭浏览器离开这个服务器的过程,称为一个会话。

session是存储于服务端的、用于记录和保持某些状态的一种会话跟踪技术。用户通过浏览器发起请求的时候,Web服务器可自动为客户端生成一个对象。

JSP内置对象session就是代表服务器与客户端所建立的会话,

当一个用户首次访问服务器页面时,服务器将产生一个session对象,同时自动分配一个String类型的ID号(会话标识,它是由不重复的字母和数字组成的随机字符串序列)。当用户访问服务器的其他页面时,服务器并不会为用户创建新的会话标识和session对象。

通过session对象,可以存储一些信息。会话信息不会因为页面的跳转而消失或者变化,从而实现在一个会话期间多个页面间的数据共享(传递)。session对象的常用方法如下:

●getId() 

返回Web服务器创建session对象时设置的ID(会话标识)

●isNew()

判断当前客户是否为新的会话

●setAttribute("属性名", 值)

设置指定名称的属性值

●getAttribute("属性名")

获取指定的属性值,其类型为Object

●getValueNames()

返回一个包含此session中所有可用属性的数组

●removeValue("属性名")

删除session中指定的属性

●invalidate()

取消session,使session不可用

五、全局对象application

Web服务器一旦启动,就会自动创建application对象,并一直保持,直到服务器关闭。

application对象负责提供应用程序在服务器中运行时的一些全局信息,客户端使用的application对象都是一样的。在此期间,在任何地方对application对象相关属性的操作,都将影响到其他用户对此的访问。

application对象可以实现网站所有用户的数据共享和传递。

对象application是javax.servlet.ServletContext接口类型的实例。

application为全局变量,session为局部变量。

application对象的常用方法:

●setAttribute(属性名,属性值)        设置指定属性名称的属性值

如果指定的属性不存在,则新建一个;如果已经存在,则更改该属性的值。

●getAttribute(属性名)        获取指定的属性值

如果属性不存在,则返回空值(null)

●getServerInfo()        返回当前版本Servlet编译器的信息

●getAttributeNames()        获取所有属性的名称

例如:

<%
	int visit_num;
	String s=(String)application.getAttribute("num");
	if(s!=null)
		visit_num=Integer.parseInt(s);
	else
		visit_num=1;
	if(session.isNew())
		visit_num=visit_num+1;
	application.setAttribute("num", String.valueOf(visit_num));
	%>
	<h3>欢迎您!您是本页面的第<%=visit_num %>位访客。</h3>
	复制访问地址,使用另一个不同类型的浏览器访问,以观察人数的变化。
%>

六、上下文对象pageContext

七、Cookie信息的建立与使用

Cookie是指某些网站为了辨别用户身份,进行session跟踪而储存在用户本地终端上的数据(通常会经过加密处理),也称浏览器缓存。

Cookie是由Web服务器端生成的信息,浏览器会将Cookie的key/value保存到某个目录下的文本文件内,下一次请求同一网站时就可以发送该Cookie给服务器。

Cookie可以保持登录信息到用户下次与服务器的会话,即下一次访问同一网站时,用户发现不必输入用户名和密码就已经登录了(不排除用户手工删除Cookie)。

Cookie信息是指存放在客户端硬盘中的信息。

//javax.servlet.http.Cookie

Cookie类提供的主要方法:

●Cookie(String name, String value)

构造方法,实例化对象

●Cookie[ ] getCookies() (request.getCookies())

获取客户端设置的全部Cookie (获取存放在客户端硬盘里的Cookie名称信息)

response.addCookie()

将某个Cookie信息发送至客户端

●getName() 

获得Cookie的属性名

●getValue()

获得Cookie的属性值

●setMaxAge(int)

设置Cookie的保存时间,单位为秒

若int为正值,表示Cookie将在多少秒以后失效;为负值,表示当浏览器关闭时,该Cookie将会被删除。

例如:

//cookier.jsp
<%
		Cookie[] c = request.getCookies();
		if(c!=null){
			out.write("目前,本机可用的Cookie信息如下:<hr/>");
			for(int i = 0; i < c.length; i++){
				out.println(c[i].getName()+"---"+c[i].getValue()+"<br/>");
			}
		}else{
			out.write("本机没有可以使用的Cookie信息!");
		}
	%>
//cookiew.jsp
<%
	Cookie myCookie1=new Cookie("dt", "22");
	Cookie myCookie2=new Cookie("hj", "22");
	myCookie1.setMaxAge(15);
	myCookie2.setMaxAge(35);
	response.addCookie(myCookie1);
	response.addCookie(myCookie2);
	out.write("已经成功建立了两个自定义的Cookie信息!");
	out.write("Web服务器为来访者创建的JSESSIONID"+session.getId());
%>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值