JSP内置对象

一个

内置对象有

一request对象

为了更好地理解

从网站获取页面时,浏览器在网站上打开了一个对网络服务器的连接,并发出请求。服务器收到请求并作出响应,响应结束后,客户浏览器和服务器之间的连接关闭。所以,HTTP被称为“请求和响应”协议。

用户通过在浏览器的地址栏中输入一个

GET/hello.htmlHTTP/1.1

Host:

上面的第一行称为请求行,含有请求使用的方法、请求的资源和请求使用的协议;第二行称为头,给出请求的主机地址,其中请求的方法是

一个典型请求通常包含许多头,称为请求的HTTP头,提供了关于信息体的附加信息及请求的来源。其中有些头是标准的,有些头与特定的浏览器有关。

一个请求还可能包含信息体,如信息体可包含”POST”或

1.获取客户提交的信息

当用户请求一个

内置对象

【例

Example4_1.jsp

<%@pagecontentType=”text/html;Charset=GB2312″%>

<%@taglibtagdir=”/WEB-INF/tags”prefix=”com”%>

<HTML><BODYbgcolor=cyan><FONTsize=3>

<FORMaction=””method=postname=form>

<Inputtype=”text”name=”number”>

<Inputtype=”submit”value=”提交”name=”submit”>

</FORM>

<%StringtextContent=request.getParameter(“number”);

if(textContent==null){

out.println(“请在文本框中输入数字,按提交按钮”);

}

else{

%><p>

<com:Computernumber=”<%=textContent%>”/>

<%}

%>

</FONT></BODY></HTML>

Computer.tag

<%@attributename=”number”%>

<%try{

doublen=Double.parseDouble(number);

if(n>=0){

doubler=Math.sqrt(n);

out.print(“<BR>”+n+”的平方根:”);

out.print(“<BR>”+r);

}

else

out.print(“<BR>”+”请输入一个正数”);

}

catch(NumberFormatExceptione){out.print(“<BR>”+”请输入数字字符”);}

%>

效果如图所示:

在运行例

2.处理汉字信息

当用request对象获取请求中的汉字字符信息时,可能出现乱码问题,所以对含有汉字字符的信息必须进行特殊的处理方式,即将

<%@pagecontentType=”text/html;charset=GB2312”%>

中出现的“

Stringstr=request.getParameter(“gile);

Byteb[]=str.getBytes(“ISO-8859-1”);

Str=newString(b);

【例

Example4_2.jsp

<%@pagecontentType=”text/html;Charset=GB2312″%>

<HTML><BODYbgcolor=cyan>

<FORMaction=”showMessage1.jsp”method=postname=form>

<Inputtype=”text”name=”boy”>

<Inputtype=”submit”value=”提交给showMessage1.jsp”name=”submit”>

</FORM>

<FORMaction=”showMessage2.jsp”method=postname=form>

<Inputtype=”text”name=”boy”>

<Inputtype=”submit”value=”提交给showMessage2.jsp”name=”submit”>

</FORM>

</BODY></HTML>

showMessage2.jsp

<%@pagecontentType=”text/html;charset=GB2312″%>

<HTML><BODY>

<P>获取文本框提交的信息:

<%StringtextContent=request.getParameter(“boy”);

byteb[]=textContent.getBytes(“ISO-8859-1”);

textContent=newString(b);

%>

<BR><%=textContent%>

<P>获取按钮的名字:

<%StringbuttonName=request.getParameter(“submit”);

bytec[]=buttonName.getBytes(“ISO-8859-1”);

buttonName=newString(c);

%>

<BR><%=buttonName%>

</BODY></HTML>

3.Request对象的常用方法

我们已经知道,当用户访问一个

POST/E.jsp/HTTP.1.1

Host:localhost:8080

Accept-encoding:gzip,deflate

其中,首行叫做请求行,规定了向访问的页面请求提交信息的方式,如

尽管服务器非常关心用户提交的

getProtocol()

getServletPath()

getContentLength():

getMethod():

getHeader

