JSP全称为java server page,即java服务器页面技术,广泛应用于动态页面中。它包括了静态部分与动态部分,是运行于服务器中的一种页面技术。因为它的HTML里边有可能会包含了java代码,而浏览器端是不存在编译器的,所以只能在服务器中运行,以完成编译,运行的过程,最后再返回html到客户端(具体的过程,会在下文中详细解释)。
首先我们来进行JSP页面的结构分析。前面讲到,一共分两大部分。
静态部分:包括html,css,javascript(包括注释)。
动态部分:就是新接触到的JSP元素。
(注意,所谓动态,不是指网站上的动画之类,而是会随着服务器数据变动而改变显示内容的部分。
动态部分又分为如下几种元素:
1.指令
第一类是编译指令,顾名思义是指在编译时起作用,而不会有任何输出,例子如下:
<%@ page 属性名="值" %> 导入的类的说明, 编码集
<%@ include file="文件名.jsp" %> 包含另一个页面,这将有利于减少代码的冗余( 公用的模块 )
<%@ taglib prefix="前缀名" uri="定义标签地址" %> 导入标签库.
例: <%@ page language="java" import="java.util.*" pageEncoding="UTF-8" contentType="text/html; charset=utf-8"%>
这是在myecilpse中创建JSP页面时自动生成的一段编译指令。
第二类是动作指令,一般进行一些动作处理,因为这些指令破坏了一贯的MVC架构,不建议使用,稍作了解即可。
2.脚本
第一类是小脚本,就是最普通的脚本。是进行逻辑和业务操作的java代码段。格式如: <% Java代码 %>
第二类是声明,作用基本上是跟小脚本相同,但是小脚本是局部的,而声明可以定义全局的。格式如: <!% 代码 %>(下面会有详细说明)
第三类是表达式,用于输出,格式: <%=值 %>
3.注释,就是注释,但要注意跟html注释的不一样地方,格式: <% //我是注释 %>(下边也会有详细说明。)
4.九大内置对象,这是JSP的一个重点所在,详情上csdn其他博客上找找。
下边,是对九九乘法表进行输出的三种不同的表达方式:
小脚本方式:
<%
//九九乘法表
for(int i=1;i<=9;i++){
for(int j=1;j<=i;j++){
System.out.println(i+"*"+j+"="+(i*j)+"\t");
}
System.out.println();
}
%>
利用内置对象输出:
<%
//九九乘法表,内置对象方法输出
for(int i=1;i<=9;i++){
for(int j=1;j<=i;j++){
out.println(i+"*"+j+"="+(i*j)+" ");
}
out.println("<br/>");
}
%>
表达式输出:
<%
//九九乘法表,表达式方法输出
for(int i=1;i<=9;i++){
for(int j=1;j<=i;j++){
%>
<%=i%> * <%=j%> = <%=i*j%>
<%
}
%>
<br/>
<%
}
%>
接下来说一下JSP中的一些注意事项。第一,是静态包含,include包含的是java源代码,即将两个页面的jsp代码翻译成java后,再合并到一起,然后进行编译,所以要避免两个页面中出现的相同的变量发生冲突。第二,小脚本与声明的不同,脚本中定义的变量是局部变量,而加了!的声明中的是全局变量,且脚本中不能定义方法,但是声明中可以定义方法。第三,关于注释。HTML注释是会跟随生成的HTML页面一起发送到客户端中,用户可以查看底层页面看到HTML代码的。所以HTML解释是会耗流量,不建议多用。而JSP注释是跟JSP其他元素一样只存在于服务器端,编译后生成的HTML页面中是不会包括JSP注释的,而不会发送到客户端去的,不会消耗流量。
最后说一说当我们从浏览器发出URL请求之后所发生的一系列动作,这有助于我们了解JSP整个过程中的作用。发出URL之后,浏览器会根据URL去找到所在的服务器上的JSP页面,JSP页面会根据页面中的JAVA小脚本进行编译成JAVA文件,再运行JAVA文件,从数据库调取相关数据生成指定的HTML页面,最终将HTML页面返回给用户,最后呈现出我们平时所看到的网页。
首先我们来进行JSP页面的结构分析。前面讲到,一共分两大部分。
静态部分:包括html,css,javascript(包括注释)。
动态部分:就是新接触到的JSP元素。
(注意,所谓动态,不是指网站上的动画之类,而是会随着服务器数据变动而改变显示内容的部分。
动态部分又分为如下几种元素:
1.指令
第一类是编译指令,顾名思义是指在编译时起作用,而不会有任何输出,例子如下:
<%@ page 属性名="值" %> 导入的类的说明, 编码集
<%@ include file="文件名.jsp" %> 包含另一个页面,这将有利于减少代码的冗余( 公用的模块 )
<%@ taglib prefix="前缀名" uri="定义标签地址" %> 导入标签库.
例: <%@ page language="java" import="java.util.*" pageEncoding="UTF-8" contentType="text/html; charset=utf-8"%>
这是在myecilpse中创建JSP页面时自动生成的一段编译指令。
第二类是动作指令,一般进行一些动作处理,因为这些指令破坏了一贯的MVC架构,不建议使用,稍作了解即可。
2.脚本
第一类是小脚本,就是最普通的脚本。是进行逻辑和业务操作的java代码段。格式如: <% Java代码 %>
第二类是声明,作用基本上是跟小脚本相同,但是小脚本是局部的,而声明可以定义全局的。格式如: <!% 代码 %>(下面会有详细说明)
第三类是表达式,用于输出,格式: <%=值 %>
3.注释,就是注释,但要注意跟html注释的不一样地方,格式: <% //我是注释 %>(下边也会有详细说明。)
4.九大内置对象,这是JSP的一个重点所在,详情上csdn其他博客上找找。
下边,是对九九乘法表进行输出的三种不同的表达方式:
小脚本方式:
<%
//九九乘法表
for(int i=1;i<=9;i++){
for(int j=1;j<=i;j++){
System.out.println(i+"*"+j+"="+(i*j)+"\t");
}
System.out.println();
}
%>
利用内置对象输出:
<%
//九九乘法表,内置对象方法输出
for(int i=1;i<=9;i++){
for(int j=1;j<=i;j++){
out.println(i+"*"+j+"="+(i*j)+" ");
}
out.println("<br/>");
}
%>
表达式输出:
<%
//九九乘法表,表达式方法输出
for(int i=1;i<=9;i++){
for(int j=1;j<=i;j++){
%>
<%=i%> * <%=j%> = <%=i*j%>
<%
}
%>
<br/>
<%
}
%>
接下来说一下JSP中的一些注意事项。第一,是静态包含,include包含的是java源代码,即将两个页面的jsp代码翻译成java后,再合并到一起,然后进行编译,所以要避免两个页面中出现的相同的变量发生冲突。第二,小脚本与声明的不同,脚本中定义的变量是局部变量,而加了!的声明中的是全局变量,且脚本中不能定义方法,但是声明中可以定义方法。第三,关于注释。HTML注释是会跟随生成的HTML页面一起发送到客户端中,用户可以查看底层页面看到HTML代码的。所以HTML解释是会耗流量,不建议多用。而JSP注释是跟JSP其他元素一样只存在于服务器端,编译后生成的HTML页面中是不会包括JSP注释的,而不会发送到客户端去的,不会消耗流量。
最后说一说当我们从浏览器发出URL请求之后所发生的一系列动作,这有助于我们了解JSP整个过程中的作用。发出URL之后,浏览器会根据URL去找到所在的服务器上的JSP页面,JSP页面会根据页面中的JAVA小脚本进行编译成JAVA文件,再运行JAVA文件,从数据库调取相关数据生成指定的HTML页面,最终将HTML页面返回给用户,最后呈现出我们平时所看到的网页。