首先:因为Servlet中编写HTML标签的时候非常繁琐,而且Servlet的文本和HTML标签的更改都必须重新编译,所以出现了对Servlet的补充--jsp。jsp本质是Servlet。
jsp页面包括两种东西:模板数据(html和文本)和句法元素(例如<%).
实质:当容器第一次调用完jsp时,会被转换为一个Servlet文件,其中jsp主题内容会被转换成service方法。
隐式对象:相当于在jsp页面访问Servlet API。
九大隐式对象:
pageContext:它提供我们常见的setAttribute和getAttribute方法,其中属性保存在page,request,session,application范围中(page中的属性只能在同一个jsp页面使用),
setAttribute(String name,Object value, int scope)其中scope为PAGE_SCOPE,,SESSION_SCOPE,APPLICATION_SCOPE,例如:
<%
pageContext.setAttribute("param",param,REQUEST_SCOPE);
%>
和<%
request.setAttribute("param",param);
%>
一样,还有就是可以通过方法pageContext.getRequest()获得隐式对象request,其他对象依次类推。
page:一般不用,哈哈,可以偷懒了。
指令:他是句法元素,它是指示jsp转换器怎么转换jsp为servlet的命令。
1.page指令:说明这个jsp页面可以用哪些java类型,out可以有多大的缓冲区等
语法:<%@ page attribute="value" .......%>
常用:
import--指定导入需要的java类型一种或者多种。如import=“java.util.List" import=“java.util.List,java.util.ArrayList" ,需要注意java.lang javax.servlet javax.servlet.http
java.servlet.jsp是隐式导入的。
contentType--该页面的隐式对象response的内容类型,默认为text/html。
pageEncodeing--给页面的字符编码,默认为ISO-8859-1。
language--指定该页面脚本的语言,默认为java。
errorPage--指定处理本页面错误的页面,值是另一个jsp。
因为contentType和pageEncodeing必须在页面发送之前设置,所以最好把page指令一律放在页面最开始。
2.include指令
将一个jspf文件内容放入同一目录下的另一个jsp文件里。例如:<%@ include file="**.jspf"%>(注意后缀名为.jspf)。
脚本元素:也是句法元素,其中有三种类型:Scriptlet,声明,表达式。
1.Scriptlet:java代码块儿,例如:<% System.out.print(""); %>。
注意:一个页面的java代码块儿,在前面定义的变量对于后面来说是可见的。
2.表达式:略。
3.声明:在jsp页面声明变量和方法。例如:
<%!
public String getTodaysDate(){
return new java.util.Date();
}
%>(用来返回时间)
<html>
<head><title>showTime</title></head>
<body>
<%=getTodaysDate()%>
</body>
</html>
声明放在任何位置。
3.关闭脚本句法元素。
因为使用EL表达式更方便,所以更少在jsp里面写java代码。关闭方法:略。
动作:另一个句法元素。例如访问java对象,执行某个方法。
1.例如:<jsp:usebean id="today" class="java.util.Date"/>
<%=today%>这就相当new了一个Date对象,赋值给today并打印。
2.set/getProperty.略
3.incluse.略
4.<jsp:forward page="index.jsp"></jsp:foeward>跳转页面。