在JSP开发中脚本编程的重要性是什么呢?JSP开发的深入,使你可以把HTML的表达逻辑从植入Servlets中的复杂的商务逻辑区分开来。这样使得脚本编程可以编写表达层代码。

在JSP开发中脚本编程的重要性是什么呢?首要咱们来看假如你是直接运用Java Servlets,那你将不得不在Java类中处理HTTP输入和HTML输出,你需求丰厚的Java编程经历来构建杂乱的运用程序。JSP的参加,使你能够把HTML的表达逻辑从植入Servlets中的杂乱的商务逻辑区别开来。这意味着能够由有经历的脚本编写者来编写表达层代码,而高档的Java开发者能够集中精力去处理Servlets和bean中更为杂乱的问题。

JSP开发中的脚本编程浅析(Jsp脚本)  脚本编程 JSP开发 第1张

不管你有没有Java编程常识,都能够运用JSP.jsp包括了一些服务器端的标签,使得不用写一行Java代码就能显现动态数据。你能够直接拜访bean来完结操作,然后运用JSP标签把成果显现为动态内容。你还能够用Servlets生成bean,Servlets 操作的运算成果存于其间,然后再运用JSP标签显现成果,相同不需求在JSP页中写Java代码。

有三种办法能够用来在你的网页中参加Java代码:

◆运用declarations(声明),能够界说全局变量或是在页内任何地方都能够拜访的Java办法。声明被包括在符号﹤;%!……%﹥中。

◆运用scriptlets(脚本片断),你能书写页内处理所需的任何逻辑,它们包括在﹤;%……%﹥符号内。

◆Expressions(表达式),包括于﹤;%=……%﹥中。它供给一种简略的办法来显现Java表达式的成果。被附加上的表达式将被核算并在页面上显现出来,就好像你现已在代码中清晰写出了运算成果的数值相同。

在你自己编写的代码中,能够运用一些隐含变量(implicit variables)――JSP供给的预界说的Java目标。别的,经过运用JSP的指令(directives), 还能够包括非Java代码模块,比方来自其他文件的HTML文本。

下面咱们来细心看一看这些脚本元素,在编写你自己的JSP脚本编程时将会常常用到它们。

◆Directives(指令)

JSP界说了三个页内指令用于设置JSP参数或扩大代码。它们是 page,include和taglib,有必要写在JSP页的榜首行。语法如下:

﹤;%@ directive attribute="value" …… %﹥

page指令答应你为网页设定一些基本参数,包括设置所用脚本编程言语的参数(默以为Java)、你的脚本片断中引进的Java类、设置输出缓冲区等等。完好的page指令参数表见《JSP Specification Version 1.0》(《JSP标准1.0》)的2.8.1章。

运用include指令,能够包括其他文件的内容,比方存于独自文件中的HTML报头和页脚。

taglib指令用于扩大标准的JSP标签集,这超出了本文的评论规模。但是,了解JSP界说了一种扩大其标签集的办法仍是很有优点的,当你是一个软件商,想扩大JSP的原始功用而又不想损坏其兼容性时,这一点尤为重要。

◆Declarations(声明)

运用declarations,你能够在JSP页中界说办法或变量,它们可被同一页中的其他代码拜访。在大多数情况下,你或许会在自己的bean中界说办法。但是,有时分在网页内界说办法或许更便利一些,尤其是当代码只用于单一页面时。不管界说办法仍是变量,声明都包括在﹤;%! %﹥符号内。

留意,声明并不在JSP页内发生任何输出。它们仅仅用于界说,而不生成输出成果。要生成输出成果,你应该用JSP表达式或脚本编程片断。

◆Expressions(表达式)

Expressions是一种十分简略的JSP标签,它用来把在﹤;%= %﹥中界说的JSP表达式的值转换成字串并将这个值以动态文本的方式送出。Expression的确是一条生成文本的捷径,有了它,你不用在每非有必要显现一段动态文本的时分都去调用print()办法。典型的运用便是,你能够用expressions显现简略的变量值或bean中的办法的回来值。

例如,下面的代码将会生成getName()办法的回来值:

﹤;H2﹥Welcome, ﹤;%= mybean.getName() %﹥﹤;/H2﹥

事实上,在生成动态输出之前,JSP有必要把办法的回来值转变为Java中的String目标。JSP标准中详细描述了在JSP表达式中,什么样的Java类型和Java类会被转变成字串。

◆Scriptlets(脚本编程片断)

到现在为止你现已学会了运用指令来引进任何Java类或Java包,你能界说页面级的办法或变量并在页中运用它们,你还能够运用供给一般web处理功用的隐含变量。还能在JSP页内做些什么就取决于你了,由于你能够在scriptlets(脚本片断)里编写任何你想要的Java代码,如下所示:

﹤;% ……code…… %﹥

