第4章 JSP内置对象.docx

上传人:b****7 文档编号:8787931 上传时间:2023-02-01 格式:DOCX 页数:37 大小:680.81KB
下载 相关 举报
第4章 JSP内置对象.docx_第1页
第1页 / 共37页
第4章 JSP内置对象.docx_第2页
第2页 / 共37页
第4章 JSP内置对象.docx_第3页
第3页 / 共37页
第4章 JSP内置对象.docx_第4页
第4页 / 共37页
第4章 JSP内置对象.docx_第5页
第5页 / 共37页
点击查看更多>>
下载资源
资源描述

第4章 JSP内置对象.docx

《第4章 JSP内置对象.docx》由会员分享,可在线阅读,更多相关《第4章 JSP内置对象.docx(37页珍藏版)》请在冰豆网上搜索。

第4章 JSP内置对象.docx

第4章JSP内置对象

第四章、JSP内置对象

JSP的内置对象由JSP容器自动为JSP页面提供,可以使用标准的变量来访问这些对象,并且不用编写任何额外的代码,可以在JSP网页中使用。

在JPS2.0规范中定义了以下9个内置对象:

request(请求对象)、response(响应对象)、session(会话对象)、application(应用程序对象)、out(输出对象)、page(页面对象)、config(配置对象)、exception(异常对象)、pageContext(页面上下文对象)。

在这一章中,我们将对它们进行介绍,并通过示例来介绍它们的具体使用方法。

4.1内置对象概述

正如第一章所介绍,Web应用程序的特点是每一个JSP文件相当于独立的运行单元,类似于一个独立的应用程序,并由容器(Tomcat)进行统一管理。

对于一个实际工程项目来说,不可能只有一张页面,且页面之间存在各类内部数据的实时通信问题,如:

把A页面登录数据传递到B页面进行验证;购物车的设计涉及若干页面共享数据问题;公告栏涉及不同用户的数据共享问题。

而且,在实际项目中,存在着对各类请求/响应有一些特殊要求等。

因此,容器根据规范要求,向用户提供了一些内置对象,用于解决上述问题,并负责对这些对象的管理,包括内置对象的生存期、作用域等。

这些内置对象中,request、response对象是在客户端请求一个JSP页面,由容器实时生成并作为服务参数传递给JSP(实际上是servlet),请求/相应结束,由容器回收;session的生成一般是在用户第一进入系统时形成,退出系统时,由容器回收。

4.2request对象

request对象最主要的作用在于接收参数,当客户端请求一个JSP页面时,JSP容器会将客户端的请求信息包装在这个request对象,请求信息的内容包括请求的头信息、请求的方式、请求的参数名称和参数值等信息。

request对象封装了用户提交的信息,通过调用该对象相应的方法可以获取来自客户端的请求信息,然后做出响应。

它是HttpServletRequest类的实例。

4.2.1request对象主要方法

序号

方法名

方法说明

1

*getAttribute(Stringname)

返回指定属性的属性值

2

getAttributeNames()

返回所有可用属性名的枚举

3

getCharacterEncoding()

返回字符编码方式

4

getContentLength()

返回请求体的长度(以字节数)

5

getContentType()

得到请求体的MIME类型

6

getInputStream()

得到请求体中一行的二进制流

7

*getParameter(Stringname)

返回name指定参数的参数值

8

getParameterNames()

返回可用参数名的枚举

9

getParameterValues(Stringname)

返回包含参数name的所有值的数组

10

getProtocol()

返回请求用的协议类型及版本号

11

getServerName()

返回接受请求的服务器主机名

12

getServerPort()

返回服务器接受此请求所用的端口号

13

getReader()

返回解码过了的请求体

14

getRemoteAddr()

返回发送此请求的客户端IP地址

15

getRemoteHost()

返回发送此请求的客户端主机名

16

*setAttribute(Stringkey,Objectobj)

设置属性的属性值

17

getRealPath(Stringpath)

返回一虚拟路径的真实路径

18

getMethod()

