jsp学习总结

1. JSP基础语法

1.1 JSP表达式

<%=变量 %>相当于 <% out.println(变量) %>

1.2 JSP脚本片段

 <%
     多行java代码
%>

jsp脚本片断中的Java代码将被原封不动地放到Servlet的_jspService方法中

1.3 JSP声明

<%!
    java代码
%>

JSP声明中的java代码被翻译到_jspService方法的外面,可用于定义JSP页面转换成的Servlet程序的静态代码块、成员变量和方法

1.4 JSP注释

显式注释:直接使用HTML风格的注释:<!- - 注释内容- ->
隐式注释:直接使用JAVA的注释:///*……*/
JSP自己的注释:<%- - 注释内容- -%>

 <!--这个注释可以看见-->

<%
    //JAVA中的单行注释

    /*
        JAVA中的多行注释
    */
%>

<%--JSP自己的注释--%>

2. JSP指令

在JSP 2.0规范中共定义了三个指令:

  • page指令
  • Include指令
  • taglib指令

    JSP指令的基本语法格式:<%@ 指令 属性名="值" %>

2.1 page指令

 <%@ 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" ] 
%>

2.2 include指令

在JSP中对于包含有两种语句形式:@include指令和<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文件会被当作纯文本文件处理。

3. 内置对象

3.1 认识九个内置对象

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

3.2 pageContext对象

  pageContext对象是JSP技术中最重要的一个对象,它代表JSP页面的运行环境,这个对象不仅封装了对其它8大隐式对象的引用,它自身还是一个域对象(容器),可以用来保存数据。并且,这个对象还封装了web开发中经常涉及到的一些常用操作,例如引入和跳转其它资源、检索其它域对象中的属性等。

3.3 通过pageContext获得其他对象

  • getException方法返回exception隐式对象
  • getPage方法返回page隐式对象
  • getRequest方法返回request隐式对象
  • getResponse方法返回response隐式对象
  • getServletConfig方法返回config隐式对象
  • getServletContext方法返回application隐式对象
  • getSession方法返回session隐式对象
  • getOut方法返回out隐式对象

3.4 pageContext作为域对象

  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

4. JSP属性范围

  1. page属性范围(pageContext):只在本页中有效
  2. request属性范围:在一次服务器跳转中有效,只要是服务器跳转(forward),则设置的request属性可以一直传递下去
  3. session属性范围:服务器(forward)和客户端(href)跳转都有效,只针对一个用户
  4. application属性范围:在服务器上设置的一个属性,一旦设置之后任何用户都可以浏览到此属性。如果服务器关闭,此属性消失

补充:
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属性范围

5. JSP标签

jsp的常用标签有以下三个:

  • <jsp:include>标签
  • <jsp:forward>标签
  • <jsp:param>标签

5.1 <jsp:include>标签

<jsp:include>标签为动态包含,如果被包含的页面是JSP,则先处理之后再将结果包含,而如果包含的是非*.jsp文件,则只是把文件内容静态包含进来,功能与@include类似
语法:<jsp:include page="relativeURL | <%=expression%>" flush="true|false" />

5.2 <jsp:forward>标签

<jsp:forward>标签用于把请求转发给另外一个资源。(此跳转属于服务器端跳转。只要是服务器端跳转,地址栏就不会发生变化)
语法:<jsp:forward page="relativeURL | <%=expression%>" />

5.3 <jsp:param>标签

当使用<jsp:include><jsp:forward>标签引入或将请求转发给其它资源时,可以使用<jsp:param>标签向这个资源传递参数。
语法:

<jsp:include page="relativeURL | <%=expression%>">
    <jsp:param name="parameterName" value="parameterValue|<%= expression %>" />
</jsp:include>

<jsp:forward page="relativeURL | <%=expression%>">
    <jsp:param name="parameterName" value="parameterValue|<%= expression %>" />
</jsp:forward>

猜你喜欢

转载自blog.csdn.net/ca_co3/article/details/80541761