第4章 JSP 内置对象

目录

前言

4.1 request 对象

4.1.1 获取用户提交的信息

4.1.2 处理汉字信息

处理汉字信息

​编辑

4.1.3 常用方法举例

4.1.4 处理HTML标记(不区分大小写)

1.form 标记(form表单)

2.input标记

3.select、option标记(下拉列表或滚动列表)

4.textArea标记

5.style样式标记

6.table标记(主要用于显示数据,不能提交数据)

7.标记

8.embed标记

9. 属性值格式的说明

4.1.5处理超链接

4.2 response 对象

4.2.1 动态响应contentType属性

4.2.2 response的HTTP文件头

4.2.3 response重定向

4.3 session对象

4.3.1 session对象的id

4.3.2 session对象与URL重写

4.3.3 session对象存储数据

4.3.4 session对象的生存期限

4.4 application对象

4.4.1 application 对象的常用方法

4.4.2 application 留言板

4.5 out对象

总结


前言

        JSP(Java Server Pages)是一种基于Java语言的服务器端技术,它允许开发人员在HTML页面中嵌入Java代码,从而实现动态网页的生成。在JSP页面中,开发人员可以使用一些特殊的对象,这些对象被称为JSP内置对象。这些内置对象包含了一些常用的信息和功能,方便开发人员进行JSP页面的开发和调试。

在JSP页面中,可以使用以下5个内置对象:

4.1 request 对象

        request对象是HttpServletRequest类的实例,它封装了客户端请求的信息。在JSP页面中,可以通过request对象获取客户端提交的表单数据、请求的URL、请求的方法等信息。request对象还可以用于向客户端发送响应。

4.1.1 获取用户提交的信息

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

        例子4_1中,example4_1.jsp通过表单向example4_1_computer.jsp提交三角形三边的长度,example4_1_computer.jsp负责计算并显示三角形的面积。

         例子4_2中,example4_2.jsp通过表单向当前页面提交购物小票,当前页面自己负责计算购物小票的价格总和。如果form表单中的action请求的页面是当前页面,可以用双引号""或单引号代替当前页面,即写成action=""action ='',注意双引号或单引号中不能含有空格。也可省略action参数,即不显式写出action参数。

<%@ page contentType="text/html" %>
<%@ page pageEncoding = "utf-8" %> 
<%@ page import="java.util.regex.Pattern" %>
<%@ page import="java.util.regex.Matcher" %>
<style>
   #tom{
      font-family:宋体;font-size:22;color:blue 
   }
</style> 
<HTML><body id ="tom" bgcolor = #ffccff>
输入购物小票内容(显示的是默认内容):
<%
   String content = "牛奶:12.68元,面包:6.6元,"
                    +"苹果:28元,香皂:6.58元";
%>
<form  action =""  method="post" id ="tom">
   <textArea  name="shopping" rows=5 cols=32 id ="tom">
      <%= content %>
   </textArea>
   <input type="submit" id ="tom" name="submit" value="提交"/>
</form>  
<%   String shoppingReceipt=request.getParameter("shopping");
     if(shoppingReceipt==null) {
        shoppingReceipt="0";
     }
     Pattern pattern;          //模式对象
     Matcher matcher;          //匹配对象
     String regex="-?[0-9][0-9]*[.]?[0-9]*" ;//匹配数字,整数或浮点数的正则表达式。
     pattern = Pattern.compile(regex); //初试化模式对象。
     matcher =
     pattern.matcher(shoppingReceipt); //matcher检索shoppingReceipt。
     double sum = 0;
     while(matcher.find()) {
       String str = matcher.group(); 
       sum += Double.parseDouble(str);
     } 
     out.print("购物小票消费总额:"+sum);
%>
</body></HTML>

 

 

        使用request对象获取当前页面提交的信息时要格外小心,在上面的例子4_2,当用户在浏览器中输入页面地址请求页面时,用户还没有机会提交数据,那么页面在执行

        String shoppingReceipt=request.getParameter("shopping");

时得到的shoppingReceipt就是空对象。如果程序使用了空对象,Java解释器就会提示出现了NullPointerException异常。因此,在上述例子2中为了避免在运行时出现NullPointerException异常,使用了如下代码:

String shoppingReceipt=request.getParameter("shopping");

if(shoppingReceipt==null) {

         shoppingReceipt="0";

}

4.1.2 处理汉字信息

        用户提交的信息中如果含有汉字字符或其他非ASCII字符的信息,就必须进行特殊的处理方式,防止出乱码现象。

处理汉字信息

1.JSP 页面文件的编码为 utf-8 编码。
2.内置对象 request 在获取信息之前调用 setCharacterEncoding 方法设置编码为 utf-8 (默认是 iso-8859-1 )就可以避免乱码现象

        例子4_3中example4_3.jsp通过表单向自己提交不同语言的问候语,内置对象request在获取信息之前调用setCharacterEncoding方法设置编码为utf-8,然后再获取数据。

