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的动态标签

语法格式:<jsp:xxx></jsp:xxx>

5.1 动态包含
  • 语法 : <jsp:include page=“设置被包含文件的路径”></jsp:include>
  • 作用:动态包含指定文件
  • 特点:被包含的文件,同时会被翻译&编译【先翻译,再包含】
  • 使用场景: 在jsp中的java代码较多时使用 [静态资源少]
5.2转发
  • 语法 :<jsp:forward page=“设置请求转发路径”></jsp:forward>

  • 代码 :

    <h3>转发</h3>
    <jsp:forward page="index.jsp">
        <jsp:param name="stuname" value="xiaobai"/>
    </jsp:forward>
    
  • 注意 : 使用jsp动态标签中转发时 , 如需参数直接添加<jsp:param xxx>中.

    ​ <jsp:forward page=“index.jsp”></jsp:forward> 中间不允许添加任何数据

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<String,Object>】

    • 设置属性到域中:void setAttribute(String key , Object value);
    • 从域中获取指定的属性:Object getAttribute(String key);
    • 移除域中指定属性:void removeAttribute(String key);
  • <body>
        <%
            // 设置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")%>   <br>
        request : <%=request.getAttribute("key")%>   <br>
        session : <%=session.getAttribute("key")%>   <br>
        application : <%=application.getAttribute("key")%>    <br>--%>
    
    
    <%--测试request--%>
    <%
     //   请求转发 request 有效
        request.getRequestDispatcher("/context2.jsp").forward(request,response);
        
        // 重定向 request 无效
        response.sendRedirect(request.getContextPath() + "/context2.jsp");
    %>
    
    </body>
    
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值