简述Jsp

本人小白一枚,欢迎大家一起讨论学习,如有错误,还望大家指教。

简述:

Jsp全称Java Server Pages,即java服务器端页面,是一种动态网页开发技术,也可以理解为一个特殊的页面,其中既可以书写html便签,又可以书写java代码。Jsp本质就是一个Servlet,它的原理我们可以通过图片来大致了解一下。
简述Jsp_第1张图片
通过上面的图片我们可以知道,其实jsp运行会被转换成.java文件,并且该jsp类会继承org.apache.jasper.runtime.HttpJspBase。源码如下,我们不难发现,其实Jsp就是一个Servlet。

package org.apache.jasper.runtime;
public abstract class HttpJspBase extends HttpServlet implements HttpJspPage {

    private static final long serialVersionUID = 1L;

    protected HttpJspBase() {
    }

    @Override
    public final void init(ServletConfig config)
        throws ServletException
    {
        super.init(config);
        jspInit();
        _jspInit();
    }

    @Override
    public String getServletInfo() {
        return Localizer.getMessage("jsp.engine.info");
    }

    @Override
    public final void destroy() {
        jspDestroy();
        _jspDestroy();
    }

    /**
     * Entry point into service.
     */
    @Override
    public final void service(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException
    {
        _jspService(request, response);
    }

    @Override
    public void jspInit() {
    }

    public void _jspInit() {
    }

    @Override
    public void jspDestroy() {
    }

    protected void _jspDestroy() {
    }

    @Override
    public abstract void _jspService(HttpServletRequest request,
                                     HttpServletResponse response)
        throws ServletException, IOException;
}

Jsp脚本:就是在jsp定义java代码的方式。

  • <% 代码 %>:是定义在service方法中的,service方法中可以定义什么,该脚本就可以定义什么。
  • <%! 代码 %>:是用来定义成员变量和成员方法,了解即可,并不常用。
  • <%= 代码 %>:用来向页面显示数据时用的,存在于service方法中。

Jsp内置对象:九个内置对象,即在jsp页面中直接使用,无须创建。

  • PageContext pageContext:用做当前页面共享数据,还可以用来获取其他另外八个内置对象,域对象。
  • HttpServletRequest request:用来一次请求访问多个资源的数据共享(请求转发),域对象。
  • HttpSession session:用来一次会话多次请求的数据共享,域对象。
  • ServletContext application:相当于ServletContext,域对象。
  • HttpServletResponse response:用来想客户端浏览器进行相应的对象。
  • Object page:表示当前jsp页面对象(Servlet),如同this。
  • JspWriter out:字符输出流对象,可以将数据输出到页面上,和response.getWriter()类似
    • response.getWriter()out.write() 的区别:在tomcat服务器真正给客户端做出响应之前,会先找response缓冲区数据,再找out缓冲区数据。也就是说**response.getWriter()数据输出永远在out.write()**之前。
  • ServletConfig config:Servlet的配置对象。
  • Throwable exception:用来处理异常的对象。

Jsp指令:用于配置Jsp页面,导入资源文件。

格式: <%@ 指令名称 属性名1=属性值1 属性名2=属性值2 ... %>
指令名称:

  • page:用来配置Jsp页面 ,例如下例
  • <%@ page contentType="text/html;charset=gbk" errorPage="500.jsp" pageEncoding="GBK" import="java.util.List" buffer="16kb" %>
    • contentType:等同于response.setContentType(),可以用来设置响应体的mime类型以及字符集编码。
    • pageEncoding:设置当前jsp页面的编码。
    • import:导入java包。
    • errorPage:表示如果当前页面发生异常,会自动跳转到指定的错误页面。
    • isErrorPage:标识当前页面是否是错误页面。
      • true:是,可以使用内置对象exception。
      • false:否,默认值,不可以使用内置对象exception。
    • buffer:设置缓冲区大小,默认不小于8KB。
  • include:导入页面包含的资源,例如当我们书写一个网站时,login部分属于重复的部分,此时我们只需要创建一个top的jsp文件即可,在需要的地方用此指令引用即可。例如:<%@include file="top.jsp"%>
  • taglib:当我们使用第三方的标签库时,需要使用taglib指令来进行“导包”操作。
  • 例如: <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
    • prefix:自定义前缀,在我们引用这个标签库是,直接使用前缀名即可。

你可能感兴趣的:(JavaWeb)