<%@ page contentType="text/html" %>
<%@ page pageEncoding = "utf-8" %> 
<style>
   #tom{
      font-family:宋体;font-size:26;color:blue 
   }
</style> 
<HTML><body id="tom" bgcolor = #ffccff>
可以输入各种语言的文字,单击提交键:
<%
   String content = "早上好,Good morning,อรุณสวัสดิ์ค่ะ(泰语),"+
                  " おはよう,Доброе утро,좋은 아침";
%>
<form  action="" method='post' >
   <textArea  name="language" id="tom" rows=3 cols=50>
      <%= content %>
   </textArea>
   <input type="submit" id="tom" name="submit" value="提交"/>
</form>  
<%   request.setCharacterEncoding("utf-8");
     String variousLanguages=request.getParameter("language");
     out.print(variousLanguages);
%>
</p></body></HTML>

 

4.1.3 常用方法举例

requestgetParameter方法获取form表单提交的有关信息但实际上,request对象调用相关方法可以获取请求的许多细节信息。内置对象request常用方法如下:

1) String getProtocol()  获取用户向服务器提交信息所使用的通信协议,比如http/1.1等。

2) String getServletPath()  获取用户请求的JSP页面文的名字(带目录符号\,例如\hello.jsp)。

3) String getContextPath() 获取用户请求的当前Web服务目录(例如ch4)。

4) int getContentLength()  获取用户提交的整个信息的长度。

5) String getMethod()  获取用户提交信息的方式,比如:postget.

6) String getRemoteAddr()  获取用户的IP地址。

7) String getRemoteHost()  获取用户机的名称(如果获取不到,就获取IP地址)。

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

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

 

4.1.4 处理HTML标记(不区分大小写)

1form 标记(form表单)

<form  action= "请求访问的页面或servlet"  method = get | post  >

    各种提交手段

    提交键

</form>

例如:

<form action="tom.jsp" method="post" >
     <input type="text" name="boy" value= "ok" /> 
     <input type="submit" name="submit" value="提交"/>
</form> 

 form表单标记经常将下列标记作为form表单的子标记,以便提供提交数据的手段,这些标记都以GUI形式出现,方便用户输入或选择数据,比如,文本框、下拉列表、滚动列表等。

<input …../>
<select   …   ></select>
<option …..>  </option>
<textArea ….> </textArea>

 

 

2input标记

<input type="GUI对象" name= "GUI对象的名子" value="GUI中的默认值"/>

Tom服务器的内置对象request通过name指定的名字来获取GUI对象中提交的数据. 

3selectoption标记(下拉列表或滚动列表)

Tom服务器的内置对象request通过name指定的名字来获取GUI对象中提交的数据.

<select  name="myName">
  <option  value="item1">文本描述</option>
  <option  value="item2">文本描述</option>
   … …
</select>

例子6中用户通过下拉列表为当前页面选择一首音乐、通过滚动列表为当前页面选择一幅图像。 

<%@ page contentType="text/html" %>
<%@ page pageEncoding = "utf-8" %>
<style>
   #tom{
      font-family:宋体;font-size:26;color:blue 
   }
</style> 
<%   String music = request.getParameter("music");
     String pic = request.getParameter("pic");
     String onOrOff=request.getParameter("R"); 
     if(music==null) music = "";
     if(pic==null)   pic = "";
     if(onOrOff==null) onOrOff = "off";
%>
<HTML><body id=tom background="image/<%= pic %>" >
<form action=""  method=post >
   <b>选择音乐:<br>
   <select id=tom name="music" >
      <Option selected value="back1.mp3">绿岛小夜曲
      <Option value="back2.mp3">我是一片云</option>
      <Option value="back3.mp3">红河谷</option>
   </select> 
   <input type="radio" name="R" value="on" />打开 
   <input type="radio" name="R" value="off" />关闭 
   <br><b>选择背景图像:<br>
   <select id=tom name="pic" size = 2>
      <option value="back1.jpg">荷花图</option>
      <option value="back2.jpg">玫瑰图</option>
      <option value="back3.jpg">校园图</option>
   </select> <br> 
   <input id=tom type="submit"  name="submit" value="提交"/>
</form> 
<%   if(onOrOff.equals("on")) {
%>       <br><embed src="sound/<%= music %>" height=50 />
<%   } 
%>
</body></HTML> 

 

 

 

4textArea标记

Tom服务器的内置对象request通过name指定的名字来获取GUI对象中提交的数据.

<textArea  name="名字"  rows= "文本可见行数"  cols= "文本可见列数" >
  提交或显示的数据
</textArea>

 

