1、2种注释类型:
1.HTML注释(发送到客户端): <!-注释<%表达式%>注释->
2.JSP注释是(不发送到客户端):<%--注释--%>
2、3种脚本元素:
1.声明:<%int i=0;%>
2.表达式:<%=i%>
3.脚本段:<%代码%>
3、3个指令元素:
1.page指令:用于定义JSP全局属性。(关于属性详情可以百度)
<%@ page
[ language="java" ]
[ extends="package.class" ]
[ import="{package.class | package.*}, ..." ]
[ session="true | false" ]
[ buffer="none | 8kb | sizekb" ]
[ autoFlush="true | false" ]
[ isThreadSafe="true | false" ]
[ info="text" ]
[ errorPage="relativeURL" ]
[ contentType="mimeType [ ;charset=characterSet ]" | "text/html ; charset=ISO-8859-1" ]
[ isErrorPage="true | false" ]
%>
2.include指令:可以在JSP中包含一个静态文件。
—将被包含页面中的代码复制粘贴到主页面中,最后编译形成主页面的类文件(一个),将两个JSP文件翻译成一个Servlet。
—file属性的值必须是项目中已存在的文件,否则主页面报异常
—如果被包含页面内容改变,主页面会即时改变
3.taglib指令:定义一个标签库以及其自定义标签的前缀。
taglib指令作用:引用外部标签
taglib指令语法: <%@taglib uri=”标签名称空间” prefix=”前缀”%>
<%@ taglib uri="http://www.jspcentral.com/tags" prefix="public" %>
<public:loop>
<%执行代码%>
</public:loop>
4、9大内置对象:
不用实例化,直接使用
JSP的内置对象引用名称--------》对应的类型
request-------------HttpServletRequest
response-----------HttpServletResponse
session-------------HttpSession(有开关的:page指令的session属性的取值)
application--------ServletContext
config--------------ServletConfig
page---------------this(当前Servlet对象)
exception---------java.lang.Throwable(有开关的:page指令的isErrorPage属性改为true)
out-----------------JspWriter
pageContext-----javax.servlet.jsp.PageContext非常重要
5、4大域对象:(两个资源之间互传数据)
JSP中隐式对象的名称 范围名称 具体的类型
pageContext page javax.servlet.jsp.PageContext
request request javax.servlet.ServletRequest (显示完数据就没有用了)
session session javax.servlet.http.HttpSession (显示完数据了,过一会自己还要用)
application application javax.servlet.ServletContext (显示完数据了,过一会大家都要用。不建议使用,如果使用,必须同步处理)
范围比较:
pageContext<ServletRequest<HttpSession<ServletContext
(对应:page<request<session<application)
(注意:当同时调用几个域对象的时候,范围小的优先)
(提醒:其实域对象就是个Map容器,装载对象/数据的)
代码举例:(pageContext可以控制其他3个域对象)
pageContext.setAttribute("p","pp0",PageContext.PAGE_SCOPE);
pageContext.setAttribute("p","pp1",PageContext.REQUEST_SCOPE);
pageContext.setAttribute("p","pp2",PageContext.SESSION_SCOPE);
pageContext.setAttribute("p","pp3",PageContext.APPLICATION_SCOPE);
6、7大动作指令:
1、jsp:forward:页面转发
<jsp:forward page="relativeURL|<%=expression%>"/>
----------or----------
<jsp:forward page="relativeURL|<%=expression%>">
<jsp:param name="" value="">
</jsp:forward>
2、jsp:param:传递参数
<jsp:param name="" value="">
3、jsp:include:动态包含
<jsp:include page="relativeURL|<%=expression%>"/>
----------or----------
<jsp:include page="relativeURL|<%=expression%>">
<jsp:param name="" value="">
</jsp:include>
4、jsp:useBean:初始化实例
<jsp:useBean id="name" classname="" scope="page|request|session|application"/>
作用:用于在指定域范围内查找指定名称的JavaBean对象,找到了就直接使用;没有找到,创建一个,并放到指定的域范围内。
id:javaBean的实例名。
classname:JavaBean的完整类名。
scope:域范围。默认是page范围。(可选值:page request session application)
5、jsp:setProperty:设置属性参数值
<jsp:setProperty property="a" name="name" value="hello"/>
作用:调用JavaBean的setter方法。(还能自动类型转换,仅限基本类型)
property:需要设置的属性名。
name:javaBean的实例名。(jsp:useBean中的id的取值)
value:需要设置的属性值。
6、jsp:getProperty:获取属性参数值
<jsp:getProperty property="a" name="name"/>
作用:调用JavaBean的getter方法。
property:需要设置的属性名。
name:javaBean的实例名。(jsp:useBean中的id的取值)
7、jsp:plugin:在客户端执行Applet,需要JVM/Java插件支持
<jsp:plugin
type="bean | applet"
code="classFileName"
codebase="classFileDirectoryName"
[ name="instanceName" ]
[ archive="URIToArchive, ..." ]
[ align="bottom | top | middle | left | right" ]
[ height="displayPixels" ]
[ width="displayPixels" ]
[ hspace="leftRightPixels" ]
[ vspace="topBottomPixels" ]
[ jreversion="JREVersionNumber | 1.1" ]
[ nspluginurl="URLToPlugin" ]
[ iepluginurl="URLToPlugin" ] >
[ <jsp:params>
[ <jsp:param name="parameterName"
value="{parameterValue | <%= expression %>}" /> ]+
</jsp:params> ]
[ <jsp:fallback> text message for user </jsp:fallback> ]
</jsp:plugin>
例子:
<jsp:plugin type=applet code="Molecule.class" codebase="/html">
<jsp:params>
<jsp:param name="molecule" value="molecules/benzene.mol" />
</jsp:params>
<jsp:fallback>
<p>Unable to load applet</p>
</jsp:fallback>
</jsp:plugin>
注意细节:
1.jsp指令是为了JSP引擎而设计的,不产生任何可见输出,只是告诉引擎如何处理JSP页面中其余的部分。
2.include指令为静态包含,<jsp:include page""/>为动态包含,为了效率尽量使用动态包含。