JSP以及JSP解析原理

什么是JSP?

JSP全称是Java Server Pages,它和servle技术一样,都是SUN公司定义的一种用于开发动态web资源的技术。 JSP这门技术的最大的特点在于,写jsp就像在写html,但: 它相比html而言,html只能为用户提供静态数据,而Jsp技术允许在页面中嵌套java代码,为用户提供动态数据。 相比servlet而言,servlet很难对数据进行排版,而jsp除了可以用java代码产生动态数据的同时,也很容易对数据进行排版。 Jsp快速入门:在jsp页面中输出当前时间。

JSP原理

  • tomcat通过解析,找到myetest项目下的index.jsp
  • 判断index.jsp对应的的servelet对象是否存在
  • 如果不存在,经过首先把index.jsp翻译成java文件,然后JVM编译成对应的CLASS字节码文件,并调用_jspInt初始化(3)相关的对象,接着调用_JspService方法将响应结果发给浏览器
  • 如果存在,直接通过(4)调用_JspService方法将响应结果发给浏览器.

JSP脚本表达式

  • JSP脚本表达式(expression)用于将程序数据输出到客户端
  • 语法:<%= 变量或表达式 %>
  • 举例:当前时间:<%= new java.util.Date() %>
  • JSP引擎在翻译脚本表达式时,会将程序数据转成字符串,然后在相应位置用out.write(…) 将数据输给客户端。
  • JSP脚本表达式中的变量或表达式后面不能有分号(;)。

JSP脚本片断

  • JSP脚本片断(scriptlet)用于在JSP页面中编写多行Java代码。
  • 语法:
  •  <% 多行java代码 %>
  • 注意:JSP脚本片断中只能出现java代码,不能出现其它模板元素, JSP引擎在翻译JSP页面中,会将JSP脚本片断中的Java代码将被原封不动地放到Servlet的_jspService方法中。
  • JSP脚本片断中的Java代码必须严格遵循Java语法,例如,每执行语句后面必须用分号(;)结束。
  • 在一个JSP页面中可以有多个脚本片断,在两个或多个脚本片断之间可以嵌入文本、HTML标记和其他JSP元素。
  • 举例:
  • <% int x = 10; out.println(x); %> <p>这是JSP页面文本</p> <% int y = 20; out.println(y+””+x); %>
  • 多个脚本片断中的代码可以相互访问,犹如将所有的代码放在一对<%%>之中的情况。如:out.println(x);
  • 单个脚本片断中的Java语句可以是不完整的,但是,多个脚本片断组合后的结果必须是完整的Java语句,例如:
%
    for (int i=1; i<5; i++)
    {
%>

    <H1>www.itcast.cn</H1>

<%
    }
%> 

JSP声明

  • SP页面中编写的所有代码,默认会翻译到servlet的service方法中, 而Jsp声明中的java代码被翻译到_jspService方法的外面,即实例变量。
  • 语法: <%! java代码 %> 所以,JSP声明可用于定义JSP页面转换成的Servlet程序的静态代码块、成员变量和方法
  • 。 多个静态代码块、变量和函数可以定义在一个JSP声明中,也可以分别单独定义在多个JSP声明中。
  • JSP隐式对象的作用范围仅限于Servlet的_jspService方法,所以在JSP声明中不能使用这些隐式对象。
<%!
static
{
    System.out.println("loading Servlet!");
}
private int globalVar = 0;
public void jspInit()
{
    System.out.println("initializing jsp!");
}
%>
<%!
public void jspDestroy()
{
    System.out.println("destroying jsp!");
}
%>

JSP注释

  • JSP注释的格式: <%-- 注释信息 --%>
  • JSP引擎在将JSP页面翻译成Servlet程序时,忽略JSP页面中被注释的内容。
时间: 2024-11-07 22:01:58

JSP以及JSP解析原理的相关文章

jsp页面:js方法里嵌套java代码(是操作数据库的),如果这个js 方法没被调用,当jsp页面被解析的时候,不管这个js方法有没有被调用这段java代码都会被执行?

jsp页面:js方法里嵌套java代码(是操作数据库的),如果这个js 方法没被调用,当jsp页面被解析的时候,不管这个js方法有没有被调用这段java代码都会被执行? 因为在解析时最新解析的就是JAVA代码,不管写哪里,都会最新被解析

JAVA知识积累 JSP第一篇【JSP介绍、工作原理、生命周期、语法、指令、行为】