5style样式标记

style标记可用于定义HTML其他标记中的字体样式,如,style标记给出样式:

<style>
   #textStyle{
      font-family:宋体;font-size:18;color:blue 
   }
   #tom{
      font-family:黑体;font-size:16;color:black 
   }
</style>

 

6table标记(主要用于显示数据,不能提交数据)

<table  border ="边框的宽度">
    <tr  width="该行的宽度">
        <th  width="单元格的宽度" >单元格中的数据</th>
         …
        <td  width= "单元格的宽度" >单元格中的数据</td> …
    </tr>
… ….
</table>

7<image>标记

不能用于提交数据,用于显示图像。

<image  src="图像文件的URL" >描述文字</image> 

8embed标记

不能用于提交数据。使用embed标记可以播放音乐和视频,当浏览器执行该标记时,会把浏览器所在机器上的默认播放器嵌入到浏览器中,以便播放音乐或视频文件。embed标记的基本格式为:

<embed  src="音乐或视频文件的URL" >描述文字</embed > 
或
<embed  src="音乐或视频文件的URL" /> 

 

9. 属性值格式的说明

许多HTML标记的中都有属性,并指定属性的值,例如:

<input type="text" name="testAmount" value=10 />

中的typename value都是input标记的属性,

属性值可以用 双引号括起
也可以用 单引号括起 ,
或者 不用任何符号 .

     比如type属性的值可以用双引号括起"text",也可以用单引号括起'text'或者不用任何符号text,一个好的习惯是用单引号括起

例如,下列超链接标记中的href的属性值用单引号括起。

<a href = ’example4_1.jsp’>超链接</a>

 

4.1.5处理超链接

超链接标记

<a href=链接的页面地址 >文字说明</a>

是一个常用标记。例如:

<a href ="example4_9_receive.jsp>购买</a>

用户单击超链接标记的文字说明,可以访问超链接给出的链接页面。

例子4_9example4_9.jsp用超链接向example4_9_receive.jsp传递商品的编号和价格。

 

 

4.2 response 对象

request对象相对应的对象是response对象。可以用response对象对用户的请求作出动态响应,向用户端发送数据。

 

4.2.1 动态响应contentType属性

页面用page指令设置页面的contentType属性的值,那么Tomcat服务器将按着这种属性值作出响应,将页面的静态部分返回给用户,用户浏览器接收到该响应就会使用相应的手段处理所收到的信息。

page指令只能为contentType指定一个值来决定响应的MIME类型,如果想动态的改变这个属性的值来响应用户,就需要使用response对象的setContentType(String s)方法来改变contentType的属性值

当用setContentType(String s)方法动态改变了contentType的属性值,即响应的MIME类型,Tomcat服务器就会按着新的MIME类型将JSP页面的输出结果返回给用户。

4.2.2 responseHTTP文件头

response对象可以使用方法

addHeader(String  head,String value);

setHeader(String head ,String value);

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

4.2.3 response重定向

responsesendRedirect(URL url)方法实现用户的重定向,即让用户从一个页面跳转到sendRedirect(URL: url)url指定的页面。

当使用sendRedirect(URL url)方法将用户从当前页面重定向另一个页面时,Tomcat服务器还是要把当前JSP页面执行完毕后才实施重定向(跳转)操作,但Tomcat服务器不再给用户看当前页面的执行效果。

在执行sendRedirect(URL url)方法后,紧接着执行了return返回语句,那么Tomcat服务器会立刻结束当前JSP页面的执行。

4.3 session对象

HTTP协议是一种无状态协议。一个用户向服务器发出请求(request),然后服务器返回响应(response),在服务器端不保留用户的有关信息,因此当下一次发出请求时,服务器无法判断这一次请求和以前的请求是否属于同一用户。

4.3.1 session对象的id

当一个用户首次访问web服务目录中的一个JSP页面时,Tomcat服务器产生一个session对象,这个session对象调用相应的方法可以存储用户在访问该web服务目录中各个页面期间提交的各种信息。

■这个session对象被分配了一个String类型的id号,Tomcat服务器同时将这个id号发送到用户端,存放在用户(浏览器)的Cookie中。这样,session对象和用户之间就建立起一一对应的关系,即每个用户都对应着一个session对象(称作用户的会话),不同用户(不同浏览器)的session对象互不相同,具有不同的id号码。

■当用户再访问该Web服务目录的其它页面时,Tomcat服务器不再分配给用户的新session对象,而是使用完全相同的一个,直到session对象达到了最大生存时间或用户关闭自己的浏览器或Tomcat服务器关闭,Tomcat服务器将销毁用户的session对象

★简单地说,用户(浏览器)在访问一个Web服务目录期间,服务器为该用户分配一个session对象(称作和该用户的会话),服务器可以在各个页面使用这个session记录当前用户的有关信息。而且服务器保证不同用户的session对象互不相同。

