JSP学习笔记-JSP原理,基本语法和指令


jsp

1. 什么是jsp

jsp:Java Server Pages 也就是java服务器端的页面,也和Servlet一样,用于动态web技术!

最大的特点:

  • 写jsp页面就感觉在写HTML页面一样。
  • 区别:
    • HTML只给用户提供静态数据,并且HTML页面不能写java代码。
    • jsp页面能写java代码,可以为用户提供动态的数据。

2. jsp的原理

浏览器向服务器发送请求,不管访问什么资源,其实都是在访问Servlet。所以当访问一个jsp页面的时候,其实也是在访问一个Servlet。服务器执行jsp时,会把jsp翻译成成Servlet。

2.1 jsp是怎么样子执行的

  • 首先代码层面没有任何的问题
  • 服务器内部
    • 当第一次执行jsp页面时启动Tomcat会在IDEA的Tomcat中产生一个work目录,work目录下的/Catalina/localhost/ROOT/org/apache/jsp 发现jsp页面被转换成了java程序。
    • jsp最终也会转换成一个java类。

image

3. jsp本质上就是一个Servlet

//初始化
  public void _jspInit() {
      
  }
//销毁
  public void _jspDestroy() {
  }
//JSPService
  public void _jspService(.HttpServletRequest request,HttpServletResponse response)

  • 内置的一些对象
final javax.servlet.jsp.PageContext pageContext;  //页面上下文
javax.servlet.http.HttpSession session = null;    //session
final javax.servlet.ServletContext application;   //applicationContext
final javax.servlet.ServletConfig config;         //config
javax.servlet.jsp.JspWriter out = null;           //out
final java.lang.Object page = this;               //page:当前
HttpServletRequest request                        //请求
HttpServletResponse response                      //响应
  • 输出页面前增加的代码
response.setContentType("text/html");       //设置响应的页面类型
pageContext = _jspxFactory.getPageContext(this, request, response,
       null, true, 8192, true);
_jspx_page_context = pageContext;
application = pageContext.getServletContext();
config = pageContext.getServletConfig();
session = pageContext.getSession();
out = pageContext.getOut();
_jspx_out = out;

以上的这些对象我们都可以在jsp中直接使用!

在JSP页面中;

只要是 JAVA代码就会原封不动的输出;

如果是HTML代码,就会被转换为:

out.write("<html>/r/n");

这样的格式,输出到前端!

4. jsp的基本语法

任何语言都有自己的语法,JAVA中有,。 JSP 作为java技术的一种应用,它拥有一些自己扩充的语法(了解,知道即可!),Java所有语法都支持!

4.1 注释

注释分为输出注释和隐藏注释

  • 输出注释:输出注释是指会在客户端(浏览器)显示的注释。
    • 语法:
  • 隐藏注释:隐藏注释是指注释虽然写在JSP程序中,但是不会发送给客户。
    • 语法:<%– –%> <%– 在页面源代码中,这个注释是看不见的 –%>

4.2 jsp声明

在JSP中,声明表示一段Java源代码,用来定义类的属性和方法,声明后的属性和方法可以在JSP文件的任意地方使用。

语法:<%! 声明 %>

  <%!
    static {
      System.out.println("Loading Servlet!");
    }

    private int globalVar = 0;

    public void kuang(){
      System.out.println("进入了方法Kuang!");
    }
  %>

JSP声明:会被编译到JSP生成Java的类中!其他的,就会被生成到_jspService方法中!

在JSP,嵌入Java代码即可!

4.3 java脚本片段

脚本程序是一段在客户端请求时先被服务器执行的Java代码,它可以产生输出,并把输出发送到客户的输出流,同时也可以是一段流程控制语句。

语法:<% 代码块 %>

  <%--jsp脚本片段--%> //隐藏注释
  <%
    int sum = 0;
    for (int i = 1; i <=100 ; i++) {
      sum+=i;
    }
    out.println("<h1>Sum="+sum+"</h1>");
  %>

4.3.3脚本片段的在实现

  <%
    int x = 10;
    out.println(x);
  %>
  <p>这是一个JSP文档</p>
  <%
    int y = 2;
    out.println(y);
  %>

  <hr>


  <%--在代码嵌入HTML元素--%>
  <%
    for (int i = 0; i < 5; i++) {
  %>
    <h1>Hello,World  <%=i%> </h1>
  <%
    }
  %>

5.jsp指令

5.1 page指令

page指令作用于整个JSP页面,定义了许多与页面相关的属性,这些属性将被用于和JSP容器通信,描述了和页面相关的指示信息。在一个JSP页面中,page指令可以出现多次,但是该指令中的属性只能出现一次,重复的属性设置将覆盖先前的设置。

语法: <%@ page attr1=”value1″ attr2=”value2″ … %>

注:page 指令的作用对整个页面有效,与其书写的位置无关,但习惯把 page 指令写****在 JSP 页面的最前面。

5.1.2 page常用的属性

  • contentType属性

  • contentType属性设置JSP页面和生成的响应页面的字符编码。 默认内容类型为:text/html,它是HTML页面的标准内容类型。

    如果要从JSP输出为XML,请使用以下page指令

    <%@ page contentType = "text/xml" %>
    
  • errorPage属性

    • ​ 如果希望在当前页面运行时出现错误时,指定一个错误提示页面,那么errorPage属性告诉JSP引擎显示哪个页面。errorPage属性的值是相对URL。

      当抛出所有未捕获的异常时,以下指令用于在页面出错时指定显示MyErrorPage.jsp的内容

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

5.2 include指令

include指令用于在JSP页面中静态包含一个文件,该文件可以是JSP页面、HTML网页、文本文件或一段Java代码。使用了include指令的JSP页面在转换时,JSP容器会在其中插入所包含文件的文本或代码,同时解析这个文件中的JSP语句,从而方便地实现代码的重用,提高代码的使用效率。

i语法: <%@ include file=”relativeURL” %>

<%@ include file="date.jsp" %>
<h1>
    阳光明媚
    </h1>

include指令的主要功能会将两个页面合二为一 上面的代码就是会将date.jsp页面和 < h1>所在的页面合二为一。

5.3 include动作

该动作标签告诉 JSP 页面动态包含一个文件,即 JSP 页面运行时才将文件加入。与静态插入文件的 include 指令标签不同,当 JSP 引擎把 JSP 页面转译成 Java 文件时,不把JSP 页面中动作指令 include 所包含的文件与原 JSP 页面合并一个新的 JSP 页面,而是告诉Java 解释器,这个文件在 JSP 运行时(Java 文件的字节码文件被加载执行)才包含进来。如果包含的文件是普通的文本文件,就将文件的内容发送到客户端,由客户端负责显示;如果包含的文件是 jsp 文件,JSP 引擎就执行这个文件,然后将执行的结果发送到客户端,并由客户端负责显示这些结果。

<jsp:include page="/common/header.jsp"/>
<h1>网页主体</h1>
<jsp:include page="/common/footer.jsp"/>

page: 要包括的页面的相对URL。

jsp:include:拼接页面,本质还是三个 和include指令有一定的区别 前后是拼接,后者是将网页合并

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/279739.html

(0)
上一篇 2022年8月10日
下一篇 2022年8月10日

相关推荐

发表回复

登录后才能评论