欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

JSP网页编程初解(三)

程序员文章站 2023-01-29 16:56:02
6、jsp内置对象        为了方便、有效地开发web应用程序,jsp提供了一系列内置对象。这些对象不需要预先声明,而是由jsp容器...

6、jsp内置对象

       为了方便、有效地开发web应用程序,jsp提供了一系列内置对象。这些对象不需要预先声明,而是由jsp容器自动定义。这些内置对象在jsp网页环境下可以直接使用。

       1)、out对象

       out内置对象主要用于将数据输出到客户端的网页,该对象是通过引用javax.servlet.jspwriter对象来实现的。out内置对象提供了一些用来控制输出的方法。

方法
 说明
 
clear()
 清除缓冲区的数据
 
clearbuffer()
 清除当前缓冲区的数据
 
flush()
 输出缓冲区中的数据
 
getbuffersize()
 返回缓冲区的大小
 
getremaining()
 返回缓冲区中剩余空间的大小
 
isautoflush()
 返回一个布尔值,如果autoflush为真,则返回true,否则返回false
 
newline()
 输出换行
 
print(string s)
 输出数据
 
println(string s)
 输出数据并自动换行
 

       表中的方法可以分为两类:一类是用于控制缓冲区的行为,缓冲区是jsp将数据输出至浏览器之前用来暂时存储数据的一个区域;另一类则是数据的输出操作。下面是一个关于out内置对象的实例:


[html] 
<%@pagecontenttype="text/html" pageencoding="gb2312"%> 
    <html> 
        <head> 
            <metahttp-equivmetahttp-equiv="content-type" content="text/html;charset=gb2312"/> 
            <title>jsp page</title> 
        </head> 
        <body> 
            <% 
            out.println("这是一个jsp网页<br>"); 
            out.clearbuffer(); 
            out.println("欢迎你访问<br>"); 
            out.flush(); 
            out.println("日期<br>"); 
            out.println(new java.util.date().tolocalestring()+ "<br>"); 
            out.println("剩余缓冲区大小" +out.getremaining() + "<br>"); 
            out.println("缓冲区大小" +out.getbuffersize() + "<br>"); 
            out.println("autoflush" +out.isautoflush()); 
            %> 
        </body> 
    </html> 

<%@pagecontenttype="text/html" pageencoding="gb2312"%>
    <html>
        <head>
            <metahttp-equiv="content-type" content="text/html;charset=gb2312"/>
            <title>jsp page</title>
        </head>
        <body>
            <%
            out.println("这是一个jsp网页<br>");
            out.clearbuffer();
            out.println("欢迎你访问<br>");
            out.flush();
            out.println("日期<br>");
            out.println(new java.util.date().tolocalestring()+ "<br>");
            out.println("剩余缓冲区大小" +out.getremaining() + "<br>");
            out.println("缓冲区大小" +out.getbuffersize() + "<br>");
            out.println("autoflush" +out.isautoflush());
            %>
        </body>
    </html>


       2)、request对象

       request对象的主要作用是当客户端发出一个请求时,它封装了用户所提交的信息,然后通过调用该对象相应的方法来获取封装的信息。request内置对象提供了一些方法如下表:

方法
 说明
 
getparameter(string name)
 返回请求参数的值,如果参数不存在则返回null
 
getparametervalues(string name)
 返回请求参数的所有值
 
getparameternames()
 返回所有参数的名称,其结果为枚举对象
 
getprotocol()
 返回通信协议的协议名称
 
getremoteaddr()
 返回客户端的ip地址
 
getremotehost()
 返回客户端的名字
 
getscheme()
 返回发出请求的方式,如http、ftp、telnet
 
getservername()
 返回服务器的名字
 
getserverport()
 返回服务器主机的端口号
 
getmethod()
 返回传送数据的方式
 
getquerystring()
 返回网址栏后的查询字符串
 
getrquesturi()
 返回请求的uri字符串,不包括网址栏后的查询字符串
 
getpathinfo()
 返回任何额外的路径信息
 
