为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

JSP内置对象

2014-02-26 50页 ppt 919KB 33阅读

用户头像

is_862100

暂无简介

举报
JSP内置对象null内 置 对 象 内 置 对 象 null 有些成员变量不用声明就可以在JSP页面的脚本(Java程序片和Java表达式)中使用,这就是所谓的内置对象。 主要的内置对象有: resquest response session out Application pagenull(1)request request包含了来自浏览器请求的相关信息,并且提供了获取Cookie、header和请求相关的参数值等数据的有效方法。 request对象封装了用户提交的信息,通过调用该对象...
JSP内置对象
null内 置 对 象 内 置 对 象 null 有些成员变量不用声明就可以在JSP页面的脚本(Java程序片和Java表达式)中使用,这就是所谓的内置对象。 主要的内置对象有: resquest response session out Application pagenull(1)request request包含了来自浏览器请求的相关信息,并且提供了获取Cookie、header和请求相关的参数值等数据的有效方法。 request对象封装了用户提交的信息,通过调用该对象相应的方法可以获取用户提交的信息。 (2)response response主要将JSP处理后的结果传回到客户端(如Cookie、header信息等),它提供了将数据送回浏览器的方法。null(3)out out对象用于向浏览器回送输出结果。 (4)pageContext pageContext对象存储当前JSP页面相关信息,如属性、内建对象等。 (5)session session对象用于存储每一个用户的状态信息,以便跟踪用户的会话状态,直到客户端与服务器断开连接为止,可用来识别每个用户。null(6)application applicaton负责提供应用程序在服务器中运行的全局信息,当应用程序在服务器中启动时该对象就一直存在,直到服务器关闭为止,所有客户共享这个内置的application对象。applicaton可用来在所有用户间共享信息,并可以在Web应用程序运行期间持久地保持数据。1.1 request对象 1.1 request对象 内置对象request对象是实现了ServletRequest接口类的一个实例. 当客户端请求一个JSP页面时,JSP容器会将客户端的请求信息包装在这个request对象中。 请求信息的包括请求的头信息(Header)、系统信息(比如:编码方式)、请求的方式(比如:GET或POST)、请求的参数名称和参数值等信息。 1.1.1获取客户提交的信息1.1.1获取客户提交的信息 request对象代表的是来自客户端的请求,例如:我们在FORM表单中填写的信息等,是最常用的对象。 获取查询字符串中的变量值 ① getParameter( ) ② getParameterValues( ) ③ getParameterNames( ) 通过调用这几个方法来获取请求对象中所包含的参数的值。request对象示例request对象示例
姓名
request对象示例(Hello_req.jsp)request对象示例(Hello_req.jsp)<%@ page contentType="text/html;Charset=gb2312" %> <%@ page import="java.util.*" %> 你好, <%! String Name;%> <% Name=request.getParameter("UserName"); %> <%=Name%>, 今天是 <% Date today=new Date(); %> <%=today.getDate()%>号,星期<%=today.getDay()%> request对象示例(输出结果)request对象示例(输出结果) 你好, 独孤求败, 今天是 9号,星期1 nullexample4_1.jsp <%@ page contentType="text/html;Charset=GB2312" %> <%@ taglib tagdir="/WEB-INF/tags" prefix="com"%>
<% String textContent=request.getParameter("number"); if(textContent==null || textContext.equals("")) { out.println("请在文本框中输入数字,按提交按钮"); } else { %>

调用Computer.tag文件负责计算平方根 <% } %> nullCompter.tag <%@ attribute name="number" %> <% try{ double n=Double.parseDouble(number); if(n>=0) { double r=Math.sqrt(n) ; out.print("
"+n+"的平方根:"); out.print("
"+r); } else { out.print("
"+"请输入一个正数"); } } catch(NumberFormatException e) { out.print("
"+"请输入数字字符"); } %>得到Form表单的信息一得到Form表单的信息一 通常我们用得最多的就是客户端请求的参数名称和参数值信息。 得到某参数值的语法为: request.getParameter(”param1“) 也可以通过request对象的getParameterNames()方法得到客户端传递过来的所有参数名字。 如:Enumeration params = request.getParameterNames();得到Form表单的信息二得到Form表单的信息二案例名称:HTML表单 程序名称:4-14.html

姓名:

密码:

null 案例2-2:表单信息的提交与获取 (1)input.jsp <%@ page contentType="text/html;Charset=GB2312" %>

请输入下列信息:
输入您的姓名:

选择性别:

选择您喜欢的歌手: 张歌手 null李歌手 刘歌手 王歌手

null(2)receive.jsp <%@ page contentType="text/html;Charset=GB2312" %> <% String yourName=request.getParameter("name"); // 获取text提交的值 String yourSex=request.getParameter("R"); //获取radio提交的值 String secretMess=request.getParameter("secret"); //获取hidden提交的值 String personName[]=request.getParameterValues("superstar"); //获取checkbox提交的值 out.println("

您的姓名:"+yourName+"

"); out.println("

您的性别:"+yourSex+"

"); out.println("

您喜欢的歌手:");null if(personName==null || personName.length==0) { out.print("一个都不喜欢"); } else { for(int k=0;k hidden提交的值:"+secretMess); %> 1.1.2处理汉字信息 1.1.2处理汉字信息 当利用request.getParameter得到Form中元素的时候,默认的情况字符编码为ISO-8859-1,这种编码不能正确的显示汉字。 一种方法是转换字符编码 <% String str=request.getParameter(“girl"); byte b[]=str.getBytes("ISO-8859-1"); str=new String(b); %>nullexample4_2.jsp <%@ page contentType="text/html;Charset=GB2312" %>

nullshowMessage1.jsp <%@ page contentType="text/html;Charset=GB2312" %>

获取文本框提交的信息: <% String textContent=request.getParameter("boy"); %>
<%=textContent%>

获取按钮的名字: <% String buttonName=request.getParameter("submit"); %>
<%=buttonName%> nullshowMessage2.jsp <%@ page contentType="text/html;charset=GB2312" %>

获取文本框提交的信息: <% String textContent=request.getParameter("boy"); byte b[]=textContent.getBytes("ISO-8859-1"); textContent=new String(b); %>
<%=textContent%>

获取按钮的名字: <% String buttonName=request.getParameter("submit"); byte c[]=buttonName.getBytes("ISO-8859-1"); buttonName=new String(c); %>
<%=buttonName%> 1.1.3 request对象的常用方法 1.1.3 request对象的常用方法 getProtocol():获取请求使用的通信协议,如http/1.1等。 getServletPath():获取请求的JSP页面所在的目录。 getContentLength():获取HTTP请求的长度。 getMethod():获取表单提交信息的方式,如POST或GET。 getHeader(String s):获取请求中头的值。 getHeaderNames():获取头名字的一个枚举。 getHeaders(String s):获取头的全部值的一个枚举。1.1.3 request对象的常用方法 1.1.3 request对象的常用方法 getRemoteAddr():获取客户的IP地址。 getRemoteHost():获取客户机的名称(如果获取不到,就获取IP地址)。 getServerName():获取服务器的名称。 getServerPort():获取服务器的端口号。 getParameterNames():获取表单提交的信息体部分中name参数值的一个枚举nullexample4_3.jsp <%@ page contentType="text/html;Charset=GB2312" %> <%@ page import="java.util.*" %>

<% String protocol=request.getProtocol(); String path=request.getServletPath(); String method=request.getMethod(); String header=request.getHeader("accept"); %>null
客户使用的协议是: "<%= protocol %>"
用户请求的页面所在位置: "<%= path %>"
客户提交信息的方式: "<%= method %>"
>获取HTTP头文件中accept的值(浏览器支持的MIME类型): "<%= header %>"
null
获取客户端提交的所有参数的名字: <% Enumeration enumName=request.getParameterNames(); while(enumName.hasMoreElements()) { String s=(String)enumName.nextElement(); out.println(s); } %>
获取头名字的一个枚举: <% Enumeration enumHeaded=request.getHeaderNames(); while(enumHeaded.hasMoreElements()) { String s=(String)enumHeaded.nextElement(); out.println(s); } %>null
获取头文件中指定头名字的全部值的一个枚举: <% Enumeration enumHeadedValues=request.getHeaders("cookie"); while(enumHeadedValues.hasMoreElements()) { String s=(String)enumHeadedValues.nextElement(); out.println(s); } %>

文本框text提交的信息: <% String textContent=request.getParameter("boy"); if(textContent==null) { textContent=""; } int length=textContent.length(); out.println(textContent); out.println("文本框中字符的个数:"+length); %> 1.2 response对象 1.2 response对象 response对象是一个javax.servlet.http.HttpServletResponse类的子类的对象. response对象对客户的请求做出响应,向客户端发送数据.1.2.1改变contentType属性的值1.2.1改变contentType属性的值 当请求一个JSP页面的时候,如果该页面用page指令设置页面的contentType属性的值是text/html,那么服务器将把静态页面部分发送给客户端。 也可以设置为其他一些相应类型,如:text/plain(文本文件)、application/x-msexcel(Excel文件)和application/msword(Word文件)等。 显示为Word文档显示为Word文

例名称:显示为Word文档 程序名称:4-11.jsp <%@ page contentType="text/html;charset=GBK" %>

response对象
setContentType方法

将当前页面保存为word文档吗 <% response.setContentType("application/msword;charset=GB2312"); %> nullexample4_4.jsp <%@ page contentType="text/html;Charset=GB2312" %>

在学习response对象的setContentType方法

将当前页面用MS-Word显示吗?

将当前页面用MS-Powerpoint显示吗?

null<% String str=request.getParameter("submit"); if(str==null) { str=""; } if(str.equals("MS-Word显示")) { response.setContentType("application/msword"); } else if(str.equals("MS-Powerpoint显示")) { response.setContentType("application/vnd.ms-powerpoint"); } %>
1.2.2 设置响应HTTP头1.2.2 设置响应HTTP头可以利用JSP动态改变客户端的响应,使用的语法是“response.setHeader()”, 比如让客户端自动每隔5秒刷新一次。4-5.jsp <%@ page contentType="text/html;charset=GBK" %> <%@ page import="java.util.*" %>

现在的时间是:
<% out.println(""+new Date()); response.setHeader("Refresh","5"); %>1.2.3重定向 1.2.3重定向 对于response对象,最常用到的是sendRedirect()方法,可以使用这个方法将当前客户端的请求转到其它页面去。相应的代码格式为:response.sendRedirect("URL地址"); 与指令的最大区别就是:只能使用在本网站内跳转,但可以使用response.sendRedirect跳转到任何一个地址的页面 nullexample4_6.jsp <%@ page contentType="text/html;charset=GB2312" %>

填写姓名:

nullform.jsp <%@ page contentType="text/html;Charset=GB2312" %>  <% String str=null; str=request.getParameter("boy"); if(str.length()==0) { response.sendRedirect("example4_6.jsp"); } else { out.print("欢迎您来到本网页!"); out.print(str); } %> 1.2.4 状态行1.2.4 状态行1yy:主要是实验性质的 2yy:表明请求成功 3yy:表明在请求满足之前应采取进一步的行动 4yy:当浏览器无法满足请求时,返回该状态码 5yy:表示服务器出现问题 具体如表4.1所示。1.2.4 状态行1.2.4 状态行example4_7.jsp <%@ page contentType="text/html;charset=GB2312" %>

点击下面的超链接:
welcome1.jsp欢迎你吗?
welcome2.jsp欢迎你吗?
welcome3.jsp欢迎你吗?
nullwelcome1.jsp <%@ page contentType="text/html;charset=GB2312" %> <% response.setStatus(404); out.print("能看到本页面吗?"); %> nullwelcome2.jsp <%@ page contentType="text/html;charset=GB2312" %> <% response.setStatus(200); out.println("这是welcome2,能看到welcome2.jsp页面吗?"); %> welcome3.jsp <%@ page contentType="text/html;charset=GB2312" %> <% response.setStatus(500); %> 1.3 session对象 1.3 session对象 内置对象session由Tomcat服务器负责创建,session是实现了HttpSession接口类的一个实例。 它表示当前的用户会话信息。在session中保存的信息,当前用户连接的所有页面中都是可以被访问到。 可以使用Session 对象存储用户登录网站时候的信息。当用户在页面之间跳转时,存储在Session对象中的变量不会被清除。 1.3 .1 session对象的ID 1.3 .1 session对象的ID session对象被分配了一个String类型的ID,Tomcat服务器将ID发送到客户端,存放在客户的Cookie中。 同一用户在同一Web服务目录中的各个页面的session是相同的. 不同用户的session对象互不相同,具有不同的ID。 对session的理解 对session的理解 案例名称:使用ID属性 程序名称:4-22.jsp <%@ page contentType="text/html;charset=GBK" %> <% String s = session.getId(); %> 你的session ID:<%=s%> nullfirst.jsp <%@ page contentType="text/html;charset=GB2312" %>

<% String id=session.getId(); out.println("您的session对象的ID是:
"+id); %>

输入你的姓名连接到second.jsp

nullsecond.jsp <%@ page contentType="text/html;Charset=GB2312" %>

我是second.jsp页面 <% String id=session.getId(); out.println("您的session对象的ID是:
"+id); %>

点击超链接,连接到third.jsp的页面。 欢迎去third.jsp页面! nullthird.jsp <%@ page contentType="text/html;charset=GB2312" %>

我是third.jsp页面 <% String id=session.getId(); out.println("您的session对象的ID是:
"+id); %>

点击超链接,连接到first.jsp的页面。 欢迎去first.jsp! session对象的常用方法session对象的常用方法 session对象表示目前用户的会话状态,用来识别每个用户,与之相关的常用方法如下。 (1)Object getAttribute(String name) 获取与指定名字相关联的session属性值。 (2)Enumeration getAttributeNames( ) 取得session内所有属性的集合。 (3)long getCreationTime( ) 获取session的创建时间,最小单位为千分之一秒。null(4)String getId( ) 获取session标识。此方法返回惟一的标识,这些标识为每个session而产生。当只有一个单一的值与一个session联合时,或当日志信息与先前的sessions有关时,它被当做键名用。 (5)long getLastAccessedTime( ) 获取与当前session相关的客户端最后一次访问的时间,由1970-01-01算起,单位为毫秒。 null(6)int getMaxInactiveInterval(int interval) 获取总时间,以秒为单位,表示session的有效时间。−1为永不过期。 (7)void invalidate( ) 销毁session对象。 (8)boolean isNew( ) 判断一个session是否由服务器产生,但是客户端并没有使用。null(9)void setAttribute(String name, String value) 设置指定名称的session属性值,会替换掉任何以前同一用户的同名值。 (10)void setMaxInactiveInterval(int interval) 设置session的有效期。 (11)void removeAttribute(String name) 移除指定名称的session属性。 1.3.2 session对象存储数据 1.3.2 session对象存储数据 (1) public void setAttribute(String key, Object obj) session对象可以调用该方法将参数Object指定的对象obj添加到session对象中,并为添加的对象指定了一个索引关键字,如果添加的两个对象的关键字相同,则先前添加的对象被清除。 (2)public Object getAttibute(String key) 获取session对象含有的关键字是key的对象。由于任何对象都可以添加到session对象中,因此用该方法取回对象时,应强制转化为原来的类型。null(3)public Enumeration getAttributeNames() session对象调用该方法产生一个枚举对象,该枚举对象使用nextElemets()遍历session中的各个对象所对应的关键字。 (4)public void removeAttribute(String name) session对象调用该方法移掉关键字key对应的对象。 nullmain.jsp <%@ page contentType="text/html;Charset=GB2312" %>

欢迎来到本页面,请输入您的姓名

<% String name=request.getParameter("name"); if(name==null) { name=""; } else { session.setAttribute("customerName",name); } %> null <% if(name.length()>0) { %>

点击超链接,连接到food.jsp的页面,去采购食品。 欢迎去食品柜台! <% } %> nullfood.jsp <%@ page contentType="text/html;charset=GB2312" %>

点击超链接,连接到main.jsp的页面,去修改姓名。 欢迎去main.jsp!

这里是食品柜台,请选择您要购买的食品:

香肠 苹果 酱油 饮料
null<% String foodName[]=request.getParameterValues("choice"); if(foodName!=null) { for(int k=0;k

点击超链接,连接到count.jsp的页面,去查看购物车中的商品。 欢迎去count.jsp! nullcount.jsp <%@ page contentType="text/html;Charset=GB2312" %> <%@ page import="java.util.*" %>

这里是结帐处,您的姓名以及选择的商品: <% String personName=(String)session.getAttribute("customerName"); out.println("
您的姓名:"+personName); Enumeration enumGoods=session.getAttributeNames(); out.println("
购物车中的商品:
"); while(enumGoods.hasMoreElements()) { String key=(String)enumGoods.nextElement(); String goods=(String)session.getAttribute(key); if(!(goods.equals(personName))) out.println(goods+"
"); } %>null

点击超链接,连接到food.jsp的页面,购买食品。 欢迎去food.jsp!

点击超链接,连接到main.jsp的页面,去修改姓名。 欢迎去main.jsp! 简易session版购物车 简易session版购物车 利用session保存用户选购的商品信息,本购物车程序包含三个程序: (1)buy1.jsp:购物网页一。 (2)buy2.jsp:购物网页二。 (3)display.jsp:查看购物车程序。简易session版购物车简易session版购物车案例名称:购物网页一 程序名称:buy1.jsp案例名称:购物网页二 程序名称:buy2.jsp案例名称:显示购物车程序 程序名称:display.jsp1.3.3 session对象的生存周期 1.3.3 session对象的生存周期 一个用户在某个WEB服务目录的session对象的生存期限依赖于客户是否关闭浏览器。 如果用户关闭浏览器,那么用户session会消失,如果长时间不关闭浏览器,用户的session也可能消失。 这是因为Tomcat服务器允许的最长的”发呆”状态时间为30分钟。null 可以修改Tomcat服务器下的conf/web.xml重新 设置“发呆”时间。 30 nullexample4_10.jsp <%@ page contentType="text/html;Charset=GB2312" %> <%@ page import="java.util.*" %> <% session.setMaxInactiveInterval(20); boolean boo=session.isNew(); out.println("
如果你第一次访问当前web服务目录,您的会话是新的"); out.println("
如果你不是首次访问当前web服务目录,您的会话不是新的"); out.println("
会话是新的吗?:"+boo); out.println(“
欢迎来到本页面,您的session允许的最长发呆时间为"+ session.getMaxInactiveInterval()+"秒"); out.println("
您的session的创建时间是"+new Date(session.getCreationTime())); null out.println("
您的session的Id是"+session.getId()); Long lastTime=(Long)session.getAttribute("lastTime"); if(lastTime==null) { long n=session.getLastAccessedTime(); session.setAttribute("lastTime",new Long(n)); } else { long m=session.getLastAccessedTime(); long n=((Long)session.getAttribute("lastTime")).longValue(); out.println("
您的发呆时间大约是"+(m-n)+"毫秒,大约"+(m-n)/1000+"秒"); session.setAttribute("lastTime",new Long(m)); } %>1.3.4 session对象与URL重写 1.3.4 session对象与URL重写 session对象能和客户建立起一一对应的关系依赖于 客户的浏览器是否支持Cookie。 如果不支持,则客户在不同网页之间的session可能 是不同的。 如果浏览器不支持Cookie,可以通过URL重写来实 现session对象的唯一性。 如: String str=response.encodeRedirectURL(“jerry.jsp”);nullfirst.jsp <%@ page contentType="text/html;charset=GB2312" %>

<% String id=session.getId(); out.println("您的session对象的ID是:
"+id); String str=response.encodeRedirectURL("tom/second.jsp"); %>

输入你的姓名连接到second.jsp

nullsecond.jsp <%@ page contentType="text/html;Charset=GB2312" %>

我是second.jsp页面 <% String id=session.getId(); out.println("您的session对象的ID是:
"+id);

/
本文档为【JSP内置对象】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索