JSP概述

[TOC]

JSP概述

什么是jsp

sun公司制定的一种服务器端的动态页面技术规范.

  1. 虽然使用servlet也可以生成动态页面,但是过于繁琐需要大量使用out.println语句,并且不利于页面的维护(需要修改java源代码),所以sun公司才制定的jsp规范,目的是更简洁,更方便的生成动态页面.
  2. jsp是一个以.jsp为后缀的文件,该文件的内容主要是html和少量的java代码.容器会将jsp文件转换成一个servlet然后执行.
  3. jsp的本质就是一个servlet!

如何写一个jsp文件?

  1. 创建一个以.jsp为后缀的文件.

  2. 在该文件里面,可以添加如下内容:

    • html代码 直接写即可
    • java代码
      • java代码片段 <% java代码 %>
      • jsp表达式 <%= java表达式 %>
  3. 9大隐含对象

    • out
    • request
    • response
    • session
    • application
    • page
    • config
    • exception
    • pageContext
  4. 指令

    告诉容器,将jsp转换成servlet类的时候,做一些额外的处理,比如: 导包.

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

JSP代码块

  1. <% 代码 %>
  2. <%= 表达式 %>
  3. <%! 属性或方法 %>

JSP指令

page指令

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
  • import属性:用于导包,比如<% page import="java.util.*" %> 多个包使用逗号隔开

  • contentType属性:用于设置response.setContentType方法的参数值.

  • pageEncoding属性:告诉容器,在读取jsp文件的内容时,使用指定的字符集来解码

include指令

<%@ include file="header.jsp"%>
  • file属性:指定被包含的文件名.比如,<%@ include file="header.jsp"%>

    容器在将jsp转换成java时,会将指定的文件的内容插入到该指令所在的位置

taglib指令

<%@ taglib uri="" prefix="c"%>

用于引入JSTL标签库或者其他的自定义标签库

JSP注释

格式: <%-- 注释内容 --%>

注意: 如下三种注释方式

1.使用jsp注释: (没被翻译成serlvet, 也没有被执行, 不会显示到浏览器)

<!-- 使用jsp注释 -->
<%-- 
    out.write("aaaaa<br>");
	System.out.println("aaaaa");
--%>

2.使用java注释: (可以翻译为servlet, 但是没有被执行, 不会显示到浏览器)

<% 
    // out.write("bbbbb<br>");
    // System.out.println("bbbbb");
%>

3.使用html注释: (可以翻译为servlet, 可以被执行, 但是被html所注释, 不会显示到浏览器)

<!-- 
    <% 
        out.write("ccccc<br>");
        System.out.println("ccccc");
    %>
-->

结果:

浏览器源码:

<!-- 使用jsp注释 -->

<!-- 使用java注释 -->

<!-- 使用html注释 -->
<!-- 
ccccc<br>
-->

控制台:

ccccc

jsp是如何执行的

阶段一

容器将.jsp文件转换成一个.java文件(即servlet类)

write()只能输出字符类型的值, 不能输出表达式和null(空值) println()和print()可以输出字符, 也可以输出表达式, 当输出的值为null时输出"null"字符串

graph LR A[html,js,css] -->B(out.write输出) C[<% %>] --> D[servlet普通代码] E[<%= %>] --> F[out.println输出] G[<%! %>] --> H[增加新的属性或者方法]

阶段二

容器在将该Servlet编译,实例化,调用.

原文地址:https://www.cnblogs.com/zpKang/p/13106746.html