getservletpath()
 返回客户端请求的文件的路径
 
getheaders(string name)
 返回已命名的所有报头的值的集合
 
getheader(string name)
 返回已命名的报头的值
 
getheadernames()
 返回已命名的所有报头的名称的集合
 
getattribute(string name)
 返回已命名的属性的值,如果给定名称的任何属性都不存在,则返回null
 
getattributenames()
 返回所有属性的名称集合,其结果类型为枚举类型
 
removeattibute(string name)
 删除请求中的一个属性
 
setattribute(string name , object)
 存储请求中的一个属性
 
getcharacterencoding()
 返回请求的字符编码方式
 
getcontentlength()
 返回请求内容的大小
 

       下面是一个关于request对象的实例:

test01.jsp:


[html
<%@ pagelanguage="java" contenttype="text/html; charset=utf-8" 
       pageencoding="utf-8"%> 
  
<html> 
<head> 
<metahttp-equivmetahttp-equiv="content-type"content="text/html;charset=utf-8"> 
<title>使用request对象</title> 
</head> 
<body> 
       <% request.setcharacterencoding("utf-8"); %> 
       <% 
       string name = request.getparameter("name"); //获取用户姓名 
       string tel = request.getparameter("tel"); //获取电话 
       string qq = request.getparameter("qq"); //获取qq 
       %> 
       姓名:<%=name %> <br> 
       电话:<%=tel %> <br> 
       qq :<%=qq %> <br> 
       <h3>阿斯顿发送到</h3> 
       <% 
       //获取request内置对象的属性 
       out.println("协议名称:"); 
       out.println(request.getrequesturi() + "<br>"); 
       out.println("请求的方式:"); 
       out.println(request.getmethod() + "<br>"); 
       out.println("客户端地址:"); 
       out.println(request.getremoteaddr() + "<br>"); 
       out.println("客户端名称:"); 
       out.println(request.getremotehost() + "<br>"); 
       out.println("返回参数值:"); 
       out.println(request.getparameter(name) +"<br>"); 
       out.println("字符的编码方式:"); 
       out.println(request.getcharacterencoding() +"<br>"); 
       out.println("内容的大小:"); 
       out.println(request.getcontentlength() +"<br>"); 
       out.println("服务器名称:"); 
       out.println(request.getservername() + "<br>"); 
       out.println("服务器端口号:"); 
       out.println(request.getserverport() + "<br>"); 
       out.println("文件的路径:"); 
       out.println(request.getservletpath() +"<br>"); 
       out.println("uri字符串:"); 
       out.println(request.getrequesturi() + "<br>"); 
       out.println("网址栏后的字符串:"); 
       out.println(request.getquerystring() +"<br>"); 
       out.println("发出请求的方式:"); 
       out.println(request.getscheme() + "<br>"); 
       out.println("uri字符串:"); 
       out.println(request.getrequesturl() + "<br>"); 
       %> 
</body> 
</html> 

<%@ pagelanguage="java" contenttype="text/html; charset=utf-8"
       pageencoding="utf-8"%>
 
<html>
<head>
<metahttp-equiv="content-type"content="text/html;charset=utf-8">
<title>使用request对象</title>
</head>
<body>
       <% request.setcharacterencoding("utf-8"); %>
       <%
       string name = request.getparameter("name"); //获取用户姓名
       string tel = request.getparameter("tel"); //获取电话
       string qq = request.getparameter("qq"); //获取qq
       %>
       姓名:<%=name %> <br>
       电话:<%=tel %> <br>
       qq :<%=qq %> <br>
       <h3>阿斯顿发送到</h3>
       <%
       //获取request内置对象的属性
       out.println("协议名称:");
       out.println(request.getrequesturi() + "<br>");
       out.println("请求的方式:");
       out.println(request.getmethod() + "<br>");
       out.println("客户端地址:");
       out.println(request.getremoteaddr() + "<br>");
       out.println("客户端名称:");
       out.println(request.getremotehost() + "<br>");
       out.println("返回参数值:");
       out.println(request.getparameter(name) +"<br>");
       out.println("字符的编码方式:");
       out.println(request.getcharacterencoding() +"<br>");
       out.println("内容的大小:");
       out.println(request.getcontentlength() +"<br>");
       out.println("服务器名称:");
       out.println(request.getservername() + "<br>");
       out.println("服务器端口号:");
       out.println(request.getserverport() + "<br>");
       out.println("文件的路径:");
       out.println(request.getservletpath() +"<br>");
       out.println("uri字符串:");
       out.println(request.getrequesturi() + "<br>");
       out.println("网址栏后的字符串:");
       out.println(request.getquerystring() +"<br>");
       out.println("发出请求的方式:");
       out.println(request.getscheme() + "<br>");
       out.println("uri字符串:");
       out.println(request.getrequesturl() + "<br>");
       %>
</body>
</html>


htmltest01.html:


[html] 
<%@contenttype="text/html charset=utf-8" %> 
<html> 
<head> 
<metahttp-equivmetahttp-equiv="content-type" content="text/html;charset=utf-8"> 
<title>注册</title> 
</head> 
<body> 
       <form action="jsptest01.jsp"name="myform" method="post"> 
              姓名:<input type="text" name="name"><br> 
              电话:<input type="text" name="tel"> <br> 
              qq :<input type="text"name="qq"> 
                     <input type="submit" value="确定"> 
       </form> 
</body> 
</html> 

<%@contenttype="text/html charset=utf-8" %>
<html>
<head>
<metahttp-equiv="content-type" content="text/html;charset=utf-8">
<title>注册</title>
</head>
<body>
       <form action="jsptest01.jsp"name="myform" method="post">
              姓名:<input type="text" name="name"><br>
              电话:<input type="text" name="tel"> <br>
              qq :<input type="text"name="qq">
                     <input type="submit" value="确定">
       </form>
</body>
</html>


request对象的主要作用是当客户端发出一个请求时,它封装了用户所提交的信息,然后他通过调用该对象相应的方法来获取封装的信息。

       3)、response对象

       response对象的主要作用是当服务器返回一个信息时,它封装了所返回的信息,然后将其送到客户端以相应客户的请求。response是httpservletresponse类的对象。response内置对象提供了一些方法如下表所示:

方法
 说明
 
flushbuffer()
 强制将缓冲区中的内容发送给客户
 
getbuffersize()
 返回缓冲区的大小
 
setbuffersize()
 设置缓冲区的大小
 
iscommitted()
 表示数据是否提交
 
rest()
 清除缓冲区中的数据
 
getcharacterencoding()
 返回文件的编码方式
 
setcontenttype()
 设置网页文件的格式和编码的方式
 
senderror()
 向客户发送错误信息
 
setstatus()
 设置response对象的状态,告诉浏览器如何处理服务器发来的信息
 
containsheader(string name)
 返回布尔值表示名称为name的标头是否存在
 
setdateheader(string name , log date)
 设置一个给定名称和日期的响应报头,如果该值已经存在,则新值会覆盖原有的值
 
setheader(string name , string value)
 设置一个给定名称和值的响应报头,如果该值已经存在,则新值会覆盖原有的值
 
setintheader(string name , string value)
 设置一个给定名称和整数值的响应报头,如果该值已经存在,则新值会覆盖原有的值
 
addheader(string name , string value)
 增加一个给定名称和值的响应报头
 
adddateheader(string name , long date)
 增加一个给定名称和日期的响应报头
 
addintheader(string name , int value)
 增加一个给定名称和整数值的响应报头
 
sendredirect(“pageurl”)
 重新定向网页
 

       下面是一个关于response对象的实例:

htmltest.html:


[html]
<%@ contenttype="text/htmlcharset=utf-8" %> 
<html> 
<head> 
<metahttp-equivmetahttp-equiv="content-type" content="text/html;charset=utf-8"> 
<title>注册</title> 
</head> 
<body> 
       <form action="jsptest01.jsp"name="myform" method="post"> 
              <input type="radio" name="using"value="a">网页刷新 <br> 
              <input type="radio" name="using"value="b">操作缓冲区 <br> 
              <input type="submit" value="确定" > 
       </form> 