--- 同一个用户在不同的Web服务目录中的session是互不相同的

4.3.2 session对象与URL重写

session对象能和用户建立起一一对应关系依赖于用户浏览器是否支持Cookie

如果用户不支持CookieJSP页面可以通过URL重写来实现session对象的唯一性

String str=response.encodeRedirectURL("example4_13_b.jsp");

然后将连接目标写成<%= str %>

 

4.3.3 session对象存储数据

1public void setAttribute (String  key ,Object  obj)session对象可以调用该方法将参数Object指定的对象obj添加到session对象中,并为添加的对象指定了一个索引关键字,如果添加的两个对象的关键字相同,则先前添加的对象被清除。

2public Object getAttribute(String key)。获取session对象索引关键字是key的对象。由于任何对象都可以添加到session对象中,因此用该方法取回对象时,应显式转化为原来的类型

例子14实现猜数字游戏。当用户访问example4_14.jsp时,随机分配给用户一个1100之间的整数,然后将这个整数存在用户的session对象中。用户在form表单的text里输入自己的猜测。用户输入猜测后单击提交键,访问example4_14_judge.jsp页面,该页面负责判断用户给出的猜测是否和用户的session对象中存放的那个整数相同,如果相同就将用户定向到example4_14_success.jsp,如果不相同就就将用户定向到example4_14_large.jspexample4_14_small.jsp,然后,用户在这些页面再重新提交新的猜测给example4_14_judge.jsp页面。

 

 

 

 

 

4.3.4 session对象的生存期限

session对象的生存期限依赖于session对象是否调用invalidate()方法使得session无效或session对象达到了设置的最长的“发呆”状态时间以及用户是否关闭浏览器或服务器被关闭。

▲所谓“发呆”状态时间是指用户对某个Web服务目录发出的两次请求之间的间隔时间(默认的发呆时间是30分钟)。

▲打开Tomcat安装目录中conf文件下的配置文件web.xml,找到

<session-config>

        <session-timeout>30</session-timeout>

 </session-config>

将其中的30修改成所要求的值即可(单位为分钟)

4.4 application对象

4.3节学习了session对象,用户第一次访问Web服务目录时,Tomcat服务器创建和该用户相对应的session对象,当用户在所访问的Web服务目录的各个页面之间浏览时,这个session对象都是同一个,而且不同用户的session对象是互不相同的。本节学习的application对象也是由Tomcat服务器负责创建,但与session对象不同的是,application对象被访问该Web服务目录的所有的用户共享,但不同Web服务目录下的application互不相同

4.4.1 application 对象的常用方法

1public void setAttribute(String  key ,Object  obj)application对象可以调用该方法将参数Object 指定的对象 obj添加到application对象中,并为添加的对象指定了一个索引关键字,如果添加的两个对象的关键字相同,则先前添加对象被清除。

2public Object getAttibute(String key)。获取application对象含有的关键字是key的对象。由于任何对象都可以添加到application对象中,因此用该方法取回对象时,应显式转化为原来的类型。

4.4.2 application 留言板

例子16是为了练习使用application内置对象,让其担当留言板的角色,并设置留言板上最多可留言99999条。

用户通过example4_16.jspexample4_16_pane.jsp提交姓名、留言标题和留言内容,example4_16_pane.jsp页面用application存放这些内容,查找这些内容所使用的关键字是199999之间的某个整数。

当留言数目超过99999时,提示用户无法再留言。

example4_16_show.jsp负责显示全部留言。

example4_16_delete.jsp页面负责删除留言(删除留言时需要输入密码123456,这个密码可以只让管理者知道)

 

 

 

 

4.5 out对象

out对象是一个输出流,用来向用户端输出数据。在前面的许多例子里曾多次使用out对象进行数据的输出。out对象可调用如下的方法用于各种数据的输出

例如

out.print(boolean)out.println(boolean) 用于输出一个布尔值。

out.print(char) out.println(char) 输出一个字符。

out.print(double) out.println(double)输出一个双精度的浮点数。

out.print(fload) out.println(float)用于输出一个单精度的浮点数。

out.print(long) out.println(long)输出一个长整型数据。

out.print(String) out.println(String)输出一个String对象的字符序列。

方法printlnprint的区别是:println会向缓存区写入一个换行,而print不写入换行。但是浏览器的显示区域目前不识别println写入的换行,如果希望浏览器显示换行,应当向浏览器写入"<br>"实现换行

总结

        以上就是JSP页面中常用的5个内置对象。这些内置对象提供了丰富的功能,方便开发人员进行JSP页面的开发和调试。在JSP页面中,开发人员可以根据需要选择合适的内置对象,完成复杂的Web应用程序开发。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值