JSP基础

作者: Mr_J316 | 来源:发表于2019-05-17 14:38 被阅读0次

2019-05-14

基本知识

什么是JSP

JSP是Java Server Pages的缩写,是符合JavaEE标准的表现层技术。

JSP的页面构成

  • 静态模板代码:HTML+CSS+JS,发送至客户端浏览器执行
  • Java代码嵌入:JSP声明脚本、JSP代码脚本、JSP表达式。在服务器端执行,执行结果发送至客户端浏览器
  • EL表达式、JSP指令标签、JSP动作标签、JSTL、第三方标签库、自定义标签等。在服务器端执行,执行结果发送至客户端浏览器

JSP的工作原理

JSP是由安装在Web服务器上的JSP引擎(JSP/Servlet容器)编译执行的。JSP页面的访问者无须安装Java运行环境,因为服务器输送到客户端的是JSP的执行结果,是标准的HTML页面。

JSP本质是一种特殊的Java类,即Servlet。每个JSP页面都是一个Servlet实例。JSP页面首先由服务器的JSP引擎自动翻译成 Servlet类,然后自动实例化执行,将生成的HTML响应文本发送到客户端浏览器。

Servlet类内部通过_jspService方法处理用户请求。翻译过程中JSP最主要的代码都是在此方法中。

如果该JSP页面是第一次被请求,那么会经历翻译-编译-执行完整阶段,如果不是第一次被请示,则不会再执行翻译/编译过程。这是为什么第二次执行JSP页面时明显比第一次执行要快的原因。如果修改了JSP页面,那么服务器将发现到该修改,并重新进行翻译和编译。这是为什么修改页面后访问速度变慢的原因。

JSP基本语法

JSP声明脚本

<%! 声明语句 %>
<%! int a = 1; %>
<%
    out.println("a = " + a); 
    a++;    
%>

使用声明语句声明的变量是非线程安全的,如果有多个用户执行此JSP页面,将共享该变量。

JSP页面编译成的Servlet类在容器中只有一个实例,在JSP中声明的变量是该实例的成员变量。成员变量在创建Servlet实例时初始化,其值将一直保存,直到实例销毁。

JSP代码脚本

<% Java代码 %>
<table width="500" height="300" align="center" border="1">
    <%
       for (int i = 0; i < 5; i++) {
    %>
       <tr>
    <%
       for (int j = 0; j < 8; j++) {
    %>
          <td></td>
    <%
       }
    %>
       </tr>
    <%
       }
    %>
</table>

JSP表达式

<%
  String str="Hello"; 
  out.print(str); 
%>
<!-- ----------两段代码效果相同-------------- -->
<%
  String str="Hello"; 
%>
<%=str%>

JSP注释

注释分为两类:

HTML注释:使用作为结束。可以在客户端显示。

JSP注释:使用<%--作为开始,以--%>作为结束。不能在客户端显示。建议使用JSP注释,减少网络传输负担。

JSP指令标签

JSP指令标签在编译阶段起作用(亦称编译指令),用于通知服务器如何处理当前页面。

<%@ 指令名称 属性名="属性值",属性名="属性值", ...%>

常用指令标签:

  • page指令:页面设置
  • include指令:页面包含
  • taglib指令:引入标签库

1.page指令标签

page指令标签用来设置当前页面的全局属性(共13个)。

属性名 说明
language 声明所使用的脚本语言种类,目前只有java类型。
contentType 指定该JSP文件的MIME格式,以及网页编码格式,即JSP页最终在 Browser(客户端)所见到的网页内容的编码。该属性值会自动在Servlet代码中生成response.setContentType方法调用。
pageEncoding JSP文件本身的编码格式。如果pageEncoding属性存在,那么JSP页面的字符编码方式就由pageEncoding决定,否则由contentType属性中的charset决定,如果charset也不存在,JSP页面的字符编码方式就采用默认编码。
import 用来导入Java包,和Java中的import语句作用类似。若导入多个包,可用逗号分隔。 使用格式:<%@ page import="导入的包名" %> 例如:import="java.util."
errorPage 用来设置当前JSP文件发生异常错误时,网页重新跳转到能够处理异常的JSP页面。语法格式如下: <%@ page errorPage="错误处理页面"%>
isErrorPage 指定该JSP文件是否为处理异常的文件,默认值为false。该页面的Servlet会自动接受其他页面传递过来的exception对象。语法格式如下: <%@ page isErrorPage="true | false"%> 可以通过设置web.xml取代此种方式 <error-page> <error-code>错误代码</error-code> <location>/目标页面</location> </error-page>
extends 指定该JSP页面生成的Servlet继承于哪个父类。设定时必须指定该类的全名,即包名加类名。
session 指定该JSP页面中是否有session对象。值为true或false,默认为true。
buffer 指定输出流out是否具有缓冲区,默认有8KB缓冲。
autoFlush 当输出缓冲区即将溢出时,是否需要强制输出缓冲区的内容。设置为true时为正常输出,如果设置为false,则会在buffer溢出时产生一个异常。
isThreadSafe 指定该JSP文件是否支持多线程使用。默认为true。设置为false则是线程安全的。
info 设置该JSP文件的相关信息,可以是任何字符串,可通过Servlet.getServletInfo方法取得该信息。
isELIgnored 指定该JSP文件是否忽略EL表达式。设置为false,则EL表达式不会被忽略,将会被执行。
 <%@ page 属性1="属性值1" 属性2="属性值2" ... %>
 <%@ page language="java" contentType="text/html;charset=UTF-8" pageEncoding="UTF-8"%>

