1.jsp技术
jsp是sun提供动态web资源开发技术。为了解决在Servlet中拼写html内容css、js内容十分不方便的问题,sun提供了这样一门技术。如果说Servlet是在java中嵌套HTML,则jsp就是在HTML中嵌套java代码,从而十分便于组织html页面
jsp页面在第一次被访问到时会被jsp翻译引擎翻译成一个Servlet,从此对这个jsp页面的访问都是由这个Servlet执行后进行输出
2.jsp语法
(1)JSP模版元素 :jsp页面中书写的HTML内容称作JSP的模版元素,在翻译过来的Servlet中直接被out.write()输出到浏览器页面上了
(2)JSP表达式 <%= java表达式 %> 在翻译过来的Servlet中,计算java表达式的值后,被out输出到浏览器上
(3)JSP脚本片断 <% 若干java语句 %> 在翻译过来的Servlet中,直接被复制粘贴到了对应的位置执行.
在一个JSP页面中可以有多个脚本片断,在两个或多个脚本片断之间可以嵌入文本、HTML标记和其他JSP元素
多个脚本片断中的代码可以相互访问,犹如将所有的代码放在一对<%%>之中的情况
单个脚本片断中的Java语句可以是不完整的,但是,多个脚本片断组合后的结果必须是完整的Java语句
(4)JSP声明 <%! 若干java语句 %> 在翻译过来的Servlet中会被放置到和Service方法同级的位置,变成了类的一个成员
(5)JSP注释
<%-- 注释的内容 --%> 被jsp注释注释掉的内容,在jsp翻译引擎将jsp翻译成Servlet的过程中会被丢弃,在翻译过来的Servlet中没有这些信息
<%//java注释%> java注释被当作jsp脚本片段被翻译到了Servlet中,在.java文件被翻译成.class文件的时候注释信息被丢弃
html注释被当作模版元素输出到了浏览器上,浏览器认识html注释不予显示
JSP指令
JSP标签
常用的jsp标签
<jsp:include>标签
<jsp:include>标签用于把另外一个资源的输出内容插入进当前JSP页面的输出内容之中,这种在JSP页面执行时的引入方式称之为动态引入。
语法:
<jsp:include page="relativeURL | <%e\=expression%>"flush="true|false" />
page属性用于指定被引入资源的相对路径,它也可以通过执行一个表达式来获得。
flush属性指定在插入其他资源的输出内容时,是否先将当前JSP页面的已输出的内容刷新到客户端。
<jsp:include>与include指令的比较
<jsp:include>标签是动态引入,<jsp:include>标签涉及到两个jsp页面就会被翻译成两个servlet,这两个servlet的内容在执行时进行合并。
include指令是静态引入,涉及到的两个jsp页面会被翻译成一个servlet,其内容是在原文件级别进行了合并。
不管是<jsp:include>标签,还是include指令,他们都会把两个jsp页面内容合并输出,所以这两个页面不要出现重复的HTML全局架构,否则输出给客户端的内容将会是一个格式混乱的HTML文档。
<jsp:forword>标签
<jsp:forward>标签用于把请求转发给另外一个资源。
语法
<jsp:forward page="relativeURL | <%=expression%>" />
page属性用于指定请求转发到的资源的相对路径,他也可以通过执行表达式来获得。
<jsp:param>标签
当使用<jsp:include>和<jsp:forward>标签引入或将请求转发给其他资源时,可以使用<jsp:param>标签向这个资源传奇参数。
语法1
<jsp:include page="relativeURL | <%=expression%>
<jsp:param name="parameterName" value="parameterValue|<%=expression%>"
<jsp:include>
语法2
<jsp:forword page="relativeURL | <%=expression%>
<jsp:param name="parameterName" value="parameterValue|<%=expression%>"
<jsp:include>
<jsp:param>标签的name属性用于指定参数名,value属性用于指定参数值,在<jsp:include>和<jsp:forword>标签中可以使用多个<jsp:param>标签来传递多个参数。
JSP内置对象