当前位置:文档之家› 第三章:JSP内置对象 (request对象、response对象session对象、application对象、cookie)

第三章:JSP内置对象 (request对象、response对象session对象、application对象、cookie)

第三章:JSP内置对象   (request对象、response对象session对象、application对象、cookie)
第三章:JSP内置对象   (request对象、response对象session对象、application对象、cookie)

第三章:Jsp隐式对象

(request对象、response对象session对象、application对象、cookie)

Jsp隐式对象概述:

由JSP规范提供,不用编写者实例化。

通过Web容器实现和管理。

所有JSP页面均可使用。

只有在脚本元素的表达式或代码段中才可使用(<%=使用内置对象%>或<%使用内置对象%>)。

常用九大内置对象的作用和方法

1、out对象:代表提供输出流的访问。

2、request对象:request对象是从客户端向服务器端发出请求,包括用户提交的信息以及客户端的一些信息。

常用方法:getparameter()getParameterValues()setAttribute() getAttribute()

3、response对象:允许直接访问HttpServletResponse对象

常用方法:sendRedirect()

4、session对象:允许直接访问HttpServletResponse对象

常用方法:setAttribute()、getAttribute()

5、application对象:用于多个程序或者多个用户之间共享数据。

常用方法:setAttribute()、getAttribute()

6、config :将初始化数据传递给一个JSP页面

7、page :代表JSP页面对应的Servlet类实例

8、exception:针对错误网页,未捕捉的例外

9、pageContext :管理网页的属性

内置对象的作用域:

◆application:服务器启动到停止这段时间

◆session:HTTP会话开始到结束这段时间

◆request:HTTP请求开始到结束这段时间

◆page:当前页面从打开到关闭这段时间

对于每一个用户都共享同一个对象的是:application对象,而每个用户分别使用不同对象实例的是:session对象

forword和sendRedirect的区别:

forword仅是容器中控制权的转向,在客户端浏览器地址栏中不会显示出转向后的地址;sendRedirect则是完全的跳转,浏览器将会得到跳转的地址,并重新发送请求链接

getParameter(String name);

例题一:

文件名:input.html

< body bgcolor="white">

文件名:requestDemo1.jsp:

<%@ page contentType="text/html;charset=GB2312" %>

获取文本框提交的信息:

<%String strContent=request.getParameter("boy");

%>

<%=strContent%> // 输出文本框boy提交的信息

获取按钮的名字:

<%String strButtonName=request.getParameter("submit");

%>

<%=strButtonName%> // 输出按钮的value名字

例题二:

设计一个简单的“JSP程序设计网上测试系统”,如下图所示。要求提交

后能够对特定的测试者的操作进行计分,如图所示。

提交之后的页面:

TabList.html页面

请输入姓名:

请输入班级:


//注意:每个单选之前必须带有“《P》”换行,否则系统无法与下一个单选题分别开!!


在JSP中,可以获得用户表单提交的信息的内置对象是:( )


response对象

request对象


session对象

application对象


在SQL语言中,为了实现数据的更新,使用的命令是:( )


update语句

insert语句


select语句

delete语句


TabList.jsp页面

<%@page language="java"import="java.util.*"pageEncoding="utf-8"%> <%

request.setCharacterEncoding("utf-8");//因为有文本框文字的获取,所以需要添加这个代码来处理中文乱码问题

String path = request.getContextPath();

String basePath =

request.getScheme()+"://"+request.getServerName()+":"+request.getServ

erPort()+path+"/";

%>

My JSP 'index.jsp' starting page

<%int n=0;

String strName=request.getParameter("stuname");

String strClass=request.getParameter("class");

String strTemp=strClass+","+strName;

//判断单选t1:如果选择b,则n加一

if(request.getParameter("t1").equals("b"))

n++;

//判断单选t2:如果选择a,则n加一

if(request.getParameter("t2").equals("a"))

n++;

if(n==2)