2.include指令标签

include指令标签可以将一个外部文件嵌入到当前JSP文件中,融合成一个页面。同时解析这个页面中的JSP代码。

include既可以包含静态文本,也可以包含动态的JSP页面。出现在一个JSP页面中的include指令标签的数量不受限制。

  <%@ include file="被包含文件地址"%>

JSP动作标签

JSP动作标签(JSP Action)本质是一组JSP内置的标签,是对常用JSP功能的抽象与封装。

<jsp:XXX />
<jsp:XXX > </jsp:XXX>

include标签

用来动态包含文件。

<jsp:include page="包含文件URL地址" flush="true | false" />

page属性用来指定被包含文件的URL地址。flush属性用来指定缓冲区满时,是否进行清空。默认值为false。

include动作标签与include指令标签的区别:

<%@ include%>指令标签:静态包含。是将所有的被包含文件嵌入后,然后再进行编译处理。==因此多个jsp文件将形成一个Servlet,并且包含与被包含文件属于同一个request。==

<jsp:include>动作标签:动态包含。是将包含与被包含的文件分开编译,在运行时再动态加入。==每个jsp文件将形成单独的Servlet,并且包含与被包含文件属于不同的request。==

forward标签

forward标签用来转发用户的请求,使得用户请求一个页面跳转到另一个页面。这种跳转为服务器端转发,==用户的地址栏不会发生任何变化。==

<jsp:forward page="跳转目标地址"  />

param标签

param标签以"键/值"对的形式传递参数数据。

  <jsp:param name="参数名" value="参数值"/>

说明:
<jsp:param>标签包含两个属性,name用来设定传递参数的名称;value用来设定传递参数的值。

<jsp:param>本身不能单独使用。在<jsp:include><jsp:forward>中作为子标签使用。

<jsp:include page="目标页面">
    <jsp:param name="参数名" value="参数值" />
</jsp:include>

<jsp:forward page ="目标页面">
    <jsp:param name="参数名" value="参数值" />
</jsp:forward>

相关文章

  • 11 - JSP/cookie/HttpSession

    本文目录: JSP基础 Cookie HttpSession JSP基础 JSP(Java Server Page...

  • JavaWeb之JSP

    八、JSP 目录:什么是JSP、JSP原理、JSP基础语法、JSP指令、9大内置对象、JSP标签 JSTL标签 E...

  • jsp看这篇文章就够了

    一、JSP基础语法 1、JSP模板元素 JSP页面中的HTML内容称之为JSP模版元素。 JSP模版元素定义了网页...

  • 暑假学习打卡4

    JSP:在原有html的基础+java脚本+jsp标签,动态资源 jsp九个内置对象 java脚本:<%........

  • JSP和JSTL

    JSP JSP的基础语法 简介 ​ JSP:Java Server Page SUN 公司提供的动态网页编程技术,...

  • JavaWeb day11

    JSP基础 1.jsp的作用 Servlet: 缺点:不适合设置htm...

  • JSP基础

    JSP基础 一、什么是JSP JSP,即 Java Server Pages,Java 服务器页面,即运行在服务器...

  • JSP基础

    JSP的特点:1. jsp的运行必须交给tomcat.tomcat的work目录:tomcat服务器存放jsp运行...

  • JSP基础

    指令标示 指令标示在服务器解释并执行,在客户端不可见。使用指令标示可以按照指令的设置执行动作和设置整个JSP页面范...

  • JSP基础

    JSP简介 JSP是一种动态网页技术,全称 Java Server Pages。JSP可以在html页面中嵌入Ja...

网友评论

      本文标题:JSP基础

      本文链接:https://www.haomeiwen.com/subject/vnfoaqtx.html