返回客户向服务器传输数据的方式

19

getRequestURL()

返回发出请求字符串的客户端地址

20

*getSession()

创建一个session对象

表4-1request对象方法

下面的程序示例了request对象的一些常用方法,通常使用request对象来获得客户端传来的数据。

example4_1.jsp

<%@pagecontentType="text/html;charset=gb2312"%>

<%request.setCharacterEncoding("gb2312");%>

<%@pageimport="java.util.Enumeration"%>

request对象示例

一.request对象常用方法

请求方式:

<%=request.getMethod()%>

请求的资源:

<%=request.getRequestURI()%>

请求用的协议:

<%=request.getProtocol()%>

请求的文件名:

<%=request.getServletPath()%>

请求的服务器的IP:

<%=request.getServerName()%>

请求服务器的端口:

<%=request.getServerPort()%>

客户端IP地址:

<%=request.getRemoteAddr()%>

客户端主机名:

<%=request.getRemoteHost()%>

表单提交来的值:

<%=request.getParameter("qwe")%>

二.使用request获取客户端提交的参数

用户名:

  密码:

  

<%Stringstr="";

if(request.getParameter("username")!

=null

&&request.getParameter("userpass")!

=null){

Enumerationenumt=request.getParameterNames();

while(enumt.hasMoreElements()){

str=enumt.nextElement().toString();

out.println(str+":

"+request.getParameter(str)+"
");

}

}

%>

擅长:

VC++ 

JAVA 

DELPHI 

VB 


<%if(request.getParameter("qwe")!

=null){

for(inti=0;i

out.println("cb"+i+":

"

+request.getParameterValues("cb")[i]

+"
");

}

out.println(request.getParameter("qwe"));

}

%>

执行结果如图4-1所示:

图4-1

4.2.2request对象的常用技术

1、用getParameter方法获取表单提交信息

request对象获取客户提交信息的最常用的方法是getParameter(Strings)。

在下面的示例,form.html通过表单向requestForm1.jsp提交用户名和密码信息;requestForm1.jsp通过request对象获取表单提交的信息。

form1.html示例代码:

姓名:

密码:

图4-2

requestForm.jsp示例代码:

<%@pagecontentType="text/html;charset=GBK"%>

<%

StringstrUserName="";

StringstrUserPWD="";

strUserName=request.getParameter("UserID");

strUserPWD=request.getParameter("UserPWD");

%>

姓名:

<%=strUserName%>

密码:

<%=strUserPWD%>

图4-3

2、用getParameterValues方法获取表单成组信息

通过request对象的getParameterValues方法可以获得指定参数的成组信息,通常在表单的复选框中使用。

该方法的原型如下:

publicString[]getParameterValues(Stringstr)

下面示例中,form2.html表单中有三个复选框,选中复选框后,表单信息提交给requestForm2.jsp,在requestForm2.jsp中使用getParameterValues获取复选框的成组信息并显示。

form2.html

请选择喜欢的水果:

apple

banana

peach

图4-4

requestForm2.jsp

<%@pagecontentType="text/html;charset=gb2312"%>

<%

String[]temp=request.getParameterValues("checkbox");

out.println("你喜欢的水果是:

");

for(inti=0;i

out.println(temp[i]+"");

}

%>

图4-5

3、表单信息获取的综合应用

下面示例通过request对象中的常用方法获取表单中的各类信息。

注意:

request对象中获取中文信息经常出现乱码,在requestForm3.jsp中编写了trans方法解决乱码文题。

form3.html

姓名:

密码:

性别:

性格:

热情大方

温柔体贴

多愁善感

简介:

城市:

北京

上海

图4-6

requestForm3.jsp

<%@pagecontentType="text/html;charset=gb2312"%>

<%!

publicStringtrans(Stringstr)throwsException{

byteb[]=str.getBytes("ISO-8859-1");

str=newString(b);

returnstr;

}

%>

<%

Stringname=trans(request.getParameter("name"));

Stringpass=trans(request.getParameter("pass"));

Stringsex=trans(request.getParameter("sex"));

String[]temp=request.getParameterValues("checkbox");

Stringxingge="";

for(inti=0;i

xingge=xingge+temp[i]+"";

}

xingge=trans(xingge);

Stringjianjie=trans(request.getParameter("textarea"));

Stringcity=trans(request.getParameter("select"));

%>

姓名:

<%=name%>

密码:

<%=pass%>

性别:

<%=sex%>

性格:

<%=xingge%>

简介:

<%=jianjie%>

城市:

<%=city%>

图4-7

4、利用request传递任意类型对象数据

正如上述,request主要用来传递数据的(二个页面之间)。

大多数情况下,利用其getParameter()和getParameterValues()方法获取各类表单信息,一般是字符串或字符串数组类型。

有时,项目要求传递其它类型值,如,在一个servlet中,通过数据库操作,得到一个学生记录集,以二维数组形式存放,具体可以用ArrayList实现。

进一步,把该记录集传递到一JSP页面,用于显示该记录集,此时,就可以利用request的setAttribute(Stringkey,Objectobj)和getAttribute(Stringkey)来设值和取值了。

详细代码以后章节会介绍,示意代码如下所示。

servlet

ArrayListstudentList;//其具体值的获得略。

request.setAttribute(“student”,studentList);

forward到A.jsp;

A.jsp

ArrayListlist=(ArrayList)request.getAttribute(“student”);

4.3response对象

request对象和response对象是相辅相成的,request对象用来得到客户端的信息。

response对象处理服务器端对客户端的一些响应,request用来得到客户端信息,用response处理响应。

response对象对客户的请求做出动态的响应,向客户端发送数据。

它是HttpServletResponse类的实例。

4.3.1response对象主要方法

序号

方法名

方法说明

1

addCoolie(Cookiecoolie)

向客户端写入一个cookie

2

addHeader(Stringname,Stringvalue)

添加HTTP文件头

3

containsHeader(Stringname)

判断名为name的header文件头是否存在

4

encodeURL(Stringurl)

把sessionId作为URL参数返回到客户端

5

getOutputStream()

获得到客户端的输出流对象

6

sendError(int)

向客户端发送错误信息。

如404信息

7

sendRedirect(Stringurl)

重定向请求

8

setContentType(Stringtype)

设置响应的MIME类型

9

setHeader(Stringname,Stringvalue)

设置指定的HTTP文件的头信息值,如果该值已经存在,则新值会覆盖原有的旧值.

表4-2

4.3.2response对象的常用技术

1、使用response对象设置Http文件的头信息

这里主要介绍两个方法:

setContentType(Stringtype)和setHeader(Stringname,Stringvalue)。

setContentType(Strings)方法可以动态改变ContentType的属性值,参数s可取text/html、text/plain、application/x-msexcel、application/msworld等。

在下面的示例中,当用户选择用world显示文件时,response对象将contentType属性值设置成为application/msworld。

同样,当用户选择用excel显示文件时,response对象将contentType属性值设置成为application/x-msexcel。

A.txt

34795199

40699222

67718520

72307838

55613943

43811055

36934199

contenttype.html

您想使用什么方式查看文本文件A.txt?

response1.jsp

<%@pagecontentType="text/html;charset=gb2312"%>

<%

Stringstr1=request.getParameter("submit1");

Stringstr2=request.getParameter("submit2");

if(str1==null){

str1="";

}

if(str2==null){

str2="";

}

if(str1.startsWith("word")){

response.setContentType("application/msword;charset=GB2312");

out.print(str1);

}

if(str2.startsWith("excel")){

response.setContentType("application/x-msexcel;charset=GB2312");

}

%>

includepage="A.txt"/>

setHeader(Stringname,Stringvalue)方法可以添加新的相应头和头的值。

下面的示例中response对象添加一个响应头refresh,其头值是“3”。

那么客户收到这个头之后,每隔3秒刷新一次页面。

response2.jsp

<%@pageco

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 教学研究 > 教学计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1