jsp 简介

jsp 简介

1.jsp简介

​ jsp的全称是 java server pages .就是java的服务器页面.

2.jsp工作原理

2.1 工作原理
  • 第一次访问jsp时,服务器将jsp先翻译成xxx.java文件 , 再编译成xxx.classs文件

  • 以后再访问时:

    • 如果jsp文件修改 : 再次翻译&编译
    • 如jsp文件未修改 : 不会翻译&编译
2.2 jsp本质是Servlet

Class xxx_jsp : org.apache.jasper.runtime.HttpJspBase : HttpServlet

3.jsp基本语法

  • 指令 : 语法格式:<%@ page 属性=属性值 属性2=属性值2 %>

  • 模板元素 : html css js 等

  • 脚本片段 [小脚本]

    • 语法:<%@ 指令名 属性=属性值 属性2=属性值2 %>

      <%@ page contentType="text/html;charset=UTF-8" language="java" %>
      
    • 作用 : 在_jspService() 方法中 , 书写java代码

  • 表达式

    • 语法 : <%=%>
    • 作用 : 将数据显示到页面中
  • 声明

    • 语法 : <%! %>
    • 作用 : 书写java代码
  • 注释:

    • java
      • 单行注释 : //
      • 多行注释 : /**/
    • html

4.jsp常用指令

4.1 page指令
  • 语法格式 :

  • 属性

    • contentType : 与response.setContextType() 作用一致 .

    • language : 设置jsp中支持语言 , 有且只有java

    • import : 导包

    • errorpage : 如果出现异常, 跳转的目标路径

    • isErrorPage : 设置当前页面是否为处理异常页面,默认值 : false .

      ​ 设置true 包含exception内置对象 .

4.2 include指令
  • 语法格式 : <%@ include file=“设置被包含文件路径”%>

  • 作用 : 静态包含指定文件

  • 特点 : 被包含的文件, 不会被翻译编译 [先包含, 再翻译]

  • 使用场景:在jsp中的静态资源较多时使用。【少量java代码】

5.jsp的动态标签

语法格式:

5.1 动态包含
  • 语法 :
  • 作用:动态包含指定文件
  • 特点:被包含的文件,同时会被翻译&编译【先翻译,再包含】
  • 使用场景: 在jsp中的java代码较多时使用 [静态资源少]
5.2转发
  • 语法 :

  • 代码 :

    转发

  • 注意 : 使用jsp动态标签中转发时 , 如需参数直接添加中.

    中间不允许添加任何数据

6.jsp九大隐式对象[隐式对象|内置对象] - 面试题

隐式对象 : 在jsp中无需我们程序员手动创建,就可以直接使用的对象,称之为隐式对象。

jsp共有9个内置对象 , 但默认只有8个内置对象 [exception对对象需在page指令中设置isErrorPage=“true”,才可显示.]

  • pageContext
    • 类型 : javax.servlet.jsp.PageContext
    • 作用 : 域对象【页面域】
    • 在Servlet中获取方式:无
  • request
    • 类型 : javax.servlet.http.HttpServletRequest
    • 概述 : 获取请求参数 获取URL信息 获取请求头信息 转发【路径跳转】 域对象
    • 作用:
    • 在Servlet中获取方式:在doGet()或doPost()中直接使用
  • session
    • 类型 :类型:javax.servlet.http.HttpSession
    • 作用 : 域对象【会话域】
    • 在Servlet中获取方式:request.getSession();
  • application
    • 类型 : javax.servlet.ServletContext
    • 概述 :
    • 作用 :
    • 在Servlet中获取方式:在doGet()或doPost()中,调用getServletContext()方法获取。
  • page :
    • 类型:java.lang.Object
    • 概述&作用:this
  • response
    • 类型:javax.servlet.http.HttpServletResponse
    • 概述&作用:详情请查阅Servlet笔记
  • out
    • 类型:javax.servlet.jsp.JspWriter
    • 作用:与Servlet中PrintWriter作用类似,将数据显示到页面。【JspWriter与PrintWriter是兄弟关系,都继承java.io.Writer】
  • config
    • 类型:javax.servlet.ServletConfig
    • 概述&作用:详情请查阅Servlet笔记
  • exception
    • 类型: java.lang.Throwable
    • 作用:捕获处理异常

7.jsp四大域对象

7.1 域对象
  • 程序中域:将数据共享【传递】

    • pageContext [页面域]

      • 有效范围 : 当前页面有效 .
    • request [请求域]

      • 有效范围 : 当前请求有效
      • 当前请求 : 只要路径跳转 , 一般就不在当前请求[如果使用转发时 , 依然在当前请求]
    • session【会话域】

      • 有效范围 : 当前会话有效

      • 当前会话 : 与浏览器有关, [与服务器无关 ] 只要浏览器不关闭 & 不更换就在当前会话

        ​ 浏览器关闭或更换就不在当前会话。

    • application 【web域|上下文域】

      • 有效范围 : 当前web应用中有效
      • 只要web应用未卸载【未关闭】就有效。
7.2 代码
  • 域对象共性:所有域对象都有一套通用方法【底层维护一个Map

    • 设置属性到域中:void setAttribute(String key , Object value);
    • 从域中获取指定的属性:Object getAttribute(String key);
    • 移除域中指定属性:void removeAttribute(String key);
  • 
        <%
            // 设置page域
            pageContext.setAttribute("key","pageContext - value");
            // 设置request域
            request.setAttribute("key"," request - value");
            // 设置session域
            session.setAttribute("key", "session- value ");
            // 设置application域
            application.setAttribute("key","application - value");
    
        %>
    
    <%--测试当前页面作用域 --%>
    <%--
        pageContext : <%=pageContext.getAttribute("key")%>   
    request : <%=request.getAttribute("key")%>
    session : <%=session.getAttribute("key")%>
    application : <%=application.getAttribute("key")%>
    --%> <%--测试request--%> <% // 请求转发 request 有效 request.getRequestDispatcher("/context2.jsp").forward(request,response); // 重定向 request 无效 response.sendRedirect(request.getContextPath() + "/context2.jsp"); %>

你可能感兴趣的:(javaweb,jsp,javaweb)