</body> 
</html> 

<%@ contenttype="text/htmlcharset=utf-8" %>
<html>
<head>
<metahttp-equiv="content-type" content="text/html;charset=utf-8">
<title>注册</title>
</head>
<body>
       <form action="jsptest01.jsp"name="myform" method="post">
              <input type="radio" name="using"value="a">网页刷新 <br>
              <input type="radio" name="using"value="b">操作缓冲区 <br>
              <input type="submit" value="确定" >
       </form>
</body>
</html>


jsptest01.jsp:


[html] 
<%@ pagelanguage="java" contenttype="text/html; charset=utf-8" 
       pageencoding="utf-8"%> 
  
<html> 
<head> 
<metahttp-equivmetahttp-equiv="content-type"content="text/html;charset=utf-8"> 
<title>使用request对象</title> 
</head> 
<body> 
       <% request.setcharacterencoding("utf-8"); %> 
       <% 
       string using = request.getparameter("using");//获取用户名 
       if(using.equals("a")) 
              response.sendredirect("show1.jsp");//若选a,则跳转到show1.jsp 
       else if(using.equals("b")) 
              response.sendredirect("show2.jsp");//若选b,则跳转到show2.jsp          
       %> 
</body> 
</html> 

<%@ pagelanguage="java" contenttype="text/html; charset=utf-8"
       pageencoding="utf-8"%>
 
<html>
<head>
<metahttp-equiv="content-type"content="text/html;charset=utf-8">
<title>使用request对象</title>
</head>
<body>
       <% request.setcharacterencoding("utf-8"); %>
       <%
       string using = request.getparameter("using");//获取用户名
       if(using.equals("a"))
              response.sendredirect("show1.jsp");//若选a,则跳转到show1.jsp
       else if(using.equals("b"))
              response.sendredirect("show2.jsp");//若选b,则跳转到show2.jsp        
       %>
</body>
</html>


show1.jsp:


[html] 
<%@ pagelanguage="java" contenttype="text/html; charset=utf-8" 
    pageencoding="utf-8"%> 
<!doctype html public"-//w3c//dtd html 4.01 transitional//en""https://www.w3.org/tr/html4/loose.dtd"> 
<html> 
<head> 
<metahttp-equivmetahttp-equiv="content-type" content="text/html;charset=utf-8"> 
<title>show1</title> 
</head> 
<body> 
       <%! int c = 0 ; %> 
       <% 
       if(c == 3) c = 0; 
       response.setheader("refresh", "2"); 
       c++; 
       %> 
       <img src="<%=c%>.png"><br>  
</body> 
</html> 

<%@ pagelanguage="java" contenttype="text/html; charset=utf-8"
    pageencoding="utf-8"%>
<!doctype html public"-//w3c//dtd html 4.01 transitional//en""https://www.w3.org/tr/html4/loose.dtd">
<html>
<head>
<metahttp-equiv="content-type" content="text/html;charset=utf-8">
<title>show1</title>
</head>
<body>
       <%! int c = 0 ; %>
       <%
       if(c == 3) c = 0;
       response.setheader("refresh", "2");
       c++;
       %>
       <img src="<%=c%>.png"><br>
</body>
</html>


show2.jsp:


