标签:
JSP(Java Server Page)和Servlet是JavaEE规范的两个基本成员,是JavaWeb开发的重点。
JSP的本质是Servlet,当用户向指定的Servlet发送请求时,Servlet利用输出流动态的生成HTML页面,包括每一个静态的HRML标签和所有在HTMl页面中出现的内容。
JSP页面内容由2个部分构成
1. JSP文件必须在JSP服务器内运行。
2. JSP文件必须生成Servlet才能执行。
3. 每个JSP页面的第一个访问者速度很慢,因为必须等JSP编译生成Servlet。
4. JSP页面的访问者无需安装任何客户端(包括Java环境),因为JSP页面输送到客户端的是标准的HTML页面。
JSP的基本语法与JAVA类似,以下为特殊的几个语法。
<%-- JSP注释部分,生成HTML后不显示 --%> <!-- 增加JSP注释,生成HTML后显示 -->
<%! 声明部分 %> <%-- 例子 --%> <%! public int count = 0; public String Greet() { count++; return "Hello for " + count + " times!"; } %>
该声明的部分所声明的成员变量及成员方法会转换成对于Servlet类的成员变量及成员方法。
当多次进入包含该声明部分的JSP页面时,可以发现count成员变量的值在持续改变。因为所有的客户端共享了同一个Servlet类,即共享同一个成员变量及成员方法等。这些变量及方法只有在Servlet类销毁后才不再保存。
<%= 表达式 %> <%-- 例子 --%> <%-- 将在页面输出3 --%> <%= 1 + 2 %> <%-- 将在页面输出1 --%> <%! public int a = 1; %> <%= a %>
可以利用<%%>中包含任何可执行的java代码。并且所有可执行的Java代码都可以利用JSP脚本嵌入HTML页面之中。
<ul> <% for (int i = 0; i < 10; i++) { %> <li><p>这是第<%= i %>行</p></li> <% } %> </ul>
需要注意的是,在JSP脚本部分声明的变量为局部变量,不能使用public,private这些访问控制符修饰,也不可使用static修饰。
使用以上编译指令格式如下
<%@ 编译指令名 属性名="属性值" %>
page指令位于JSP页面代码顶端,一个JSP页面可使用多条page指令。
属性名 | 属性值 | 默认值 |
language | 声明当前JSP页面使用脚本语言的种类 | JAVA |
extends | 指定JSP页面编译所产生的JAVA类所基础的父类 | 无 |
import | 用来导入包 | 默认导入java.lang.*、javax.servlet.*、javax.servlet.jsp.*、javax.servlet.http.* |
contentType | 设定生成网页的文件格式和编码字符集 | 格式:text/html,字符集:ISO-8859-1 |
pageEncoding | 生成网页的编码字符集 | 无 |
session | 设定这个JSP页面是否需要HTTPSession | 无 |
buffer | 指定输出缓冲区的大小,可设置none | 8KB |
autoFlush | 当输出缓冲区即将溢出时,是否需要强制输出缓冲区的内容,true为正常输出,false溢出时抛出溢出 | 无 |
info | 设置该JSP程序的信息,可看作说明,调用getSerletInfo()可获取 | 无 |
errorPage | 指定错误处理页面 | 无 |
isErrorPage | 设定本JSP页面是否为错误处理程序,若该页面已是错误处理程序,则无需设置errorPage值 | 无 |
<%-- 例子 --%>
<%@ page contentType="text/html; charset=utf8" language="java" errorPage="">
<%@ page import="java.util.*" %>
该指令可以使用在文件的任何位置。使用该指令,可以将一个外部文件嵌入到当前的JSP文件中,同时解析这个页面中的JSP语句。
include可以包含静态页面,也可以包含动态的JSP页面。
若被嵌入文件经常需要改变,则建议使用<jsp:include>,因为它是动态的包含。
<%-- 例子 --%> <%@ include file="exampleJSP" %> <jsp:include file="exampleJSP">
用于将页面响应转发到另外的页面(静态、动态或者Servlet)。
<%-- 例子 --%> <%-- jsp 1.0 --%> <jsp:forward page=""> <%-- jsp 1.1 及以上 --%> <jsp:forward page="xxx.jsp"> <jsp:param name="xx" value="xxx" /> </jsp:forward>
该指令转发请求,但客户端的请求参数不会改变,即用户请求的地址不会改变。
该指令是一个动态include指令。
<%-- 例子 --%> <jsp:inlcude page="xx.jsp" flush="true"> <jsp:param name="xxxx" value="xxx" /> </jsp:include>
flush属性用于指定输出缓存是否转移到被导入文件中。
true,则包含在其中。false,反之。
待更新
待更新
Servlet为服务器端小程序,是运行在服务器端的程序,用于处理及响应客户端的请求。
Servlet提供不同的方法用于响应客户端请求。
另外两个方法。
可看作“加强版“的Servlet,主要用于对用户请求进行预处理,也可以对HttpServletResponse进行后处理。
作用:
种类:用户授权的Filter,日志Filter,负责解码的Filter,能改变XML内容的XSLT Filter等等。
三种基本方法:
利用url rewrite可实现url的伪静态。
常用的Web事件监听器接口:
标签:
原文地址:http://www.cnblogs.com/wsy06/p/5295521.html