用JSP脚本元素调用Java.ppt

上传人:小飞机 文档编号:6592047 上传时间:2023-11-15 格式:PPT 页数:30 大小:328.14KB
返回 下载 相关 举报
用JSP脚本元素调用Java.ppt_第1页
第1页 / 共30页
用JSP脚本元素调用Java.ppt_第2页
第2页 / 共30页
用JSP脚本元素调用Java.ppt_第3页
第3页 / 共30页
用JSP脚本元素调用Java.ppt_第4页
第4页 / 共30页
用JSP脚本元素调用Java.ppt_第5页
第5页 / 共30页
点击查看更多>>
资源描述

《用JSP脚本元素调用Java.ppt》由会员分享,可在线阅读,更多相关《用JSP脚本元素调用Java.ppt(30页珍藏版)》请在三一办公上搜索。

1、用JSP脚本元素调用Java代码,议程,静态和动态文本动态代码和好的JSP设计JSP表达式servlet和JSP页面对类似任务的处理JSP scriptletJSP声明预定义变量表达式、scriptlet和声明之间的对比,不同JSP构造的应用,设计策略:限制JSP页面内的Java代码,有两种选择:将25行Java代码直接放在JSP页面中将这25行代码放在单独的Java类中,在JSP页面中用一行代码调用它为什么第二种选择更好?开发。我们可以在Java开发环境(编辑器或IDE)中编写单独的类,而非在HTML环境中。调试。如果代码中含有语法错误,在编译时就能够直接看到。简单的打印语句可以直接看到结果

2、。测试。我们可以编写测试过程,每次更改后都通过循环进行上万次的测试。重用。多个页面都可以使用同一个类。,基本语法,HTML文本Blah不加更改地传递给客户。实际上是由类似于下面的servlet代码生成:out.print(Blah);HTML注释和其他HTMl一样:直接传递给客户JSP注释并不发送给客户要输出%,使用%,脚本元素的类型,表达式格式:求值并插入到servlet的输出中。也就是会产生类似于out.print(expression)的语句scriptlet格式:逐字地插入到servlet的_jspService方法中(由service调用)声明格式:逐字地插入到servlet类的定义

3、体中,不在任何方法之内,JSP表达式,格式结果表达式被求值,转换成字符串,将按照它在JSP页面中出现的位置插入到HTML页面中。即,表达式在out.print内放置在That is,expression placed in _jspService inside out.print示例当前时间:您的主机名:XML兼容的语法Java Expression在单个页面中不能混合使用不同的版本。如果使用jsp:expression就必须整个页面都使用XML。,JSP/servlet的对应,原始的JSPA Random Number所产生的具有代表性的servlet代码public void _jspSe

