本文介绍JSP HTTP服务器对JSP的支持,包括设计思路,设计要点和设计实施。
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文件中编译句子块的解说处理代码如下:
- //CurrentlinecontainJSPcompileblockstartflag
- if(line.indexOf("<%@")>=0)
- {
- //file.jspcontainscompiledheader
- is_has_compiled_header=true;
- //Thosestatementsinsameline.
- if(line.indexOf("%>")>=0)//JSPcimpileblockendflag
- {
- intstart=line.indexOf("<%@");
- intend=line.indexOf("%>");
- fout.println(line.substring(start+3,end));
- }
- else//Thosestatementsnoinsameline.
- {
- while(true)
- {
- line=fin.readLine();
- if(line==null)//Thecompiledheaderisbroken
- {
- return(false);
- }
- if(line.equals("%>")==true)//JSPcompiledblockendflag
- {
- break;
- }
- else
- {
- fout.println(line);//Outputthemiddlestatementsofcompiledheader
- }
- }//while(true)
- }
- }//if(line.indexOf("<%@")>=0)
以上处理代码是将JSP文件中编译句子块解说成java源文件。假如编译句子存在于一行之中,则将句子开端标志和完毕标志中心的编译句子取出构成java代码。假如编译句子块存在于多行之中,则将句子开端标志行和完毕标志行之间的编译句子行取出构成java代码。 本规划中,对JSP表达式句子解说处理代码如下:
- //CurrentlinecontainJSPexpression(mark"<%="and"%>"mustbeinsameline)
- if(line.indexOf("<%=")>=0)
- {
- //Getstartflagposition
- intstart=line.indexOf("<%=");
- //Getendflagposition
- intend=line.indexOf("%>");
- //GetfrontalpartofJSPexpressionblock
- Stringpre=line.substring(0,start);
- //Getexpressionfromline
- Stringexp=line.substring(start+3,end);
- //GetbackpartofJSPexpressionblock
- Stringback=line.substring(end+2);
- //Replacecharacter"offrontalpartandbackpartwithcharacter'
- prepre=pre.replace('\"','\'');
- backback=back.replace('\"','\'');
- //Outputthenewline(javastatement)
- fout.println("outln(\""+pre+"\"+"+exp+"+\""+back+"\");");
- }
以上代码中,首先是将JSP表达式地点的行依照表达式前部分,表达式和表达式后部分提取出来,通过符号替换之后再组成java句子。本规划中,对JSP句子块解析处理如下:
- //AstoJSPstatementsblock,mark"<%"and"%>"mustbeinsigleline
- while(true)
- {
- //Readnextline
- line=fin.readLine();
- if(line==null||line.equals("%>")==true)//JSPstatementsblockendflagis"%>"
- {
- break;
- }
- fout.println(line);
- }
以上JSP HTTP服务器代码中,将句子块开端标志行(<%)和完毕标志行(%>)之间的编译句子行取出构成java代码。
【修改引荐】
- 浅析JSP HTTP服务器支撑CGI
- 运用JSP页面生成PDF报表
- JSP自界说标签界说过程
- 详解测验JSP容器
- 介绍JSP HTTP服务器完成的以下特性
转载请说明出处
知优网 » JSP HTTP服务器对JSP的支撑
知优网 » JSP HTTP服务器对JSP的支撑