getHeaderNames():获取头名字的一个枚举。

getHeaders(Strings):获取头的全部值的一个枚举。

getRemoteAddr():

getRemoteHost():获取客户机的名称。

getServerName():获取服务器的名称。

getServerPort():获取服务器的端口号。

getParameterNames():

【例

<%@pagecontentType=”text/html;Charset=GB2312″%>

<%@pageimport=”java.util.*”%>

<HTML><BODYbgcolor=cyan><Fontsize=3>

<FORMaction=””method=postname=form>

<Inputtype=”text”name=”boy”>

<InputTYPE=”submit”value=”enter”name=”submit”>

<TABLEborder=1>

<%Stringprotocol=request.getProtocol();

Stringpath=request.getServletPath();

Stringmethod=request.getMethod();

Stringheader=request.getHeader(“accept”);

%>

<TR>

<TD>客户使用的协议是:</TD>

<TD>”<%=protocol%>”</TD>

</TR>

<TR>

<TD>用户请求的页面所在位置:</TD>

<TD>”<%=path%>”</TD>

</TR>

<TR>

<TD>用户提交信息的方式:</TD>

<TD>”<%=method%>”</TD>

</TR>

<TR>

<TD>

<TD>”<%=header%>”</TD>

</TR>

</TABLE>

<BR>获取客户端提交的所有参数的名字:

<%EnumerationenumName=request.getParameterNames();

while(enumName.hasMoreElements()){

Strings=(String)enumName.nextElement();

out.println(s);

}

%>

<BR>获取头名字的一个枚举:

<%EnumerationenumHeaded=request.getHeaderNames();

while(enumHeaded.hasMoreElements()){

Strings=(String)enumHeaded.nextElement();

out.println(s);

}

%>

<BR>获取头文件中指定头名字的全部值的一个枚举:

<%EnumerationenumHeadedValues=request.getHeaders(“cookie”);

while(enumHeadedValues.hasMoreElements()){

Strings=(String)enumHeadedValues.nextElement();

out.println(s);

}

%>

<P>

<%StringtextContent=request.getParameter(“boy”);

byteb[]=textContent.getBytes(“ISO-8859-1”);

textContent=newString(b);

if(textContent==null){

textContent=””;

}

intlength=textContent.length();

out.println(textContent);

out.println(“文本框中字符的个数:”+length);

%>

</FONT></BODY></HTML>

二response对象

当客户访问一个服务器的页面时,会提交一个

Resquest

1.改变contentType属性的值

当一个客户请求访问一个

PublicvoidsetContentType(Strings)

该方法设置响应的

当服务器用

【例

Example4_4.jsp

<%@pagecontentType=”text/html;Charset=GB2312″%>

<HTML><BODYbgcolor=cyan><FONTsize=2>

<P>

<FORMaction=””method=”post”name=form>

<P>

<Inputtype=”submit”value=”MS-Word显示”name=”submit”>

<P>

<Inputtype=”submit”value=”MS-Powerpoint显示”name=”submit”>

</FORM>

<%Stringstr=request.getParameter(“submit”);

if(str==null){

str=””;

}

if(str.equals(“MS-Word显示”)){

response.setContentType(“application/msword”);

}

elseif(str.equals(“MS-Powerpoint显示”)){

response.setContentType(“application/vnd.ms-powerpoint”);

}

%>

</FONT></BODY></HTML>

2.设置相应的HTTP头

我们已经知道,当客户访问一个页面时,会提交一个

addHeader(Stringhead,Stringvalue);

setHeader(Stringhead,Stringvalue);

动态添加新的响应头和头的值,将这些头发送给客户机的浏览器。如果添加的头已经存在,则先前的头被覆盖。

【例

Example4_5.jsp

<%@pagecontentType=”text/html;charset=GB2312″%>

<%@pageimport=”java.util.*”%>

<HTML><BODYbgcolor=cyan><FONTsize=4>

<P>现在的时间是:<BR>

<%out.println(“”+newDate());

response.setHeader(“Refresh”,”5″);