{

out.println("恭喜您得了满分
");

}

%>

姓名:<%= strName%>

班级:<%= strClass%>

您好:<%=strTemp %>:

你的得分:<%=n %>分

例题三:市场调查表单设计与提交,提交后的页面输出选项。

提交后的页面

danxuan.html页面

市场调查

(1)你是否听说过该产品

听说过

没有



(2)你认为该产品的质量怎样

很好

一般



(3)你认为该产品的市场价格怎样

太高

合适

偏高

偏低



(4)你是否购买过该产品

买过

没买过

(5)你以后是否购买该产品

不会



(6) 你对产品的建议


danxuan2.jsp页面

<%@page language="java"import="java.util.*"pageEncoding="utf-8"%> <%

request.setCharacterEncoding("utf-8");//因为有文本框文字的获取,所以

需要添加这个代码来处理中文乱码问题

String path = request.getContextPath();

String basePath =

request.getScheme()+"://"+request.getServerName()+":"+request.getServ erPort()+path+"/";

%>

My JSP 'danxuan.jsp' starting page

<%

String xz=request.getParameter("t1");

String xz2=request.getParameter("t2");

String xz3=request.getParameter("t3");

String xz4=request.getParameter("t4");

String xz5=request.getParameter("t5");

String xz6=request.getParameter("ta");

%>

你是否听说过该产品: <%=xz %>

你认为该产品的质量怎样: <%=xz2 %>

你认为该产品的市场价格怎样 : <%=xz3 %>

你是否购买过该产品: <%=xz4 %>

你以后是否购买该产品: <%=xz5 %>

建议:<%=xz6 %>

setAttribute(String name,object b);

设置参数name的指是b

getAttribute(String name);

获得由name指定的属性的值

例题:在Test.jsp页面设置两个参数user和pass的值,并跳转到页面Test_1.jsp,Test_1页面实现输出这两个参数值。

Test.jsp页面:

<%

application.setAttribute("user","whn");

application.setAttribute("pass","211314");

%>

Test_1.jsp页面

<%

String Name = (String) application.getAttribute("user");

String Password = (String) application.getAttribute("pass");

out.println("user = "+Name);

out.println("pass = "+ Password);

%>

response对象包含了响应客户请求的有关信息,但在JSP中很少直接用到它,可以使用Response的sendRedirect(URL导航地址)方法实现客户的重定向,response是HttpServletResponse类的实例。

常用方法:

setContentType();

:动态改变setContentType属性

例题:

点击“download”按钮后的页面:

是否下载当前文件?

<% String str=request.getParameter("submit");

if(str==null)

{

str="";

}

if(str.equals("download"))

{

response.setContentType("application/vnd.ms-excel;charset=gb2312"); }

%>

setHeader(String,String b);

:设置指定名字的HTTP文件头值。

可以利用JSP动态改变客户端的响应,使用的语法是:response.setHeader()

例题一:创建setHead.jsp页面,输出当前系统时间,实现每2秒刷新一次页面,形成2秒走动的时钟、、

setHead.jsp页面

<%

//应用1

response.setHeader("refresh","2"); //每2秒钟刷新一次页面

out.println(new Date().toLocaleString());

%>

response.setHeader("refresh","n;URL=");

n秒后跳到其他页面。

例题:在refresh.jsp页面显示当前系统时间,并在10秒后跳转到到refresh_xialaTab.html页面。

10秒后跳转到refresh_xialaTab.html页面

refresh,jsp页面

<%

out.println(new Date().toLocaleString());

out.println("
10秒钟后跳转到refresh_xialaTab.html页面"); response.setHeader("refresh","10;url=refresh_xialaTab.html");

%>

refresh_xialaTab.html页面

编写一个“友情链接”程序,在选择指定链接,实现单击【go】按钮后,就会打开指定的网站:

友情链接

sendRedirect(String m);

跳转到页面m

例题:

编写一个“友情链接”程序xialaTab.html,在选择指定链接,实现单击【go】

按钮后,就会打开指定的网站(在Internet连通情况下),如图所示。

xialaTab.html页面

友情链接

xialaTab.jsp页面

<%

String address = request.getParameter("where");

if(address!=null)

{

if(address.equals("csai"))

response.sendRedirect("https://www.doczj.com/doc/806186403.html,");

else if(address.equals("hnrpc"))

response.sendRedirect("https://www.doczj.com/doc/806186403.html,");

else if(address.equals("sun"))

response.sendRedirect("https://www.doczj.com/doc/806186403.html,");

}

%>

Session对象:在计算机中,尤其是在网络应用中,称为“会话”。具体到

Web中的Session指的就是用户在浏览某个网站时,从进入网站到浏览器关闭所经过的这段时间,也就是用户浏览这个网站所花费的时间。

当一个客户访问一个服务器时,可能会在这个服务器的几个页面之间反复连接,反复刷新一个页面,服务器应当通过某种办法知道这是同一个客户,这就需要session对象。Session对否和客户建立一一对应关系依赖于客户和浏览器是否支持:cookie

常用方法:

isNew()方法:判断是否是一个新的session

例题一:用session对象制作站点计数器

session_zhandian.jsp站点计数器页面

<%@page language="java"import="java.util.*"pageEncoding="utf-8"%> <%

String path = request.getContextPath();

String basePath =

request.getScheme()+"://"+request.getServerName()+":"+request.getServ erPort()+path+"/";

%>

<%!

int number=0;

synchronized void countpeople()

{

number++;

}

%>

My JSP 'sessiondemo1.jsp' starting page

<%//判断是否是新的会话,如果是,则调用方法countpeople(),将numbei值加一,否则不会调用该方法

if(session.isNew())

countpeople();//若是新的session,此处会调用该方法,number=0,下边再次输出了number,则会输出number的值为1

String str=String.valueOf(number);//int->String

session.setAttribute("count",str);//如何在session中保存数据,"count"相当变量名,str变量值,用名字取出session值

%>

您是第<%= session.getAttribute("count")%>个访问本站的人。

本章测试题:

编写一个登录界面logo2.html ,当点击登录按钮后,在

logo2_yanzhengAndTiaozhuan.jsp页面进行帐号和密码的验证,验证成

功后会跳转到登录成功界面logo2_tiaozhuanLogo2.jsp

提交后的页面:

用户名:

登录密码:

<%

String strName=request.getParameter("user2");

String strPass=request.getParameter("pass2");

String strlogin=request.getParameter("ok2");

if(strlogin!=null)

{

session.setAttribute("login","OK2");//把“ok2”的值保存到login

中,证明曾访问过login页面

}

if (strName!=null && strPass!=null)

{

if (strName.equals("w") && strPass.equals("hn"))

{

session.setAttribute("me",strName);//把strName的值保存到me中

response.sendRedirect("logo2_TiaozhuanLogo2.jsp");//跳转到logo_tiaozhuanLogo2jsp欢迎页面

}

else

{

out.println("

登录失败!请输入正确的用户名和密码

");

}

}

%>

<%

String strLogin=(String)session.getAttribute("login");

String strUser=(String)session.getAttribute("me");

if (strLogin==null)

{

out.println("

请先登录,谢谢!

");

out.println("

5秒钟后,自动跳转到登录页面!

");

response.setHeader("Refresh","5;URL=logo2.html");

}

else

{

out.println(strUser+"

欢迎进入我们的网站!

");

}

%>

application对象:提供了对javax.servlet.ServletContext对象的访问,用于多个程序或者多个用户之间共享数据。对于一个容器而言,每个用户都共用一个application对象,这和session对象不同。

application对象的常用方法

setAttribute(String name, Object obj)

:用obj来初始化某个由name指定的属性

getAttribute(String name):

:获得指定名称的application对象属性的值

removeAttribute(String name)

:删除一个指定的属性

------------------------------------------------------------------------------------------------------- 例题一:使用application读写属性值

<%

application.setAttribute("user","liuzc");

application.setAttribute("pass","liuzc518");

%>

<%

String Name = (String) application.getAttribute("user");

String Password = (String) application.getAttribute("pass");

out.println("user = "+Name);

相关主题
文本预览