4、rvice(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOExceptionresponse.setContentType(text/html);HttpSession session=request.getSession(true);JspWriter out=response.getWriter();out.println(A Random Number);out.println(Math.random();.,JSP表达式:示例,JSP ExpressionsCurren

5、t time:Server:Session ID:The testParam form parameter:,预定义变量,requestHttpServletRequest(service/doGet的第一个参数)responseHttpServletResponse(service/doGet的第二个参数)out用来将输出发送到客户程序的Writer(JspWriter带缓冲的版本)session与请求关联的HttpSession(除非用page指令的session属性将之禁止)applicationServletContext(用于数据共享),可通过getServletContext()获

6、取,servlet和JSP的比较:读取三个参数(Servlet),public class ThreeParams extends HttpServlet public void doGet(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException out.println(docType+n+title+n+n+title+n+n+param1:+request.getParameter(param1)+n+param2:+request.getParameter(pa

7、ram2)+n+param3:+request.getParameter(param3)+n+n+);,servlet和JSP的比较:读取三个参数(JSP),Reading Three Request ParametersReading Three Request Parametersparam1:param2:param3:,JSP scriptlet,格式结果代码被逐字地插入到servlet的_jspService方法中示例XML兼容的语法Java Code,JSP/servlet之间的对应关系,原始的JSPfoo所产生的具有代表性的servlet代码public void _jspSer

8、vice(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOExceptionresponse.setContentType(text/html);HttpSession session=request.getSession();JspWriter out=response.getWriter();out.println(foo);out.println(bar();baz();.,JSP scriptlet:示例,假定您希望能够让最终用户定制页面的背景色下面的代码有什么问题?无法

9、进行缺失和异常数据的检查,JSP scriptlet:示例,Color TestingTesting a Background of,使用scriptlet将JSP文件的某些部分条件化,要点scriplet会被严格按照所写的样子插入到servlet中不需要是完整的Java表达式但完整的表达式常常更清楚且易于维护示例Have a nice day!Have a lousy day!具有代表性的结果if(Math.random()nice day!);else out.println(Have a lousy day!);,JSP声明,格式结果代码被逐字地插入到servlet类的定义中,在任何现有

10、方法以外示例设计上的考虑字段当然有用,但对于方法而言,通常在单独的Java类中定义更好一些。XML兼容的语法Java Code,JSP/servlet之间的对应关系,原始的JSPSome Heading+Math.random()+);%也可以使randomHeading成为单独Java类的静态方法),JSP/servlet之间的对应关系,生成的servlet代码public class xxxx implements HttpJspPageprivate String randomHeading()return(+Math.random()+);public void _jspService

11、(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOExceptionresponse.setContentType(text/html);HttpSession session=request.getSession(true);JspWriter out=response.getWriter();out.println(Some Heading);out.println(randomHeading();.,JSP声明:示例,JSP DeclarationsJSP Declarat

12、ionsAccesses to page since server reboot:,JSP声明:jspInit和jspDestroy,JSP页面,如同常规servlet,有时需要用到init和destroy问题在于:根据JSP页面构建的servlet有可能已经使用了init和destroy覆盖它们会引发问题。因此,使用JSP声明来声明init或destroy是不合法的。解决方案:使用jspInit和jspDestroy。根据JSP页面生成的servlet一定会init和destroy中调用这些方法,而标准版的jspInit和jspDestroy是空的(仅为占位符,由用户覆盖。public vo

13、id jspInit()System.out.println(this is jspInit in+this);public void jspDestroy()System.out.println(this is jspDestroy in+this);,JSP声明和预定义变量,问题预定义变量(request,response,out,session,等)是_jspService方法中的局部变量。因而,由JSP声明定义的方法或辅助类中的方法都不能使用它们。怎么处理这种情况呢?解决方案:将它们作为参数传递,例如要注意:JspWriter的println方法抛出IOException异常使用pri

14、ntln的方法要使用“throws IOException”,表达式、scriptlet和声明的对比,任务1输出由从1到10之间的5个随机整数构成的项目列表。由于本页的结构固定,并且对于randomInt方法,我们使用单独的辅助类,JSP表达式完全能够胜任。任务2生成1到10数据项构成的列表(随机选定),每一项为1到10之间的整数。由于列表中的数据项是动态的,所以需要JSP scriptlet。任务3在首次请求时生成一个随机数,然后向所有的用户展示这个随机数,直到服务器重新启动。实例变量(字段)是完成这种持续性的自然方式。使用JSP声明来完成这项任务。,辅助类:RanUtilities,pac

15、kage XXX;/Always use packages!public class RanUtilities/*A random int from 1 to range(inclusive).*/public static int randomInt(int range)return(1+(int)(Math.random()*range);public static void main(String args)int range=10;try range=Integer.parseInt(args0);catch(Exception e)/Array index or number for

16、mat/Do nothing:range already has default value.for(int i=0;i100;i+)System.out.println(randomInt(range);,任务1:JSP表达式(代码),Random NumbersRandom Numbers,任务2:JSP scriptlet(代码:版本1),Random List(Version 1)Random List(Version 1)+XXX.RanUtilities.randomInt(10);%,任务2:JSP scriptlet(代码:版本2),Random List(Version 2)Random List(Version 2),任务3:JSP声明(代码),Semi-Random NumberSemi-Random Number:,小结,JSP表达式格式:封装到out.print中,并插入到_jspServiceJSP scriptlet格式:逐字地插入到servlet的_jspService方法中JSP声明格式:逐字地插入到servlet类的定义体中预定义变量request,response,out,session,application限制直接放在页面中的Java代码考虑使用辅助类、bean、servlet/JSP的组合(MVC)、JSP表达式语言、定制标签。,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号