JSP入门

一、引入

JSP(Java Server Pages):以Java语言为基础的动态网页开发技术。在html代码中嵌套Java代码。JSP的目的是将数据处理与页面显示分离。

二、工作原理

当一个JSP页面被第一次请求是,服务器首先将JSP文件转换为一个实现了HttpServlet接口的Java源代码,然后编译该Java源代码,生成.class 的字节码文件,之后服务器将class文件加载到内存。然后服务器会创建该Servlet的实例,对该JSP页面的请求会有该Servlet来完成响应。
JSP本质上还是一个Servlet

三、JSP语法

1、 脚本元素

(1)、声明标签

用途:成员变量和成员方法的声明,声明的变量是全局变量,声明的方法将转换为Servlet的方法,此标签中的内容在JSP引擎产生Servlet文件是直接拷贝到当前Servlet类中,Java类中可以放置的内容均可以放置在此处

<%! 
    private int num = 10;
    public static String getName(){
        return "jingxin";
    }
    public void print(){
        System.out.println("hello");
    }
%>

(2)、表达式标签

用途:表达式的计算结果转换成字符串,使用隐含对象out进行输出,结果显示在页面中标签所在的位置,等价于out.print(表达式)

<%= num1+num2 %>

(3)、代码块标签

用途:一个JSP页面可以有许多代码块,这些代码块将被JSP服务器按照顺序执行,JSP引擎会将此标签中的内容直接拷贝到Servlet的service方法中,此标签中只能放置可以在一个方法中放置的内容,声明的变量是局部变量,不能定义方法

<%
    int a = 100;
    out.print(a);
    out.print(getName());
    this.method();
%>

2、JSP注释

JSP有两种注释

(1)、JSP注释

注释内容不会被发送至浏览器甚至不会被编译

<%--注释 --%>

(2)、HTML注释

通过浏览器查看源代码时可以看见注释内容

<!-- 注释 -->

四、JSP指令

(一)、作用

配置页面信息,提供给JSP引擎生成Java代码

(二)、格式

指令可以放置在JSP页面的任何位置,但建议放在页面头部

<%@ 指令名 attribute="value"  %>

(三)、page 指令

定义网页依赖属性,比如脚本语言、error页面、缓存需求等等。
1. pageEncoding:JSP页面的字符编码,优先权高于contentType

<%@page pageEncoding="utf-8"%>

2. contentType: 配置当前页面的MIME类型和字符编码

<%@page contentType="text/html; charset=utf-8" %>

3. import:用来导入Java的包或类,多个包之间用”,”分隔,也可写多条指令

<%@page import="java.util.Date,java.sql.*,java.io.File"%>

4. language:定义当前JSP页面所使用的脚本语言,默认为Java

<%@page language="java" %>

5. info:确定当前页面的描述信息,getServletInfo()方法的返回信息

<%@page info="my first jsp" %>

6. session:确定当前页面是否使用session,默认值为true,当值为false时,如果在当前页面中使用了session对象,则会抛出异常

<%@page session="true" %>

7. extends:指定servlet从哪一个类继承,默认值为HttpJspBase,一般不使用

<%@page extends="com.manongsushe.JSPDemo" %>

8. isErrorPage:指定当前页面是否可以作为另一个JSP页面的错误处理页面,默认值为false,只有当值为true时,才可以使用exception的内置对象

<%@page isErrorPage="true" %>

9. errorPage:指定当JSP页面发生异常时需要转向的错误处理页面

<%@page errorPage="error.jsp" %>

10. buffer:指定out对象使用缓冲区的大小,默认为8KB

<%@page buffer="8kb" %>

11. autoFlush:表示是否自动刷新缓冲区,true表示自动刷新,若设置为false,需要手动编码刷新,默认值为true

<%@page autoFlush="true" %>

12. isThreadSafe:指定对JSP页面的访问是否为线程安全,用来设置当前JSP页面是否能够同时响应超过一个以上的用户请求,当值为true时,是线程不安全的,可以有一个以上的用户同时访问,当值为false时,同时只能有一个用户访问,Servlet类实现了一个标记接口SingleThreadModel

<%@page isThreadSafe="true" %>

13. isELIgnored:指定是否忽略EL表达式,默认值为false,若为true,则不执行JSP页面中的EL表达式

<%@page isELIgnored="false" %>

(四)、include指令

JSP可以通过include指令来包含其他文件。被包含的文件可以是JSP文件、HTML文件或文本文件。包含的文件就好像是该JSP文件的一部分,会被同时编译执行。被引入的文件可以有任意的拓展名。

<%@ include file="文件相对 url 地址" %>

(五)、Taglib指令

JSP API允许用户自定义标签,一个自定义标签库就是自定义标签的集合。
Taglib指令引入一个自定义标签集合的定义,包括库路径、自定义标签。

<%@ taglib uri="uri" prefix="prefixOfTag" %>

uri:确定标签库的位置,prefix:指定标签库的前缀

五、JSP的九大内置对象

  1. pageContext
    类型:PageContext
    作用:当前JSP页面的上下文对象,管理当前JSP页面的,域对象之一,具有其他隐式对象的引用,可以为其他域对象设置值,也可进行全域查找。
    作用范围:当前JSP页面
  2. request
    类型:HttpServletRequest
    作用:封装请求信息,域对象之一
    作用范围:一次请求
  3. session
    类型:HttpSession
    作用:域对象之一
    作用范围:一次会话
  4. application
    类型:ServletContext
    作用:域对象之一
    作用范围:整个Web应用
  5. config
    类型:ServletConfig
    作用:当前Servlet的配置信息(初始化参数)
  6. response
    类型:HttpServletResponse
    作用:封装响应信息,由于JSP已经使用了Writer,所以不能利用response。getO utputStream()获得字节输出流,只能使用response.getWriter();
  7. exception
    类型:Throwable
    作用:错误页面中获得异常信息,只有错误页面才能使用这个对象
  8. out
    类型:JSPWriter
    作用:用来向浏览器输出信息,是字符流
  9. page
    类型:Object
    作用:当前类的引用(this)

六、JSP常用标签

只要支持JSP文件,常用标签就可以直接使用

1、jsp:forward

完成页面转发
page 属性指定转发的资源
内部可以使用标签设置请求参数

<jsp:forward page="forward.jsp">
    <jsp:param value="张三" name="name"/>
</jsp:forward>

注意:
被forward转发的资源必须与发送请求的页面处于相同的上下文环境中,每当遇到此标签时,容器就会停止执行当前的JSP,转而执行被转发的资源

2、jsp:include

完成在当前JSP页面的执行期间引入被引入资源的输出内容,当前JSP页面与被动态引入的资源是两个彼此独立的执行实体,被动态引入的资源必须是一个能够独立被web容器调用和执行的资源。
内部同样可以使用标签设置请求参数

<jsp:include page="include.jsp">
    <jsp:param value="张三" name="name"/>
</jsp:include>

猜你喜欢

转载自blog.csdn.net/venus14/article/details/78396912
今日推荐