%>

</FONT></BODY></HTML>

3.重定向

在某些情况下,当响应客户机时,服务器空间,需要将客户机重新引导至另一个页面。例如,如果用户输入的表单信息不完整,就会再被引导到该表单的输入页面。

可以使用

【例

Example4_6.jsp

<%@pagecontentType=”text/html;charset=GB2312″%>

<HTML><BODY>

<P>填写姓名:<BR>

<FORMaction=”form.jsp”method=”post”name=form>

<Inputtype=”text”name=”boy”>

<Inputtype=”submit”value=”Enter”>

</FORM>

</BODY></HTML>

Form.jsp

<%@pagecontentType=”text/html;Charset=GB2312″%>

<HTML><BODY>

<%Stringstr=null;

str=request.getParameter(“boy”);

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

str=newString(b);

if(str.length()==0){

response.sendRedirect(“example4_6.jsp”);

}

else{

out.print(“欢迎您来到本网页!”);

out.print(str);

}

%>

</BODY></HTML>

4.状态行

当服务器对客户请求进行响应时,首先要发送的是状态行,然后发送HTTP头和信息体。也就是说,状态行是响应的首行。

状态行包括

1yy:主要是实验性质的。

2yy:

3yy:表明在请求满足之前应采取进一步的行动。

4yy:

5yy:

一般不需要修改状态行,在出现问题时,

状态码

代码声明

状态码

代码声明

100

客户可以继续

404

请求的资源不可用

101

服务器正在升级协议

405

请求所用的方法时不允许的

201

请求成功且在服务器上创建了新的资源

406

请求的资源只能用请求不能接受的内容特性来响应

202

请求已经被接受但还没有处理完毕

407

客户必须得到认证

200

请求成功

408

请求超时

203

客户端给出的元信息不是发送服务器的

409

发生冲突,请求不能完成

204

请求成功,但没有新信息

410

请求的资源已经不可用

205

客户必须重置文档视图

411

请求需要一个定义的内容长度才能处理

206

服务器执行不了部分get请求

413

请求太大,被拒绝

300

请求资源有多种表示法

414

请求的URL太大

301

资源已经被永久移动到了新位置

415

请求的格式被拒绝

302

资源已经被临时移动到了新位置

500

服务器发生内部错误,美国服务器,不能服务

303

应答可以再另外一个URL钟找到

501

不支持请求的部分功能

304

GET方式请求不可用

502

从代理和网关接受了不合法的字符

305

请求必须通过代理来访问

503

HTTP服务暂时不可用

400

请求有语法错误

504

服务器在等待代理服务器应答时发生超时

401

请求需要HTTP认证

505

不支持请求的HTTP版本

403

取得了请求但拒绝服务

Example4_7.jsp

<%@pagecontentType=”text/html;charset=GB2312″%>

<HTML><BODYbgcolor=cyan><FONTsize=2>

<P>点击下面的超链接:<BR>

<Ahref=”welcome1.jsp”>welcome1.jsp欢迎你吗?

<BR><Ahref=”welcome2.jsp”>welcome2.jsp欢迎你吗?

<BR><Ahref=”welcome3.jsp”>welcome3.jsp欢迎你吗?

</FONT></BODY></HTML>

Welcome1.jsp

<%@pagecontentType=”text/html;charset=GB2312″%>

<HTML><BODY>

<%response.setStatus(408);

out.print(“能看到本页面吗?”);

%>

</BODY></HTML>

Welcome2.jsp

<%@pagecontentType=”text/html;charset=GB2312″%>

<HTML><BODY>

<%response.setStatus(200);

out.println(“

%>

</BODY></HTML>

Welcome3.jsp

<%@pagecontentType=”text/html;charset=GB2312″%>

<HTML><BODY>

<%response.setStatus(500);

%>

</BODY></HTML>

效果如图所示:

要想捉大鱼,不能怕水深。要想摘玫瑰,就得不怕刺。

JSP内置对象

相关文章:

你感兴趣的文章:

标签云: