您的位置:首页 > Web前端 > JavaScript

JSP简介

2012-05-02 04:10 10 查看
JSP (Java Server Page) 其实就是一个以.jsp为文件名后缀的包含了2部分文本内容的页面,一部分是任意文本格式的静态数据,另一部分是用于构成动态内容的JSP元素。当你第一次访问该JSP页面的时候,Tomcat会自动将其转换为一个Servlet文件。为什么呢? 假如你建立了一个HelloWorld的jsp,那么系统会自动生成一个类HelloWorld_jsp,会继承HttpJspBase这个类,而这个类又是HttpServlet的子类,所以其实就是HttpServlet的子类,故就是HttpServlet。所以,当第一次被访问的时候,会稍微慢一些。

可以这样说,Servlet是被嵌入页面的Java,而JSP是嵌入了Java的HTML页面。也就是说,从服务器返回的页面其实是java代码的执行结果,只不过打印了HTML标签,所以成了一个HTML页面。

JSP相当于在HTML中嵌入了Java,通过服务器的JSP Engine转换成了Servlet,然后再将内容打印出来,这样很方便,就不用程序员自己将各种标签挨个通过print的方式打印出来了,那样实在是太不人性化了,使用JSP服务器自己就帮你转换好了。注意,只有当客户端第一次请求 JSP的时候,才需要进行转换和编译,这也是为什么第一次请求的时候会稍微慢一点。

把写好的jsp放在web app下面,当你访问它的时候,自动会生成一个.java和.class文件。

JSP的传统语法总共分为5种,Declarition,Scriptlet,Expression,Comment,Directives。

通常JSP的写法是在HTML中嵌入<% %>以及类似的语句,比如百分号后面加其它的符号,分别起着不同的作用。

<% %>叫做Scriptlet,这里面的变量会被写成方法的局部变量,也就是_jspService方法里面。这里面千万别定义方法,正式因为会被写到该方法的内部,造成无法编译。要声明方法只能到Declarition里面去声明,必须记住。还要记住的是,在服务器端,局部变量才是使用最多的。

<%! %>加了感叹号的,叫做Declarition,用于声明,比如变量,方法(其中,通常意义上的方法,除了输出语句,只能写在这里面),这里面的被写成类的成员变量和类方法。一般尽量少使用成员变量,如果要写成员变量,一般是计数之类的。

<%= %>加了等号的,相当于输出一个东西,在系统自动转换生成的servlet里面已经为你准备好了PrintWriter对象了,注意,这里面的表达式是没有分号。也就是说相当于这个标签的意思就是PrintWriter.print(...)

<%-- --%>里面装的是注释,注意,HTML的注释无法阻止服务器端代码的执行,但是如果你把服务器端代码放在HTML的注释里面<!-- 放在这里的话 -->,那么执行是不能阻止,但是并不能在客户端显示。

在这里要提醒一句,<% %>里面的内容是在服务器端执行的,先执行服务器端的东西,然后返回给客户端,再执行HTML和JavaScript,一定记住这个顺序再进行设计。(所以说,需要提醒的一点是,不要尝试在服务器代码上面,也就是JSP,Servlet代码里面加弹窗,或者界面之类的东西,它们会在服务器端执行,后果不堪设想)。

还有就是,你不要想让服务器和客户端的变量直接去通信,二者的变量其实没有关系,一个在服务器执行,执行完就完了,一个在客户端执行,并不相干。想通信有一个办法,那么就是服务器返回的要么是值,要么是一个表达式,表达式里面包含了客户端要进行运算的变量之类的。

举个例子:

<script>

<%= "var i=0;" %>

alert(i);

</script>

这样是可以的,因为先在服务器端点执行,执行出来的结果就是var i=0;这样的话就可以和客户端通信。但是那一行要是写成<% var i=0;%>就会出错,因为执行完了并不会返回任何东西,客户端的i就相当于没有声明。

记住,在测试的时候,多尝试清除缓寸,关闭浏览器,重启浏览器。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: