本文介绍JSP HTTP服务器对JSP的支持,包括设计思路,设计要点和设计实施。

1. 规划思路

JSP HTTP服务器对JSP的支撑  HTTP服务器 第1张

通过JSP HTTP服务器对本地的JSP源文件进行解说,生成中心java源文件。继而调用javac编译东西将java源文件编译成为class文件。JSP HTTP服务器对class文件中界说的类进行载入并运转。

2. 规划关键

(1)对JSP文件语法的界说
(2)将JSP文件转换为java源文件
(3)编译java源文件
(4)载入java class并履行类目标的实例目标

3. 规划施行

(1)拟定JSP文件语法,并依据JSP语法方式将代码解说为java源文件考虑到JSP文件解说作业的简化,规划中首要考虑三种JSP语法方式,本规划中,对JSP文件中编译句子块的解说处理代码如下:

  1. //CurrentlinecontainJSPcompileblockstartflag
  2. if(line.indexOf("<%@")>=0)
  3. {
  4. //file.jspcontainscompiledheader
  5. is_has_compiled_header=true;
  6. //Thosestatementsinsameline.
  7. if(line.indexOf("%>")>=0)//JSPcimpileblockendflag
  8. {
  9. intstart=line.indexOf("<%@");
  10. intend=line.indexOf("%>");
  11. fout.println(line.substring(start+3,end));
  12. }
  13. else//Thosestatementsnoinsameline.
  14. {
  15. while(true)
  16. {
  17. line=fin.readLine();
  18. if(line==null)//Thecompiledheaderisbroken
  19. {
  20. return(false);
  21. }
  22. if(line.equals("%>")==true)//JSPcompiledblockendflag
  23. {
  24. break;
  25. }
  26. else
  27. {
  28. fout.println(line);//Outputthemiddlestatementsofcompiledheader
  29. }
  30. }//while(true)
  31. }
  32. }//if(line.indexOf("<%@")>=0)

以上处理代码是将JSP文件中编译句子块解说成java源文件。假如编译句子存在于一行之中,则将句子开端标志和完毕标志中心的编译句子取出构成java代码。假如编译句子块存在于多行之中,则将句子开端标志行和完毕标志行之间的编译句子行取出构成java代码。 本规划中,对JSP表达式句子解说处理代码如下:

  1. //CurrentlinecontainJSPexpression(mark"<%="and"%>"mustbeinsameline)
  2. if(line.indexOf("<%=")>=0)
  3. {
  4. //Getstartflagposition
  5. intstart=line.indexOf("<%=");
  6. //Getendflagposition
  7. intend=line.indexOf("%>");
  8. //GetfrontalpartofJSPexpressionblock
  9. Stringpre=line.substring(0,start);
  10. //Getexpressionfromline
  11. Stringexp=line.substring(start+3,end);
  12. //GetbackpartofJSPexpressionblock
  13. Stringback=line.substring(end+2);
  14. //Replacecharacter"offrontalpartandbackpartwithcharacter'
  15. prepre=pre.replace('\"','\'');
  16. backback=back.replace('\"','\'');
  17. //Outputthenewline(javastatement)
  18. fout.println("outln(\""+pre+"\"+"+exp+"+\""+back+"\");");
  19. }

以上代码中,首先是将JSP表达式地点的行依照表达式前部分,表达式和表达式后部分提取出来,通过符号替换之后再组成java句子。本规划中,对JSP句子块解析处理如下:

  1. //AstoJSPstatementsblock,mark"<%"and"%>"mustbeinsigleline
  2. while(true)
  3. {
  4. //Readnextline
  5. line=fin.readLine();
  6. if(line==null||line.equals("%>")==true)//JSPstatementsblockendflagis"%>"
  7. {
  8. break;
  9. }
  10. fout.println(line);
  11. }

以上JSP HTTP服务器代码中,将句子块开端标志行(<%)和完毕标志行(%>)之间的编译句子行取出构成java代码。

【修改引荐】

  1. 浅析JSP HTTP服务器支撑CGI
  2. 运用JSP页面生成PDF报表
  3. JSP自界说标签界说过程
  4. 详解测验JSP容器
  5. 介绍JSP HTTP服务器完成的以下特性
转载请说明出处
知优网 » JSP HTTP服务器对JSP的支撑

发表评论

您需要后才能发表评论