[html
<%@ pagelanguage="java" contenttype="text/html; charset=utf-8" 
    pageencoding="utf-8"%> 
<!doctype html public "-//w3c//dtdhtml 4.01 transitional//en""https://www.w3.org/tr/html4/loose.dtd"> 
<html> 
<head> 
<metahttp-equivmetahttp-equiv="content-type" content="text/html;charset=utf-8"> 
<title>show2</title> 
</head> 
<body> 
       <% 
       out.println("缓冲区大小:"); 
       out.println(response.getbuffersize() +"<br>"); 
       out.println("是否写出缓冲区的数据:"); 
       out.println(request.issecure() + "<br>"); 
       %> 
</body> 
</html> 

<%@ pagelanguage="java" contenttype="text/html; charset=utf-8"
    pageencoding="utf-8"%>
<!doctype html public "-//w3c//dtdhtml 4.01 transitional//en""https://www.w3.org/tr/html4/loose.dtd">
<html>
<head>
<metahttp-equiv="content-type" content="text/html;charset=utf-8">
<title>show2</title>
</head>
<body>
       <%
       out.println("缓冲区大小:");
       out.println(response.getbuffersize() +"<br>");
       out.println("是否写出缓冲区的数据:");
       out.println(request.issecure() + "<br>");
       %>
</body>
</html>


       4)、session对象

       session对象是由javax.servlet.http.httpsession接口衍生而来的,该内建对象封装了属于客户会话的所有信息。session存在于服务器端,当用户向服务器请求页面时,若该页面有关于session的程序代码,那么session对象便产生。他用来存放该用户的信息。下面是session的一些常用方法:

方法
 说明
 
setattribute(string name , object value)
 将一个指定的名称存储在session对象中
 
getattribute(string name)
 返回与指定参数相关的属性
 
getattributenames()
 返回该session对象中所有属性的名称,其结果为枚举类型
 
removeattribute(name)
 删除与name相关的session
 
getcreationtime()
 返回session建立的时间,单位为毫秒
 
getid()
 返回一个关于session的id号
 
getlastaccessedtime()
 返回客户端向服务器发出请求的最后时间
 
getmaxinactiveinterval()
 返回一个会话两个请求的最大时间间隔,单位为秒
 
isnew()
 返回一个布尔值表示是否为新建的session
 
invalidate()
 撤销一个session对象
 

       下面的实例使用session对象将客户的信息或服务器的信息存储,在需要的时候可以提取出来:

htmltest.html:


[html]
<%@contenttype="text/html charset=utf-8" %> 
<html> 
<head> 
<metahttp-equivmetahttp-equiv="content-type" content="text/html;charset=utf-8"> 
<title>注册</title> 
</head> 
<body> 
       <form action="jsptest01.jsp"name="myform" method="post"> 
              <input type="radio" name="using"value="a">数据访问 <br> 
              <input type="radio" name="using"value="b">内建对象 <br> 
              <input type="submit" value="确定" > 
       </form> 
</body> 
</html> 

<%@contenttype="text/html charset=utf-8" %>
<html>
<head>
<metahttp-equiv="content-type" content="text/html;charset=utf-8">
<title>注册</title>
</head>
<body>
       <form action="jsptest01.jsp"name="myform" method="post">
              <input type="radio" name="using"value="a">数据访问 <br>
              <input type="radio" name="using"value="b">内建对象 <br>
              <input type="submit" value="确定" >
       </form>
</body>
</html>


jsptest01.jsp:


[html]
<%@ pagelanguage="java" contenttype="text/html; charset=utf-8" 
       pageencoding="utf-8"%> 
  
<html> 
<head> 
<metahttp-equivmetahttp-equiv="content-type"content="text/html;charset=utf-8"> 
<title>使用request对象</title> 
</head> 
<body> 
       <% request.setcharacterencoding("utf-8"); %> 
       <% 
       string using = request.getparameter("using");//获取用户名 
       if(using.equals("a")) 
              response.sendredirect("show1.jsp");//若选a,则跳转到show1.jsp 
       else if(using.equals("b")) 
              response.sendredirect("show2.jsp");//若选b,则跳转到show2.jsp          
       %> 
</body> 
</html> 

<%@ pagelanguage="java" contenttype="text/html; charset=utf-8"
       pageencoding="utf-8"%>
 
<html>
<head>
<metahttp-equiv="content-type"content="text/html;charset=utf-8">
<title>使用request对象</title>
</head>
<body>
       <% request.setcharacterencoding("utf-8"); %>
       <%
       string using = request.getparameter("using");//获取用户名
       if(using.equals("a"))
              response.sendredirect("show1.jsp");//若选a,则跳转到show1.jsp
       else if(using.equals("b"))
              response.sendredirect("show2.jsp");//若选b,则跳转到show2.jsp        
       %>
