第4章 JSP内置对象Word文件下载.docx
《第4章 JSP内置对象Word文件下载.docx》由会员分享,可在线阅读,更多相关《第4章 JSP内置对象Word文件下载.docx(37页珍藏版)》请在冰豆网上搜索。
返回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"
html>
head>
<
title>
request对象示例<
/title>
/head>
bodybgcolor="
#FFFFF0"
>
h4>
一.request对象常用方法<
/h4>
请求方式:
<
%=request.getMethod()%>
br>
请求的资源:
%=request.getRequestURI()%>
请求用的协议:
%=request.getProtocol()%>
请求的文件名:
%=request.getServletPath()%>
请求的服务器的IP:
%=request.getServerName()%>
请求服务器的端口:
%=request.getServerPort()%>
客户端IP地址:
%=request.getRemoteAddr()%>
客户端主机名:
%=request.getRemoteHost()%>
表单提交来的值:
%=request.getParameter("
qwe"
)%>
二.使用request获取客户端提交的参数<
formaction="
"
method="
post"
用户名:
<
inputtype="
text"
name="
username"
&
nbsp;
&
密码:
userpass"
submit"
value="
进入"
/form>
%Stringstr="
;
if(request.getParameter("
)!
=null
&
request.getParameter("
=null){
Enumerationenumt=request.getParameterNames();
while(enumt.hasMoreElements()){
str=enumt.nextElement().toString();
out.println(str+"
:
+request.getParameter(str)+"
}
}
%>
擅长:
checkbox"
cb"
ON1"
VC++&
ON2"
JAVA&
ON3"
DELPHI&
ON4"
VB&
%if(request.getParameter("
=null){
for(inti=0;
i<
request.getParameterValues("
).length;
i++){
out.println("
+i+"
+request.getParameterValues("
)[i]
+"
}
out.println(request.getParameter("
));
}
%>
/body>
/html>
执行结果如图4-1所示:
图4-1
4.2.2request对象的常用技术
1、用getParameter方法获取表单提交信息
request对象获取客户提交信息的最常用的方法是getParameter(Strings)。
在下面的示例,form.html通过表单向requestForm1.jsp提交用户名和密码信息;
requestForm1.jsp通过request对象获取表单提交的信息。
form1.html示例代码:
HTML>
BODY>
FORMACTION=“requestForm1.jsp"
METHOD="
POST"
P>
姓名:
INPUTTYPE="
TEXT"
SIZE="
20"
NAME="
UserID"
/P>
密码:
PASSWORD"
UserPWD"
SUBMIT"
VALUE="
提交"
/FORM>
/BODY>
/HTML>
图4-2
requestForm.jsp示例代码:
charset=GBK"
%
StringstrUserName="
StringstrUserPWD="
strUserName=request.getParameter("
strUserPWD=request.getParameter("
姓名:
%=strUserName%>
密码:
%=strUserPWD%>
图4-3
2、用getParameterValues方法获取表单成组信息
通过request对象的getParameterValues方法可以获得指定参数的成组信息,通常在表单的复选框中使用。
该方法的原型如下:
publicString[]getParameterValues(Stringstr)
下面示例中,form2.html表单中有三个复选框,选中复选框后,表单信息提交给requestForm2.jsp,在requestForm2.jsp中使用getParameterValues获取复选框的成组信息并显示。
form2.html
body>
formid="
form1"
action="
requestForm2.jsp"
请选择喜欢的水果:
p>
apple"
/>
apple
banana"
banana
peach"
peach<
Submit"
提交"
图4-4
requestForm2.jsp
String[]temp=request.getParameterValues("
你喜欢的水果是:
for(inti=0;
i<
temp.length;
i++){
out.println(temp[i]+"
"
}
图4-5
3、表单信息获取的综合应用
下面示例通过request对象中的常用方法获取表单中的各类信息。
注意:
request对象中获取中文信息经常出现乱码,在requestForm3.jsp中编写了trans方法解决乱码文题。
form3.html
requestForm3.jsp"
name"
密码:
password"
pass"
性别:
inputname="
sex"
type="
radio"
男"
checked="
checked"
男
女"
女<
性格:
热情大方"
热情大方
温柔体贴"
温柔体贴
多愁善感"
多愁善感<
简介:
textareaname="
textarea"
/textarea>
城市:
selectname="
select"
optionvalue="
北京"
北京<
/option>
上海"
上海<
/select>
图4-6
requestForm3.jsp
%!
publicStringtrans(Stringstr)throwsException{
byteb[]=str.getBytes("
ISO-8859-1"
str=newString(b);
returnstr;
%>
Stringname=trans(request.getParameter("
Stringpass=trans(request.getParameter("
Stringsex=trans(request.getParameter("
String[]temp=request.getParameterValues("
Stringxingge="
for(inti=0;
xingge=xingge+temp[i]+"
xingge=trans(xingge);
Stringjianjie=trans(request.getParameter("
Stringcity=trans(request.getParameter("
%>
姓名:
%=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对象主要方法
addCoolie(Cookiecoolie)
向客户端写入一个cookie
addHeader(Stringname,Stringvalue)
添加HTTP文件头
containsHeader(Stringname)
判断名为name的header文件头是否存在
encodeURL(Stringurl)
把sessionId作为URL参数返回到客户端
getOutputStream()
获得到客户端的输出流对象
sendError(int)
向客户端发送错误信息。
如404信息
sendRedirect(Stringurl)
重定向请求
setContentType(Stringtype)
设置响应的MIME类型
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
BODYbgcolor=cyan>
Fontsize=5>
您想使用什么方式查看文本文件A.txt?
FORMaction="
response1.jsp"
name=form>
word"
submit1"
excel"
submit2"
/FONT>
response1.jsp
Stringstr1=request.getParameter("
Stringstr2=request.getParameter("
if(str1==null){
str1="
if(str2==null){
str2="
if(str1.startsWith("
)){
response.setContentType("
application/msword;
charset=GB2312"
out.print(str1);
if(str2.startsWith("
application/x-msexcel;
jsp:
includepage="
A.txt"
/>
setHeader(Stringname,Stringvalue)方法可以添加新的相应头和头的值。
下面的示例中response对象添加一个响应头refresh,其头值是“3”。
那么客户收到这个头之后,每隔3秒刷新一次页面。
response2.jsp
%@pageco