JSP知识点

一.jsp概述

JSP全称是Java Server Pages,它和servle技术一样,都是SUN公司定义的一种用于开发动态web资源的技术。JSP实际上就是Servlet。

三个概念
  1. html:静态内容
  2. servlet:服务器端的小应用程序,处理Java逻辑代码。主要作用是:
    (1)获取表单数据
    (2)处理业务逻辑
    (3)分发转向
  3. jsp:编写输出动态内容,但不适合编写java逻辑。

通俗易懂:jsp = html + java

思考:

  • IE浏览器访问jsp页面时,Web服务器是如何调用并执行一个jsp页面的?


    JSP知识点_第1张图片
    image.png
  • Web服务器在执行jsp页面时,是如何把jsp页面中的html排版标签发送到客户端的?


    JSP知识点_第2张图片
    jsp界面代码

    JSP知识点_第3张图片
    服务器自动生成的代码
  • jsp页面中的java代码,服务器是如何执行的?
    在执行 JSP 网页时,通常可分为两个时期:转译时期(Translation Time)和请求时期(Request Time)
    转译时期:JSP网页转译成Servlet类。
    请求时期:Servlet类执行后,响应结果至客户端。

转译期间主要做了两件事情:

将JSP网页转译为 Servlet 源代码(.java);
将Servlet源代码(.java)编译成 Servlet 类(.class)。

  • web服务器在调用jsp时,会给jsp提供一些什么java对象


    JSP知识点_第4张图片
    tomcat源码

jsp基本语法

  1. jsp的脚本
    小脚本 <% java 代码 %>
    表达式 <%=2+3> 等价于 out.print(2+3)
    声明 <%! 代码 %> 表示在类中定义全局成员和静态块。

  2. 注释
    jsp注释: <%-- 注释文字 --%> 不会返回到浏览器中
    html注释:有的浏览器会返回到浏览器中

  3. jsp 3个指令

  • page 指令
1.1、 import 和java代码中的import是一样的
<%@ page import="java.util.Date,java.util.List"%>
或者:
<%@ page import="java.util.Date"%>
<%@ page import="java.util.List"%>
JSP会自动导入以下的包:
import java.lang.*;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.jsp.*;
1.2、 session: 是否会自动创建session对象。默认值是true;
1.3、 buffer: JSP中有javax.servlet.jsp.JspWriter输出字符流。设置。输出数据的缓存大小,默认是8kb.
1.4 errorPage: 如果页面中有错误,则跳转到指定的资源。
errorPage="/uri" 如果写“/”则代表当前应用的目录下,绝对路径。
如果不写“/”则代表相对路径。
    1.5、 isErrorPage: 是否创建throwable对象。默认是false;
1.6、 contextType: 等同于response.setContextType("text/html;charset=utf-8");
1.7、 pageEncoding: 告诉JSP引擎要翻译的文件使用的编码。
1.8、 isELIgnored: 是否支持EL表达式。 默认是false

<%@ page  pageEncoding="gbk" %>
  • Include 指令
静态包含:把其它资源包含到当前页面中。
<%@ include file="/include/header.jsp" %>
动态包含:


两者的区别:翻译的时间段不同
前者:在翻译时就把两个文件合并
后者:不会合并文件,当代码执行到include时,才包含另一个文件的内容。

原则:能用静的就不用动的。
  • taglib 指令
作用:在JSP页面中导入JSTL标签库。替换jsp中的java代码片段。
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> 
  1. jsp 6个动作
    <%
        Student stu = new Student();
        stu.setName("tom");
        
        out.print(stu.getName());
        
        //request.getRequestDispatcher("/7.jsp").forward(request, response);
        
        
     %>
     
     
     
     
     
     
     
        
        
     
  1. jsp 9个内置对象


    JSP知识点_第5张图片
    9个内置对象

    <%
        //pageContext.setAttribute("p", "pp");
        pageContext.setAttribute("p", "pp", PageContext.PAGE_SCOPE);
        
        //pageContext.setAttribute("p", "pp", PageContext.REQUEST_SCOPE);
        request.setAttribute("p", "request");
        
        //pageContext.setAttribute("p", "pp", PageContext.SESSION_SCOPE);
        //session.setAttribute("p", "session");
        
        //pageContext.setAttribute("p", "pp", PageContext.APPLICATION_SCOPE);
        application.setAttribute("p", "application");
        
        //request.getRequestDispatcher("/2.jsp").forward(request, response);
        //response.sendRedirect(request.getContextPath()+"/2.jsp");
        pageContext.forward("/2.jsp");
     %>

作用与范围: pageContext

使用规则:

  • PageContext : pageConext 存放的数据在当前页面有效。开发时使用较少。
  • ServletRequest: request 存放的数据在一次请求(转发)内有效。使用非常多。
  • HttpSession: session 存放的数据在一次会话中有效。使用的比较多。如:存放用户的登录信息,购物车功能。
  • ServletContext: application 存放的数据在整个应用范围内都有效。因为范围太大,应尽量少用。

EL表达式

<%
  Student stu = (Student)request.getAttribute("s");
        //out.print(stu.getName());
%>
     
     ${s.city.address } 
JSP知识点_第6张图片
image.png

你可能感兴趣的:(JSP知识点)