一、JSP(Java Server Page)是一种动态网页技术,允许在页面中嵌套java代码,其本质就是servlet。因为servlet显示数据实现太麻烦。继而有了JSP。开发一般采用JSP负责数据显示,而servlet作为控制器。让JSP既用java代码产生动态数据,又做美化会导致页面难以维护。让servlet既产生数据,又在里面嵌套html代码美化数据,同样也会导致程序可读性差,难以维护。
1.IE浏览器访问JSP页面时,Web服务器是如何调用并执行一个jsp页面的?(Servlet)
web服务器会把xxx.jsp翻译成xxx_jsp.java(其实就是一个servlet,我们可以看tomcat根目录下的word文件夹下找到该文件)文件再编译成可运行xxx_jsp.class文件
2 Web服务器在执行jsp页面时,是如何把Jsp页面中的html排版标签是如何被发送到客户端的?
out.write(" </head>\r\n");
3.Jsp页面中的java代码服务器是如何执行的
java代码会原封不动的翻译到xxx_jsp.java文件的jspService()方法中。
4.Web服务器在调用jsp时,会给jsp提供一些什么java对象?
9个隐式对象,其中2个有开关,需要设置true ,fasle
二 JSP语法
2.1JSP模板元素:JSP中的HTML代码,它定义了网页的结构的和外观。
2.2JSP表达式: 语法:<% =表达式或变量%> 示例:<%= new Date()%> 注意:后面不能加分号!!!
2.3 JSP脚本片段:
<%
若干java代码 注意:脚本片段的java代码严格遵循java语法,分号";"不能少!
%>
在一个jsp页面中可以由多个jsp脚本片段,在他们之间可以插入文本、图片其他JSP元素等
<% int x = 10; out.println(x); //out.println(y);//error %> <p>这是JSP页面文本</p> <% int y = 20; out.println(y); out.println(x); %>多个脚本片段的代码可以相互访问。为什么?因为 JSP中java都会原封不动的翻译成.java文件,把这些语句都放在jspService()方法中,在java语法中OK的 JSP亦可。
备注:正规开发中的JSP中不应出现java脚本:标签封装
单个脚本片段可以是不完整的
如:
<% Student s1 = new Student("1","张三"); Student s2 = new Student("2","李四"); Student s3 = new Student("3","王五"); List list =new ArrayList(); list.add(s1); list.add(s2); list.add(s3); %> <table border="1"> <tr> <th>id</th> <th>name</th> </tr> <% for(Object o:list){ Student s = (Student)o; %> <tr> <th><%= s.getId() %></th> <th><%=s.getName() %></th> </tr> <% }%> -----结束在另外一个脚本片段 </table>
语法:
<%! 静态变量 成员变量 方法等 %> 示例: <!-- JSP声明 (以下代码会在控制台输出OK) --> <%! int x=5; public static int y=10; public void fun() { System.out.print("ok"); } %> <% fun();%>
<%! static { System.out.println("loading Servlet!"); } private int globalVar = 0; public void jspInit() { System.out.println("initializing jsp!"); } %> <%! public void jspDestroy() { System.out.println("destroying jsp!"); } %> //输出:loading Servlet! destroying jsp!
注意:JSP声明中不能使用JSP提供的九个隐式对象,九个隐式对象只能在_jspService()方法中使用,即jsp脚本片段中使用是OK的
2.5 JSP注释
语法 :<%-- 注释信息--%> ---这是JSP的注释,翻译的时候会被完全忽略
在JSP脚本片段和JSP声明中可以使用 java语法中单行//和多行/**/注释也会被容器的引擎忽略掉
<!-- HTML注释 -->也可以使用,但我们可以在JSP网页的查看源文件中看到注释。
三 JSP指令
JSP指令(directive)是为JSP引擎而设计的,它们并不直接产生任何可见输出,而只是告诉引擎如何处理JSP页面中的其余部分。在JSP 2.0规范中共定义了三个指令:
page指令
Include指令
taglib指令:。。。