《C08第五章JSP程序开发-JSP程序开发基础(3)》由会员分享,可在线阅读,更多相关《C08第五章JSP程序开发-JSP程序开发基础(3)(29页珍藏版)》请在金锄头文库上搜索。
1、五、五、JSP程序开发根底程序开发根底3JSP程序开发根底的主要内容程序开发根底的主要内容5.5 JSP的动态页面处理 5.6 JSP中使用JavaBean JSP的动态页面处理的动态页面处理nJSP的动态页面处理有两种方式的动态页面处理有两种方式v在在JSP中包含页面中包含页面v在在JSP中跳转访问其他页面中跳转访问其他页面nJSP有三种方法包含外部程序或页面的:有三种方法包含外部程序或页面的:v指令指令v动作动作v动作动作nJSP有两种跳转访问其他页面有两种跳转访问其他页面vsendRedirect方法方法v动作动作在在JSP中包含页面中包含页面nJSP包含外部程序或页面的三种方法:包含外
2、部程序或页面的三种方法:v指令指令:编译器指令,在编译的时候编译器指令,在编译的时候将所包含的页面引入,一起转译成将所包含的页面引入,一起转译成Java程序程序;v动作动作:动作指令,在动作指令,在JSP页面执行页面执行的时候进行调用;的时候进行调用;v动作动作:jsp:plugin元素可以将使用元素可以将使用Java插件的插件的applet查入查入JSP页页,主要用于嵌入主要用于嵌入Web的的applet格式的客户端格式的客户端Java。在在JSP中包含页面中包含页面n包含一个静态或动态文件包含一个静态或动态文件. . n的语法格式有如下形式:的语法格式有如下形式:n不带参数的格式:不带参数
3、的格式:njsp:include jsp:include page=relativeURL page=relativeURL | | flush=true / flush=true / n参数的格式:参数的格式:njsp:include jsp:include page=relativeURL page=relativeURL | %=expression | flush=true % flush=true njsp:param jsp:param name=parameterName name=parameterName value=parameterValue | value=parame
4、terValue | %= /expression % /nn njsp:param /指指可可以以有有多多个个“标记。标记。 在在JSP中包含页面中包含页面n的属性的属性npage:指定引用包含文件的相对:指定引用包含文件的相对URL;nflush:指定主页的输出流是否应该在页的包含前去:指定主页的输出流是否应该在页的包含前去除,缺省为除,缺省为false;nn元素元素n被包含文件自动共享与原先的请求页相同的请求参被包含文件自动共享与原先的请求页相同的请求参数数Request的作用域;的作用域;n如果想要增加某些参数在页面间传递,可以使用如果想要增加某些参数在页面间传递,可以使用元素,通过元
5、素,通过Request对象传递;对象传递;nn n在在JSP中包含页面中包含页面n和和用法的区别用法的区别nn预先编译好,执行效率高;预先编译好,执行效率高;n如果包含文件改变,那么使用它的所有如果包含文件改变,那么使用它的所有JSP文件都文件都要更新不用效劳器可能会有所不同;要更新不用效劳器可能会有所不同;n被包含文件中可以含有影响页面的响应头设置,但被包含文件中可以含有影响页面的响应头设置,但不能和主体文件的冲突。不能和主体文件的冲突。nn动态调用,执行效率低;动态调用,执行效率低;n不需要在修改了包含文件后更新主不需要在修改了包含文件后更新主文件,是主要采用的包含方式;文件,是主要采用的
6、包含方式;n主提页面已经在请求时被转换成主提页面已经在请求时被转换成servlet,因此被包,因此被包含的页不能含有总体上影响主体页面的含的页不能含有总体上影响主体页面的JSP程序或程序或页面。页面。在在JSP中跳转访问页面中跳转访问页面nJSP跳转访问页面的两种方法:跳转访问页面的两种方法:nsendRedirect方法:方法:n通知浏览器进行页面跳转通知浏览器进行页面跳转nResponse.sendRedirect(“login.html);n方法:方法:n在效劳器端进行页面的跳转在效劳器端进行页面的跳转nn在在JSP中重定向中重定向n根本语法根本语法njsp:forwardpage=re
7、lativeURL/njsp:forwardpage=relativeURL/njsp:paramname=parameterNamenvalue=parameterValue/n在JSP中跳转页面v举例举例vvvvv本卷须知本卷须知v从一个从一个JSP文件向另一个文件传递一个包含用户请求的文件向另一个文件传递一个包含用户请求的request对象对象v标签以下的代码将不会被执行标签以下的代码将不会被执行v如果使用了如果使用了标签目标文件必须是程序标签目标文件必须是程序JSPJSP的语法的语法的语法的语法在JSP中跳转页面在在JSP中跳转访问页面中跳转访问页面n两种调转方法的区别两种调转方法的区
8、别nRedirect方法方法n通知浏览器进行进行页面跳转,参数是需要跳转的通知浏览器进行进行页面跳转,参数是需要跳转的URLn浏览器接收到响应后,按照新的浏览器接收到响应后,按照新的URL链接重新发起链接重新发起请求请求n跳转前和跳转后是在另个不同的跳转前和跳转后是在另个不同的Request请求域请求域nForward方法方法n由效劳器端将请求交由跳转的页面继续处理,因此由效劳器端将请求交由跳转的页面继续处理,因此参数是需要跳转的程序参数是需要跳转的程序n跳转前和跳转后是在一个跳转前和跳转后是在一个Request的请求域内,共的请求域内,共享访问同一个享访问同一个Request对象对象n对于浏
9、览器,看不到所跳转的页面地址对于浏览器,看不到所跳转的页面地址JSP的动态页面处理的动态页面处理n和和的区别的区别n相同点相同点n都是在效劳器端调用其他页面继续执行请求的处理都是在效劳器端调用其他页面继续执行请求的处理nrequest.getRequestDispatcher(jsp2.jsp).forward(request,response);nrequest.getRequestDispatcher(jsp2.jsp).include(request,response);n都是在一个都是在一个Request的作用域内,共享使用的作用域内,共享使用Request对象对象n不同点不同点n是在
10、一个主页面的框架只执行所包含是在一个主页面的框架只执行所包含的页面,被包含页面执行完成后,需要回到主页面的页面,被包含页面执行完成后,需要回到主页面继续执行;继续执行;n是顺序执行页面。执行调转后,当是顺序执行页面。执行调转后,当前页面的执行就全部结束,进入到下一个页面执行,前页面的执行就全部结束,进入到下一个页面执行,当前页面中后续的内容就不再被执行。当前页面中后续的内容就不再被执行。JSP使用使用JavaBeannJavaBean的根本概念的根本概念nJavaBean定义了可重复使用的软件代码打包标准,定义了可重复使用的软件代码打包标准,是为了实现类的复用,而满足特殊标准的是为了实现类的复
11、用,而满足特殊标准的Java类;类;nJavaBean是是Java语言中最重要的组件类,在各类语言中最重要的组件类,在各类需要进行类复用的场合被广泛使用;需要进行类复用的场合被广泛使用;nVO:存储数据对象:存储数据对象nDTO:数据传输:数据传输nPOJO:纯:纯Java类类n在编写在编写JSP时,应该将程序的逻辑局部编写为时,应该将程序的逻辑局部编写为JavaBean,而,而JSP中只负责用户视图的处理,例中只负责用户视图的处理,例如如HTML页面的生成页面的生成nJavaBean需要满足条件需要满足条件n必须有一个不带有参数的公用构造器必须有一个不带有参数的公用构造器n例如例如publi
12、cUserLogin();n所有所有Bean的属性都必需定义为私有变量的属性都必需定义为私有变量n例如例如PrivateuserName;n如果需要使用如果需要使用Bean的属性,那么应该为每个属性设的属性,那么应该为每个属性设置置set和和get方法方法,且必需与属性的变量名相同,且必需与属性的变量名相同,n例如例如publicsetUserName();npublicgetUserName();n对于每个需要的操作,应该有一个公用方法对于每个需要的操作,应该有一个公用方法n例如例如publicbooleancheckUser();JSP使用使用JavaBeanpackageresinsam
13、ple.javabean;publicclassMessageBeanprivateStringmessage=初始化信息初始化信息;publicvoidmesssageBean()publicStringgetMessage()returnmessage;publicvoidsetMessage(Stringmessage)this.message=message;JSP使用使用JavaBeann使用使用JavaBean的优点的优点n标准标准Java语法语法n使对象共享更为简单使对象共享更为简单n请求参数和对象属性之间的便利通信请求参数和对象属性之间的便利通信n使用使用JavaBean的的J
14、SP语法语法n:创立:创立JavaBean的实例,或者引的实例,或者引用一个用一个JavaBean的实例;的实例;n:设置:设置JavaBean的属性;的属性;n:获得:获得JavaBean的属性;的属性;JSP使用使用JavaBeann用用于于创创立立一一个个BeanBean实实例例并并指指定定它它的名字和作用范围。的名字和作用范围。 n语法格式如下:语法格式如下:njsp:useBean id=beanInstanceName jsp:useBean id=beanInstanceName nscope=page scope=page / / request request / / ses
15、sion session / / application application n class=package.class / class=package.class /n type=package.class / type=package.class / nclass=package.class class=package.class type=package.class / type=package.class / nbeanName=package.class beanName=package.class / / %= type=package.class expression % t
16、ype=package.class n n n/ / / / n other elements other elements n n nid=“beanInstanceNameid=“beanInstanceName属性属性n在在要要求求的的范范围围中中定定义义BeanBean的的变变量量,程程序序中中使使用用此此变变量名来标识不同的量名来标识不同的Bean Bean ;n这这个个变变量量名名对对大大小小写写敏敏感感,必必须须符符合合所所使使用用的的JavaJava语言的规定;语言的规定;n如如果果BeanBean已已经经在在别别的的标标记记中中创创立立,那那么么在在通通过过这这个个标标记记引
17、引用用时时,idid的的值值必必须须与与原原来来的的那那个个idid值值一一致致,否否那那么么意意味味着着创创立立了了同同一一个个类类的的两两个个不同的对象。不同的对象。nscope=page|request|session|application scope=page|request|session|application nBeanBean存存在在的的范范围围以以及及idid变变量量名名的的有有效效范范围围,缺缺省省值值是是pagepagenpage page :当前页面作用域中有效:当前页面作用域中有效nrequest request :在请求作用域中有效:在请求作用域中有效nsessi
18、on session :在会话作用域中有效:在会话作用域中有效nApplicationApplication:在应用作用域中有效:在应用作用域中有效nBeanBean存存在在的的范范围围以以及及idid变变量量名名的的有有效效范范围围,标标识识了了JSPJSP容器用什么对象存储容器用什么对象存储Bean Bean 对象,例如对象,例如njsp:userBean jsp:userBean id=“testBeanid=“testBean,scope=“request,scope=“requestnrequest.setAttribute(“testBeanrequest.setAttribute
19、(“testBean,testBean),testBean)pagesessionrequest缺省值针对当前请求放在PageContext对象中bean将存储在与当前请求相联的 Session中bean对象应该针对当前请求期间放在ServletRequest中applicationbean将存储在共享的ServletContext变量中同一个web应用中的所有servlet共享nclass=package.class class=package.class n创立创立Java BeanJava Bean需要用到的属性;需要用到的属性;n指明指明Java BeanJava Bean所对应的所对
20、应的class class 文件;文件;n相相当当于于使使用用newnew关关键键字字一一个个Java Java BeanBean的的类类中中实实例例化化一个对象一个对象nTestBean testBean=new TestBean();TestBean testBean=new TestBean();ntype=package.class type=package.class n获取获取Java BeanJava Bean需要用到的属性;需要用到的属性;n如如果果指指定定BeanBean已已经经在在指指定定的的范范围围中中存存在在,那那么么赋赋予予这个这个BeanBean标识的数据类型;标识
21、的数据类型;n TestBean)request.getAttribute(“testBeanTestBean)request.getAttribute(“testBean);); jsp:getPropertyn的语法格式如下:的语法格式如下:njsp:getProperty property=propertyName / n从从Java BeanJava Bean中获得指定属性的值中获得指定属性的值n等效于调用等效于调用n的属性有:的属性有:nname=“beanInstanceNamename=“beanInstanceName beanbean的的 名名 字字 , 由由中的中的idid
22、属性指定。属性指定。nproperty=“propertyNameproperty=“propertyName,所所指指定定的的BeanBean的的属属性性名。名。23 jsp:getPropertytest Calendar of n用来设置用来设置BeanBean的属性值的属性值n语法格式如下:语法格式如下: jsp:setProperty jsp:setProperty name=beanInstanceName name=beanInstanceName property= * property= * | | property=propertyName param=parameterN
23、ame property=propertyName param=parameterName | | property=propertyName property=propertyName value=string value=string | | %= % / / nname=“beanInstanceNamename=“beanInstanceNamen在在中创立的中创立的BeanBean实例的名字,标识对实例的名字,标识对JavaBeanJavaBean的引用;的引用;nproperty=“*property=“*n自动匹配设置自动匹配设置BeanBean中的属性中的属性, ,储存用户输入
24、的值;储存用户输入的值;n这个方式这个方式JSPJSP引擎可以自动将引擎可以自动将requestrequest对象中存储的用户参数对象中存储的用户参数依据参数名称和依据参数名称和JavaBeanJavaBean中的属性相匹配;中的属性相匹配;nproperty=propertyName param=parameterName property=propertyName param=parameterName n指定指定BeanBean属性值所配置具体输入参数,存储用户输入的值;属性值所配置具体输入参数,存储用户输入的值;n其中其中propertyproperty指定指定BeanBean的属性名
25、,的属性名,paramparam指定指定requestrequest中的参中的参数名;数名;nproperty=propertyName value=string | %= property=propertyName value=string | expression % n直接通过指定的值来设定直接通过指定的值来设定BeanBean属性;属性;n这个值可以是字符串,也可以是表达式。如果这个这个值可以是字符串,也可以是表达式。如果这个字符串,那么它就会被转换成字符串,那么它就会被转换成BeanBean属性的类型,如属性的类型,如果是一个表达式,那么它的类型就必须和将要设定果是一个表达式,那么它
26、的类型就必须和将要设定的属性值的类型一致;的属性值的类型一致;n如果参数值为空值,那么对应的属性值也不会被设如果参数值为空值,那么对应的属性值也不会被设定;定;n不能在同一个不能在同一个“中同时使用中同时使用paramparam和和valuevalue参数参数 n本质上就是本质上就是JavaJava类的调用,等效于类的调用,等效于普通普通JavaJava类的调用类的调用njsp:useBean id=messageBean class=resinsample.javabean.MessageBean / n% messageBean=new resinsample.javabean.Messa
27、geBean();%njsp:getProperty name=messageBean property=message /nnjsp:setProperty name=messageBean / njsp:getProperty name=messageBean property=message / n% messageBean.setMessage( ); % nJSP使用使用JavaBeann还可以通过还可以通过 引用引用JavaJava类库中的类类库中的类生成的生成的beanbean组件组件 JSP使用使用JavaBean课后复习课后复习n复习在复习在JSP程序中包含页面的两种方式的不同点程序中包含页面的两种方式的不同点n复习在复习在JSP程序中调转页面的两种方式的不同点程序中调转页面的两种方式的不同点n复习复习JavaBean的根本概念和用途的根本概念和用途n复习在复习在JSP程序中调用程序中调用JavaBean的相关语法的相关语法n复习在复习在JSP程序中访问程序中访问JavaBean的原理的原理