经过在page指令中运用IMPORT参数,你能够从脚本编程片断内调用全部Java API.由于你写的全部JSP代码实际上都被编译构成Java Servlet,它自身便是一个Java类,所以你所用的言语自身便是Java,而不是任何一种修正或整理过的版别。这就像在SSJS中你能够编写任何代码相同。而与SSJS不同,在JSP中你有权运用整套丰厚的Java API,因而几乎没有任何局限性。

◆Implicit Variables(隐含变量)

前面提到过,JSP界说了一些隐含变量(即Java 目标)供你在表达式和脚本片断中运用。《JSP Specification Version 1.0》的表2-2列出了JSP1.0中可用的隐含变量。这儿列出一些常用的目标:

out目标,类型为javax.Servlet.jsp.JspWriter,供给对办法(例如print()办法)的拜访,用来在脚本编程片断内生成输出成果。

request目标直接与Java中的javax.Servlet.http.HttpServletRequest类对应,具有该类的目标的全部特点和办法。举个比如,要获取一个从HTML表单或URL查询字串传入的值,能够调用request.getParameter()办法,依据名字获取参量。

response目标与Java中的javax.Servlet.http.HttpServletResponse类对应,供给对你的网页发生的HTML呼应的参数的拜访权。因而,要在JSP页回来的HTML呼应报头中参加一个值,你就能够调用the response.setHeader() 办法来完成。

另一个简略的比如

鄙人面的比如中,咱们来看一看一个表单和它的JSP表单句柄之间的交互进程。运用前面评论过的脚本元素,我完成了一个简略的web站点回馈表单(见图2)和一个JSP表单句柄用来验证输入,然后有条件地地生成依据回馈的输出。

按钮:submit query——提交;reset――重填

表单句柄将会查验称号和定见栏以确认它们已被填写,假如其间任何一个或两个是空白的,表单句柄会生成一条错误信息;不然它将持续查看用户定见是否与预先设定的字串匹配。假如匹配,它就输出一条专门的信息;不然输出“thank you”。

例2

  1. ﹤;HTML﹥
  2. ﹤;HEAD﹥
  3. ﹤;META.NAME="GENERATOR"Content="NetObjectsScriptBuilder2.01"
  4. ﹤;TITLE﹥FeedbackResults﹤;/TITLE﹥
  5. ﹤;/HEAD﹥
  6. ﹤;%!
  7. //名字和定见栏不能为空白
  8. //查看它们的值并回来成果
  9. booleanvalidateInput(Stringname,Stringcomment){
  10. booleanresult=true
  11. //假如名字或定见未填写,回来false以标明输入无效
  12. if(name.length()==0)
  13. result=false
  14. if(comment.length()==0)
  15. result=false
  16. returnresult;
  17. }//完毕输入验证validateInput
  18. //依据表单上的定见栏输出成果
  19. StringgetStringCheese(Stringcomment){
  20. Stringcheese="Ilikecheese."
  21. Stringresult;
  22. if(comment.compareTo(cheese)==0)
  23. result="Welikecheesetoo!"
  24. else
  25. result="Wehopesomedayyou'lllearntolikecheese."
  26. returnresult;
  27. }//完毕getStringCheese
  28. %﹥
  29. ﹤;BODYBGCOLOR="#F0F0E0"
  30. ﹤;%
  31. //获取经过表单提交的数据
  32. Stringname=request.getParameter("name");
  33. Stringage=request.getParameter("age");
  34. Stringcomment=request.getParameter("comment");
  35. booleanisValid;
  36. isValid=validateInput(name,comment);
  37. //依据用户是否未填写名字或定见栏决议输出内容
  38. if(isValid){
  39. %﹥
  40. ﹤;H2﹥Thankyouforyourfeedback!﹤;/H2﹥
  41. ﹤;H3﹥
  42. ﹤;%
  43. //输出定见栏的查询成果
  44. out.println(getStringCheese(comment));
  45. }//完毕if程序段
  46. else{
  47. out.println("Youdidn'tgiveusyournameoracomment.");
  48. %﹥
  49. ﹤;/H3﹥
  50. Please﹤;ahref="feedback_form.html"﹥tryagain﹤;/a﹥
  51. ﹤;%
  52. }//完毕else程序段
  53. %﹥
  54. ﹤;/BODY﹥
  55. ﹤;/HTML﹥

这个比如假定用户输入的定见是“I like cheese."(我喜爱奶酪)在代码中能够看到,这一呼应是为填写这条定见的用户定制的。表单句柄将会回来如图3所示的页面:

这个比如关于JSP开发脚本编程十分简略易懂。即使你仅仅一个JavaScript程序员,你也应该能够了解它。我还要指出这个比如中表现的在JSP标准中并不很明显的一些特性。

【修改引荐】

  1. 对JSP中的内置目标简略概述
  2. JSP和Servlet中的几个编码的效果及原理
  3. 运用JSP include机制改善外观
  4. JSP教程根底之脚本的运用
  5. JSP教程根底篇之HTML表单演示
转载请说明出处
知优网 » JSP开发中的脚本编程浅析(Jsp脚本)

发表评论

您需要后才能发表评论