JSP内置对象概述
因为Java语法在使用一个对象之前需要实例化这个对象,JSP为了简化开发,提供了一些内置对象,用来实现很多JSP的应用。在使用时无需定义,直接使用即可。
一.request对象
说明:request对象封装了由客户端生成的HTTP请求的所有细节,主要包括HTTP头信息、系统信息、请求方式和请求参数等。
1.访问请求参数
<a href="delete.jsp?id=1">删除</a>
在delete.jsp页面中,可以通过request对象的getParameter()方法获取传递的参数值,参考代码如下:
<%
request.getParameter("id");
%>
在使用request的getParameter()方法获取传递的参数值时,如果制定的参数不存在,将返回null;如果指定了参数名,但未指定参数值,将返回空的字符串""。
2.在作用域中管理属性
request对象调用setAttribute()方法将数据保存到request范围的变量中。
request.setAttribute(String name,Object object);
request对象调用getAttribute()方法获取该变量的值。
request.getAttribute(String name);
3.获取cookie
在互联网中,cookie是指小段的文本信息,在网络服务器上生成,并发给浏览器。通过cookie可以标识用户身份,记录用户名和密码,跟踪重复用户。浏览器将cookie以key/value的形式保存到客户机的某个指定目录中。
通过cookie的getCookies()方法即可获得所有cookie对象的集合;通过cookie对象的getName()方法可以获取到指定名称的cookie;通过getValue()方法即可获取cookie对象的值。另外,将一个cookie对象发送到客户端,使用response对象的addCookie()方法。
在向cookie中保存的信息中,如果包括中文,则需要调用java.net.URLEncoder类的encode()方法将要保存到cookie中的信息进行编码;在读取cookie的内容时,还需要应用java.net.URLDecoder类的decode()方法进行解码。
4.解决中文乱码
创建index.jsp页面,在其中加入一个超链接,并在超链接中传递两个参数,并使其全部为中文。
<body>
<a href="show.jsp?name=张三&sex=男">解决中文乱码</a>
</body>
创建show.jsp页面,在其中第一个参数name的值进行编码转换,将第二个参数sex直接显示在页面中,进行比较。
<body>
name 参数值为: <%=new String(request.getParameter("name").getBytes("ISO-8859-1"),"UTF-8")%>
sex 参数值为:<%request.getParameter("sex")%>
</body>
结果:
name参数的值为:张三
sex参数的值为:**(乱码)
5.获取客户端信息
6.显示国际化信息
二.response对象
说明:response对象用于响应客户请求,向客户端输出信息。
1.重定向网页
使用response对象的sendRedirect()方法可以将网页重定向到另一个界面。在客户端浏览器上将会得到跳转的地址,并重新发送请求链接。进行重定向操作后,request中的属性全部失效,并且开始一个新的request对象。
response.sendRedirect(String path);
2.处理HTTP头文件
(1).禁用缓存
<%
response.setHeader("Cache-Control","no-store");
response.setDateHeader("Expires",0);
%>
(2).设置页面自动刷新
<%
response.setHeader("refresh",10);
%>
//每隔十秒刷新一次
(3).定时跳转网页
<%
response.setHeader("refresh","5;URL=login.jsp");
%>
//五秒钟之后跳转到指定的网页
3.设置输出缓存
response.setBufferSize(32);
三.session对象
说明:session在网络中被称为对话。因为HTTP协议时一种无状态协议,也就是当一个客户向服务器发出请求,服务器接受后返回响应后,该连接就结束了,而服务器并不保存相关的信息。而session可以在应用程序的web页面间进行跳转,保存用户状态,使整个用户会话一直存在,直到浏览器关闭。但是,若在一个会话中,客户端长时间不向服务器发出请求,session对象会自动消失,这个时间取决于服务器。
1.创建及获取客户的会话
//保存方式
session.setAttribute(String name,Object obj)
//获取方式
session.getAttribute(String name);
getAttribute()方法的返回值是Object类型,若获取的信息赋给String类型的变量则要进行强制转换或者调用toString()方法。
String user=(String)session.getAttribute("username");
String user1=session.getAttribute("username").toString();
2.从会话中移动指定的绑定对象
<%
session.removeAttribute("username");
%>
3.销毁session
session.invalidate();
session对象被销毁后,将不再可以使用该session对象。如果在session被销毁后,再调用session对象的任何方法,都将报出Session already invalidated异常。
4.会话超时的管理
session.setMaxInactiveInterval(10000);
//超过这个时间范围就会失效
四.application对象
application对象用于保存所有应用程序的公有数据。服务器启动时自动创建,服务器停止时销毁。当application对象没有被销毁时,所有用户都可以共享该application对象。与session对象相比,其生命周期更长,类似于“全局变量”。
1.访问应用程序初始化数据
application提供了两种初始化的方法:
//eg1,该方法用于返回已命名的参数值
application.getInitParameter(String name);
//eg2,该方法用于返回已定义的应用程序初始化参数名的枚举
application.getAttributeNames();
2.管理应用程序环境属性
五.out对象
1.向客户端输出数据
//print()方法
<%
out.print("111");
%>
<%="111"%>
//println()方法
<%
out.println(1515);
out.println("aa");
%>
println()方法输出内容后还会输出一个换行符,而print()方法不会换行。
tips:如果要使println()方法的换行显示在页面中需要用<pre></pre>括起来。
2.管理响应缓冲
clear()清楚缓冲区的内容
clearBuffer()清楚当前缓冲区的内容
flush()刷新流
isAutoFlush()检测当前缓冲区已满时自动清空还是抛出异常
getBufferSize()获取缓冲区的