JSP全名为Java Server Pages,java服务器页面.JSP是一种基于文本的程序,其特点就是HTML和Java代码共同存在! 为什么需要JSP JSP是为了简化Servlet的工作出现的替代品,Servlet输出HTML非常困难,JSP就是替代Servlet输出HTML的. 简单使用一下JSP 在idea下生成一个JSP,我们来看一下JSP长什么样子 <%@ page contentType="text/html;charset=UTF-8" language=&q

Servlet,jsp,JSP技术 ,JSP编程

 一.Servlet 思考 1 浏览器可以直接打开JAVA/class文件吗? 不可以 2浏览器可以打开HTML.JS 文件吗? 可以 3 JAVA程序可以生成HTML文件吗?可以的,用IO流. 4 浏览器解析的时候是需要HTTP协议的,JAVA普通类有没有HTTP协议呢? 普通类没有. JAVA-(class)浏览器如何访问呢? 浏览器---HTML A   JAVA通过IO流生成HTML--->浏览器 B   JAVA 需要加入HTTP协议 解决上面2个问题可以通过 Servlet C  如

SpringMVC源码分析6:SpringMVC的视图解析原理

title: SpringMVC源码分析6:SpringMVC的视图解析原理 date: 2018-06-07 11:03:19 tags: - SpringMVC categories: - 后端 - SpringMVC --- 转自 SpringMVC视图机制详解[附带源码分析] 本系列文章首发于我的个人博客:https://h2pl.github.io/ 欢迎阅览我的CSDN专栏:Spring源码解析 https://blog.csdn.net/column/details/21851.h

Tip:JSP标签也称之为Jsp Action(JSP动作)元素

JSP标签也称之为Jsp Action(JSP动作)元素,它用于在Jsp页面中提供业务逻辑功能,避免在JSP页面中直接编写java代码,造成jsp页面难以维护. ================ <jsp:include>标签用于把另外一个资源的输出内容插入进当前JSP页面的输出内容之中,这种在JSP页面执行时的引入方式称之为动态引入.语法: <jsp:include page="relativeURL | <%=expression%>" flush=&

Atitit.sql&#160;ast&#160;表达式&#160;语法树&#160;语法&#160;解析原理与实现&#160;java&#160;php&#160;c#.net&#160;js&#160;python

Atitit.sql ast 表达式 语法树 语法 解析原理与实现 java php c#.net js python 1.1. Sql语法树 ast 如下图锁死1 2. SQL语句解析的思路和过程3 2.1. lexer作为一个工具,完成了对SQL字符串的切割,将语句转化成一个tokens数组.3 2.2. Parser完成了SQL解析的后序部分:使用一个lexer对象作为工具,切出tokens,然后解析语义,绑定相关的系统接口.3 2.3. 关系数据和XML数据库下其抽象语法树分别为: 如图

【JSP】JSP基础学习记录(二)—— JSP的7个动作指令

2.JSP的7个动作指令: 动作指令与编译指令不同,编译指令是通知Servlet引擎的处理消息,而动作指令只是运行时的动作.编译指令在将JSP编译成Servlet时起作用:而处理指令通常可替换成JSP脚本,它只是JSP脚本. JSP动作指令主要有如下7个. jsp:forward:执行页面转向,将请求的处理转发到下一个页面. jsp:param:用于传递参数,必须与其他支持参数的标签一起使用. jsp:include:用于动态引入一个JSP页面. jsp:plugin:用于下载JavaBean或

jsp的&lt;%@ include file=&quot;jsp/common.jsp&quot; %&gt;报错误Duplicate local variable basePath

将公共引入的文件放到common.jsp中,其他页面引入该jsp即可使用 1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> 2 <% 3 String path = request.getContextPath(); 4 String basePath = request.getScheme() + "://" 5 +

基于简单sql语句的sql解析原理及在大数据中的应用

李万鸿 通常sql语法解析都是以lex.yacc进行分析为基础的,是逐个字符进行分析,性能不高,如果基于没有子查询的sql语句进行解析,则速度会提高许多,在此对其原理加以说明. 一般sql语句十分复杂,包含多层嵌套,但其中有规律可循,其特点是所有的语句基本模式是一样的,即:都是SELECT  FROM  WHERE类型的简单语句,因此,可以把嵌套的语句逐条解析为这种简单语句.由于sql语句的语法是一样的,所以可以用递归的方法对语句加以解析,从而把sql语句解析为多条简单的子SQL语句.然后通过一