JSP开篇

一、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指令:。。。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值