一、JSP简介 JSP (Java Server Pages)是服务器端的脚本语言,是一种在HTML页面中加入Java语言而生成动态页面的技术:加入了新的标签(<%,%>,…)。 JSP是以Java和Servlet为基础开发而成的动态网页生成技术,它的底层实现是Java Servlet。 JSP页面由HTML代码和嵌入其中的Java代码所组成。服务器在页面被客户端所请求以后对这些Java代码进行处理,然后将生成的HTML页面返回给客户端的浏览器。 二、JSP的执行过程 客户端请求JSP页面——>JSP Parser解析*.jsp编译为*.java——>javac命令编译成*.class——>执行class文件——>响应返回结果给客户端 JSP代码中包含JSP元素和Template data两类。Template data指的是JSP引擎不处理的部分,就是JSP引擎会把除在标记<%...%>以外的部分直接传递出去而不进行任何处理。 JSP在第一次或修改JSP文件后执行都会调用JSP Parser将*.jsp文件编译成servlet程序,所以会比较慢。 三、JSP基本语法 1. 两种注释类型 (1)HTML注释 可以在JSP代码中添加一段HTML格式的注释,此注释发生到客户端,但不在页面上显示,语法如下: <!-- HTML格式的注释,在客户端查看源代码时可见 --> <!-- 此注释由<%=programmer%>添加--> 如果programmer为hackiller,则在客户端返回的注释是<!-- 此注释由hackiller添加--> (2)JSP注释 写在JSP代码中,但不发送到客户端。 <%-- JSP注释,该注释会在JSP编译时被忽略掉 --%> <%-- /*Scriptlet中的多行注释*/ --%> <%-- /**Scriptlet中的多行注释,可以用javadoc从java文件中提取出来*/ --%> <%-- JSP的单行注释 --%> 2. 3个脚本元素 (1)声明(Declaration)全局变量 <%! int i=0; String str="Hello World!"; %> (2)表达式(Expression) 在JSP代码中,经常使用表达式来输出变量的值,可以在任何地方 <%! int a=1; int b=2; String str="Hello World!"; %> <%=a+b%> <%=str> PS:不能用“;”号来作为表达式的结束符。但同样的表达式在Scriptlet中必须以分号来结尾。 (3)脚本段(Scriptlet) 脚本段用来包含一个有效地Java程序段 <% int b=3; %>局部变量 3. 3个指令元素 (1)page指令 <%@ page contentType="text/html;charset=utf-8"%> 定义JSP文件的全局属性,属性包括:language、extends、import、session、buffer、autoflush、isThreadSafe、info、errorPage、isErrorPage、contentType(服务端到客户端的输出格式) 其位置可以在页面的任何位置,但推荐放在页首。 language:声明脚本语言的种类,目前只能用"java"。 extends:标明JSP编译时需要加入的Java Class的全名,它会限制JSP的编译能力,慎用! import:需要导入的java包列表。 session:设定客户是否需要HTTP Session。默认为true。 buffer:buffer的大小被out对象用于处理执行后的JSP对客户浏览器的输出。默认值为8Kb。 autoFlush:设置如果buffer溢出,是否要强制输出,如果定义其为true(默认值),输出正常;如果定义为false,会导致一个意外错误的发生。 isThreadSafe:设置JSP文件是否能多线程使用。默认为true。 info:文本信息。能够使用Servlet.getServletInfo()方法取回。 errorPage:设置处理异常事件的JSP文件 sErrorPage:设置此页是否为处理异常事件的页面,如果设置为true,就能使用exception对象。 contentType:设置MIME类型和字符编码集。MIME类型默认为text/html,字符集默认为charset=ISO-8859-1。 可以在一个页面中使用多个<%@page %>指令,但是除了import属性,其他的属性只能使用一次。 JSP缺省引入的包,下面这些包在JSP编译时已经导入了,所以在JSP文件中无需再用page指令引入: java.lang.* javax.servlet.* javax.servlet.jsp.* javax.servlet.http.* (2)include指令 Html代码 <%@ include file = "相对路径" %> 使用include指令可以在JSP中包含一个静态的文件,同时解析这个文件中JSP语句。 如果路径以“/”开头,那么此路径主要是参照jsp应用的上下文关系路径。 如果路径以文件名或文件目录开通,那么此路径就是正在使用的JSP文件的当前路径。 (3)taglib指令 Html代码 <%@ taglib uri = "TagLibrary" prefix = "mypfx" %> 是用taglib指令定义一个标签库及其自定义的前缀。 uri:Uniform Resource Identifier根据标签的前缀对自定义的标签进行唯一的命名,可以是一个相对或绝对的路径 prefix:自定义标签的前缀。不要使用jsp、jspx、java、javax、servlet、sun、sunw作为前缀,这些已被Sun公司声明保留。 4. 8个动作指令 (1)页面跳转:<jsp:forward> <jsp:forward>标签从一个jsp文件向另外一个文件传递一个包含用户请求的request对象。 共包含2个属性 page属性是一个表达式或是一个字符串用于说明将要定向的文件或URL。 <jsp:param>向一个动态文件发送一个或多个参数。如果使用了<jsp:param>标签,目标文件必须是动态的文件(如Servlet或者JSP等) Html代码 <jsp:forward page=test.jsp> <jsp:param name="username" value="<%=user%>"/> <jsp:param name="password" value="12345678"/> </jsp:forward> 通过request.getParameter("username")获取用户名 (2)包含页面:<jsp:include> <jsp:include>允许包含静态和动态Web资源,这两种包含的结果是不同的。 如果包含的仅是静态文件,那么这种包含仅仅是把包含文件的内容加到JSP文件中去,类似于<%@include%>; 如果包含的是动态web资源,那么这个被包含的文件也会被JSP编译器执行。 如果这个包含文件是动态的,那么还可以使用<jsp:param》传递参数和参数值。 (责任编辑:admin) |