</body>
</html>


show1.jsp:


[html]
<%@ pagelanguage="java" contenttype="text/html; charset=utf-8" 
    pageencoding="utf-8"%> 
<!doctype html public"-//w3c//dtd html 4.01 transitional//en""https://www.w3.org/tr/html4/loose.dtd"> 
<html> 
<head> 
<metahttp-equivmetahttp-equiv="content-type" content="text/html;charset=utf-8"> 
<title>show1</title> 
</head> 
<body> 
       <% 
       session.setattribute("name", "小武"); 
       session.setattribute("number","41009160"); 
       session.setattribute("class", "地信1班"); 
       %> 
       <% 
       out.println("姓名:"); 
       out.println(session.getattribute("name") +"<br>"); 
       out.println("学号:"); 
       out.println(session.getattribute("number") +"<br>"); 
       out.println("班级"); 
       out.println(session.getattribute("class") +"<br>"); 
       %> 
</body> 
</html> 

<%@ pagelanguage="java" contenttype="text/html; charset=utf-8"
    pageencoding="utf-8"%>
<!doctype html public"-//w3c//dtd html 4.01 transitional//en""https://www.w3.org/tr/html4/loose.dtd">
<html>
<head>
<metahttp-equiv="content-type" content="text/html;charset=utf-8">
<title>show1</title>
</head>
<body>
       <%
       session.setattribute("name", "小武");
       session.setattribute("number","41009160");
       session.setattribute("class", "地信1班");
       %>
       <%
       out.println("姓名:");
       out.println(session.getattribute("name") +"<br>");
       out.println("学号:");
       out.println(session.getattribute("number") +"<br>");
       out.println("班级");
       out.println(session.getattribute("class") +"<br>");
       %>
</body>
</html>


show2.jsp:


[html] 
<%@pageimport="java.sql.date"%> 
<%@ pagelanguage="java" contenttype="text/html; charset=utf-8" 
    pageencoding="utf-8"%> 
<!doctype html public"-//w3c//dtd html 4.01 transitional//en""https://www.w3.org/tr/html4/loose.dtd"> 
<html> 
<head> 
<metahttp-equivmetahttp-equiv="content-type" content="text/html;charset=utf-8"> 
<title>show2</title> 
</head> 
<body> 
       <% 
       out.println("session建立的时间"); 
       out.println(new date((long)session.getcreationtime()) +"<br>"); 
       out.println("session的id号"); 
       out.println(session.getid() + "<br>"); 
       out.println("session最后被请求的时间"); 
       out.println(session.getlastaccessedtime() +"<br>"); 
       out.println("session最大时间间隔"); 
       out.println(session.getmaxinactiveinterval() +"<br>"); 
       out.println("session是否新建"); 
       out.println(session.isnew() + "<br>"); 
       %> 
</body> 
</html> 

<%@pageimport="java.sql.date"%>
<%@ pagelanguage="java" contenttype="text/html; charset=utf-8"
    pageencoding="utf-8"%>
<!doctype html public"-//w3c//dtd html 4.01 transitional//en""https://www.w3.org/tr/html4/loose.dtd">
<html>
<head>
<metahttp-equiv="content-type" content="text/html;charset=utf-8">
<title>show2</title>
</head>
<body>
       <%
       out.println("session建立的时间");
       out.println(new date((long)session.getcreationtime()) +"<br>");
       out.println("session的id号");
       out.println(session.getid() + "<br>");
       out.println("session最后被请求的时间");
       out.println(session.getlastaccessedtime() +"<br>");
       out.println("session最大时间间隔");
       out.println(session.getmaxinactiveinterval() +"<br>");
       out.println("session是否新建");
       out.println(session.isnew() + "<br>");
       %>
</body>
</html>


       session对象是由javax.servlet.http.httpsession接口衍生而来的,该内建对象封装了属于客户会话的所有信息