您好,欢迎访问三七文档
ACCPV4.0第八章JavaBean和JSP中的标准动作ACCPV4.02回顾JSP隐式对象是预定义的类,可被嵌入JSP表达式和Scriplet隐式对象通过JSP容器导入到JSP页面中request、response和out对象等输入和输出对象用于显示和检索网页中的信息session、application和pageContext等作用域通信和控制对象向JSP页面提供页面环境的访问权page对象用于表示Servlet,而config对象用于存储Servlet的初始化参数ACCPV4.03目标运用JavaBean运用JSP标准动作ACCPV4.04为什么要使用JavaBean前几节课所编写的jsp页面中混合了HTML代码和java代码,页面显示和业务逻辑混合在一起可读性和可维护性都比较差为了分离页面的HTML代码和Java代码,我们单独编写一个类来封装页面的业务逻辑,在页面中调用该类的方法即可完整所需的功能这种封装业务逻辑的类就是JavaBean组件ACCPV4.05什么是JavaBeanJavaBean组件本质上就是一个类,只不过这个类需要遵循一些编码的约定在jsp页面中可以通过new操作符来实例化JavaBean类的对象,也可以利用jsp技术中提供的动作元素来访问JavaBeanACCPV4.06JavaBeanJavaBean是可重用组件可重用组件可在多个应用程序中使用可以跨平台JavaBean的优点ACCPV4.07JavaBean特性JavaBean特性它是一个公开的public类它有一个默认的构造方法,也就是不带参数的构造方法(在实例化JavaBean对象时,需要调用默认的构造方法)它提供setXXX()方法和getXXX()方法来让外部程序设置和获取JavaBean的属性。符合上述条件的类就可以看成是JavaBean组件ACCPV4.08属性的命名约定属性(property)是JavaBean组件内部状态的抽象表示,外部程序使用属性来设置和获取JavaBean组件的状态。为了让外部程序能够知道JavaBean提供了那些属性,JavaBean的编写者必须遵循标准的命名方式例子:一个String类型的name属性对应的方法:publicStringgetName()publicvoidsetName(Stringname)为每一个属性添加一个get和set方法,其中属性名字的第一个字母大写,然后在名字前面加上“get”和“set”只有get方法则是只读属性,只有set方法则是可写属性,两者都有则是可读可写属性ACCPV4.09属性的命名约定-续get/set命名方式有一个例外。那就是对于boolean类型的属性,应该使用is/set命名方法,也可以使用get/set方法例子:privatebooleanmarriedpublicbooleanisMarried()publicvoidsetMarried()ACCPV4.010JavaBean演示:创建如何创建JavaBeanACCPV4.011属性的类型JavaBean有4中类型的属性:简单属性、索引属性、绑定属性、约束属性在jsp中,支持javaBean的简单属性和索引属性,绑定属性和约束属性则主要用于图形界面编程中简单属性接受单个值的属性。只要采用get/set命名约定即可索引属性就是获取和设置数组时使用的属性。要运用索引属性,需要提供两对get/set方法,一对用于数组,另一对用于数组中的元素ACCPV4.012属性的类型-索引ACCPV4.013Jsp动作元素Jsp中的元素有哪几种类型?动作元素为请求处理阶段提供信息,jsp2.0规范定义了一些标准动作。标准动作是一些标签,它们影响jsp运行时行为和对客户端请求的响应,这些动作由jsp容器来实现从效果上来说,一个标准动作是嵌入到jsp页面中的一个标签。在页面被转换为Servlet期间,当JSP容器遇到这个标签,就用预先定义的对应该标签的java代码来替代它。Jsp2.0规范中定义了20个标准的动作元素指令元素,脚本元素,动作元素ACCPV4.014JSP标准动作JSP标准动作包括:JSP标准动作jsp:useBeanjsp:setPropertyjsp:getPropertyjsp:includejsp:forwardACCPV4.015标准动作用于:将JavaBean嵌入JSP页面设置和获取JavaBean的属性将用户请求转发给其他页面将其他页面的内容嵌入当前页面标准动作可以为空标签及容器标签标准动作中的属性区分大小写JSP中的标准动作使用jsp作为前缀JSP使用JavaBeanJavaBeanJSP可使用JSP标准动作调用JavaBean组件并访问属性JSP页面ACCPV4.016jsp:useBean动作...headjsp:useBeanid=BeanIDclass=MyBeanscope=page//head...创建引用并嵌入现有的Beanid属性创建对class属性中所述类的引用用于实例化JavaBean,或者定位一个已经存在的JavaBean实例,并把实例的引用赋给一个变量id:用于标识JavaBean实例的名字class:JavaBean对象的完整类名scope:指定一个范围,在这个范围内,JavaBean实例的引用是可用的ACCPV4.017jsp:useBean动作范围指定JavaBean在JSP页面中的可用性。各种范围选项如下:范围描述PageBean只能在使用页面时使用。当加载新页面时,就会将其销毁RequestBean在用户对其发出请求时存在SessionBean一直存在于会话中,直至其终止或被删除为止ApplicationBean在整个应用程序中均可使用ACCPV4.018jsp:setProperty动作jsp:setProperty动作和jsp:useBean一起使用,使用Bean中的setXXX()方法设置JavaBean的简单属性和索引属性。nameBean实例的名字,必须是jsp:useBean中通过id属性指定的名字property被设置的属性的名字。如果值是*,标签就会在请求对象中查找所有的请求参数,看参数的名字和Bean属性的名字是否相同,如果找到匹配的参数和属性,就会按照正确的类型(自动进行类型转换)将参数的值设置为属性的值jsp:setProperty元素各属性含义ACCPV4.019jsp:setProperty动作(续)param指定请求对象中参数的名字。在设置Bean的属性时,如果请求参数的名字和Bean属性的名字不同,可以用param来指定参数的名字。如果没有使用param,那么就认为请求参数的名字和Bean属性的名字相同value指定要赋给Bean属性的值。在jsp:setProperty元素中,不能同时出现param和value属性ACCPV4.020jsp:getProperty动作用来访问一个Bean的属性,并把属性的值转化成一个String,然后发送到输出流中。如果属性是一个对象,将调用该对象的toString()方法jsp:getProperty动作元素的属性有name,property和jsp:setProperty中的相同ACCPV4.021使用useBean、setProperty和getProperty动作在JSP中使用JavaBeanhtmlheadtitle在JSP中使用JavaBean/titlejsp:useBeanid=BeanIdclass=example5.simpleBeanscope=application/jsp:setPropertyname=BeanIdproperty=namevalue=Andrew/jsp:setPropertyname=BeanIdproperty=agevalue=25//headbody姓名:jsp:getPropertyname=BeanIdproperty=name/br/年龄:jsp:getPropertyname=BeanIdproperty=age//body/html演示:示例5ACCPV4.022jsp:forward动作这个动作允许在运行时将当前的请求转发给一个静态的资源,jsp页面或者Servlet,请求被转向到的资源必须位于同jsp发送请求相同的上下文环境中这个动作的作用和RequestDispatcher接口的forward()方法的作用是一样的只有一个page属性,指定请求被转向的资源的相对路径,该路径是相对于当前jsp页面的URL.ACCPV4.023jsp:forward动作ACCPV4.024Forward动作3-2演示:示例7htmlheadtitle转发此页面/title/headbodyjsp:forwardpage=requestedpage.jsp//body/html创建一个JSP页面使用forward动作转发用户的请求ACCPV4.025创建一个JSP页面用户将被转至此页面Forward动作3-3演示:示例8htmlheadtitle将请求转发到此处/title/headbody此页面从br/bforward.jsp/b中收到一个转发的请求,br此页面是brequestedpage.jsp/b中的输出结果,br但URL用于bforward.jsp/b/body/htmlACCPV4.026Include动作5-1...bodyjsp:includepage=OtherPage.jspflush=true//body...将其他JSP中的内容或页面嵌入到指定的页面page属性指定其他页面的地址ACCPV4.027jsp:include动作用于在当前页面中包含静态和动态的资源,一点被包含的页面执行完毕,请求处理将在调用页面中继续执行.两个属性page:指定被包含资源的相对路径flush:可选.如果为true,则在包含之前先刷新缓冲区.如果为false则不刷新,默认为false可以在它的内容中包含一个或多个jsp:param元素,为包含的页面提供参数信息.被包含的页面可以访问request对像,该对象包含了原始的参数和使用jsp:param元素指定的新的参数.ACCPV4.028区别jsp:include与include指令的区别jsp:include动作是动态包含include指令是静态包含include指令将jsp页面作为静态对象,将页面的内容在include指令的位置处包含进来,这个过程发生在jsp页面的转换阶段.jsp:include动作把包含的jsp页面作为动态对象,在请求处理期间,发送请求给该对象,然后在当前页面对象请求的响应中包含对象对请求的处理结果,这个过程发生在执行阶段即请求处理阶段ACCPV4.029Include动作5-2示例:示例9创建一个JSP页面,用以接受参数并显示结果使用getParameter()方法...%Stringtablename=request.getParameter(tablename);Stringsqlquery=request.getParameter(sqlquery);Stringwhereclause=request.getParameter(producttype);out.println(“b以执行Sql查询:/b+sqlquery++tablename+whereProductType='+whereclause+'br/br/);
本文标题:JSP PPT8
链接地址:https://www.777doc.com/doc-3424647 .html