JSP开篇

来源:互联网 发布:java数组的定义 编辑:程序博客网 时间:2024/06/03 20:07

一、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>

2.4 JSP声明

语法:

<%!                        静态变量成员变量方法等%>示例:  <!-- 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!


声明中的代码会出现在翻译后的xxx_jsp.java文件t的_jspService()外面,即为jsp对应的Servlet声明成员变量和成员方法。

注意: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指令:。。。