<%=变量 %>
相当于 <% out.println(变量) %>
<%
多行java代码
%>
jsp脚本片断中的Java代码将被原封不动地放到Servlet的_jspService方法中
<%!
java代码
%>
JSP声明中的java代码被翻译到_jspService方法的外面,可用于定义JSP页面转换成的Servlet程序的静态代码块、成员变量和方法
显式注释:直接使用HTML风格的注释:
隐式注释:直接使用JAVA的注释://
、/*……*/
JSP自己的注释:<%- - 注释内容- -%>
<%
//JAVA中的单行注释
/*
JAVA中的多行注释
*/
%>
<%--JSP自己的注释--%>
在JSP 2.0规范中共定义了三个指令:
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="relative_url" ]
[ isErrorPage="true | false" ]
[ contentType="mimeType [ ;charset=characterSet ]" | "text/html; charset=ISO-8859-1" ]
[ pageEncoding="characterSet | ISO-8859-1" ]
[ isELIgnored="true | false" ]
%>
在JSP中对于包含有两种语句形式:@include
指令和
标签
语法:<%@ include file="relativeURL"%>
include指令用于引入其它JSP页面,如果使用include指令引入了其它JSP页面,那么JSP引擎将把这两个JSP翻译成一个servlet。所以include指令引入通常也称之为静态包含。
由于使用include指令将会涉及到2个JSP页面,并会把2个JSP翻译成一个servlet,所以这2个JSP页面的指令不能冲突(除了pageEncoding和导包除外)
补充:*.jspf扩展名文件
JSP规范建议使用.jspf(JSP fragments)作为静态引入文件的扩展名。
只有用"@include"指令的时候,jspf文件的内容才会被解析并执行其中的jsp指令和tag,而使用"jsp:include",jspf文件会被当作纯文本文件处理。
NO | 内置对象 | 类型 |
---|---|---|
1 | pageContext | javax.servlet.jsp.PageContext |
2 | request | javax.servlet.http.HttpServletRequest |
3 | response | javax.servlet.http.HttpServletResponse |
4 | session | javax.servlet.http.HttpSession |
5 | application | javax.servlet.ServletContext |
6 | config | javax.servlet.ServletConfig |
7 | out | javax.servlet.jsp.JspWriter |
8 | page | java.lang.Object |
9 | exception | java.lang.Throwable |
pageContext对象是JSP技术中最重要的一个对象,它代表JSP页面的运行环境,这个对象不仅封装了对其它8大隐式对象的引用,它自身还是一个域对象(容器),可以用来保存数据。并且,这个对象还封装了web开发中经常涉及到的一些常用操作,例如引入和跳转其它资源、检索其它域对象中的属性等。
pageContext对象可以作为容器来使用,因此可以将一些数据存储在pageContext对象中。
public void setAttribute(java.lang.String name,java.lang.Object value)
public java.lang.Object getAttribute(java.lang.String name)
public void removeAttribute(java.lang.String name)
public java.lang.Object findAttribute(java.lang.String name)
findAttribute方法按照查找顺序"page→request→session→application"在这四个对象中去查找,只要找到了就返回属性值,如果四个对象都没有找到要查找的属性,则返回一个null
补充:
PageContext类继承了JspContext类,在JspContext类中定义了setAttribute方法,如下:
public abstract void setAttribute(String name,Object value,int scope)
scope参数默认为PAGE_SCOPE,此时setAttribute()方法设置的就是page属性范围,如果传递过来的参数scope为REQUEST_SCOPE、SESSION_SCOPE或APPLICATION_SCOPE时,则此时setAttribute()方法设置的就是request属性范围、session属性范围或application属性范围
jsp的常用标签有以下三个:
标签
标签
标签
标签
标签为动态包含,如果被包含的页面是JSP,则先处理之后再将结果包含,而如果包含的是非*.jsp文件,则只是把文件内容静态包含进来,功能与@include类似
语法:
标签
标签用于把请求转发给另外一个资源。(此跳转属于服务器端跳转。只要是服务器端跳转,地址栏就不会发生变化)
语法:
标签当使用
和
标签引入或将请求转发给其它资源时,可以使用
标签向这个资源传递参数。
语法: