上一篇博我粗略的介绍了一下Servlet。粗略是由于博主也刚刚学习这部分的内容,还不是非常懂所以无法讲的非常精细。可是本着二八原则,我还是先继续学习。所以,这篇博客接着JSP的内容。由于。这两个内容关联性还是比較强的,学习的过程也应该是互相促进的。

简单介绍

概述:JSP(Java Server Page)简单的说是一种动态网页技术。它通过在HTML网页中嵌入可以生成动态内容的程序代码。来实现静态内容和动态内容在终于呈现给client的统一。

也就是说在HTML页中可以存在着JavaBean,JDBC对象,EJB等对象方便的訪问和产生动态内容。

    背景:JSP之前主要使用的是CGI(Common Gateway Interface)技术实现的动态站点的开发。

可是因为CGI本身功能比較小,无法满足越来越趋于复杂的Web应用。于是就导致了新的技术的产生。JSP仅仅是当中的一种。

长处

①一次编写,随处执行:基于Java语言

②可重用组件技术:我的理解就是能够方便的引入封装好的应用

    ③高效率和安全性:JSP被运行之前会先编译成字节码。然后由Java虚拟机解释运行。因此JSP能够存储于对外透明的文件夹下。

    ④标签简化页面开发

原理

之前提到过JSP和Servlet的关系非常密切的。事实上Sun公司先发展的Servlet。可是Servlet使用过的人应该知道它在也逻辑上的处理没的说的,可是在输出上就比較麻烦,由于它是面向CGI的。

假设看过之前一篇博客的Servlet的原理的话。就会发现这两张图区别不是太大。

那是由于实际上JSP是为了优化Servlet是输出问题的。因此实际上JSP也是Servlet,仅仅是比較特别。它仅仅有在执行的时候才被编译为Servlet Class文件。

基于JSP和Servlet的关系,应该非常好理解JSP文件仅仅有一次编译。然后存储到一个不正确外开放的文件夹下(Tomcat/Work)。平时这个路径下是空的。仅仅有訪问过JSP文件之后,它才会存在.class文件。如题的执行原理,例如以下图:

页面构成

模板元素:主要包含静态的HTML或者XML内容,即一个HTML框架。

    凝视:JSP页面的凝视有两种,一种是HTML凝视也叫显示凝视。须要注意的是这样的凝视能够带有表达式。还有一种是JSP隐藏凝视,它在编译的时候被忽略。

所以,前一种在浏览器查看源文件的时候是能够看见的,而隐藏凝视则看不见。

这是为什么呢?能够思考一下……这个想明确了对JSP页面构成的理解应该就能够了。

脚本元素:包含声明(Declaration)、表达式(Expression)、脚本程序(Scriptlet)。

    指令元素:JSP的指令元素用来设置页面的全局变量、声明类及实现等相关属性。它仅仅在页面范围内有效。

这里须要和声明注意区分一下。

动作元素:JSP动作利用XML语法格式标记来控制Servlet引擎的行为。

能够实现动态插入文件、重定向等功能。

内置对象

JSP的内置对象是指在页面上无需显示声明的情况下能够直接使用的对象包含例如以下九种。这里不须要显示声明的原因是由于。在Servlet实例化时会在其内部实例化这九种对象。(图片来自:《Web2.0动态站点开发:JSP技术具体解释与应用实践》)

最后:对于页面构成和内置对象仅仅是简单的提了一下,没有具体的解释。

认为没太必要,重要的是理解JSP的执行原理和其在一次请求中的位置、功能、以及它所扮演的角色。然后呢,刚刚留了一个思考在前面关于两种凝视元素的。首先JSP的页面是包含了HTML的而HTML是标记性语言,它是不经过编译的所以自然就不可能忽略掉凝视的内容。而隐藏凝视则不然。它是须要经过编译的,它之所以被隐藏是编译时被忽略了。也就是JSP是不同元素的组合。因此会有不同的处理。应该差点儿相同了。至于内置对象应该没有什么须要讲的。

Java Web开发基础(2)-JSP的更多相关文章

  1. Java Web开发基础(3)-JSTL

    在DRP项目中接触到了JSTL标签库,对我这样的比較懒的人来说,第一感觉就是"惊艳". JSTL标签库的使用.能够消除大量复杂.繁复的工作.工作量降低的不是一点半点.是降低了一大半 ...

  2. java Web开发基础(一)工程项目文档结构

    2013年毕业后,在深圳工作开始是用.NET ASP.NET MVC做的项目,后来公司用java来做.于是就从.NET转java了.从.NET转java不是那么的难.今天刚好是清明节放假三天,整理了j ...

  3. Java Web开发基础(1)-Servlet

    概述 Servlet技术是对webserver的扩展,要理解这个,可能先了解一下什么是Webserver以及它的功能,特别是它的不足是非常有帮助的,可參考:点击打开链接.另外.Servlet也是一个用 ...

  4. java web开发基础实例(javabean+jsp+servlet+jdbc)

    JavaBean:用于传递数据,拥有与数据相关的逻辑处理 JSP:从Model接收数据并生成HTML Servlet:接收HTTP请求并控制Model和View jdbc:用于配置环境 一.[建立数据 ...

  5. Java web开发,在一个jsp里放太多java代码的后果,摘自 java web轻量级开发面试教程

    现要做一个简单的登录页面,如果用户通过验证,会显示Welcome用户名的欢迎词,反之则返回登录页面让用户再次输入 这部分的完整代码是JSPDemo项目里的login.jsp,下面来分析一下关键代码. ...

  6. Java Web开发基础零星知识

    1. Web的三个核心标准 万维网的核心标准有三个,分别是URL.HTTP和HTML. URL(统一资源定位符,Universal Resource Locator),为描述Internet上的网页以 ...

  7. Java Web开发之详解JSP

    JSP作为Java Web开发中比较重要的技术,一般当作视图(View)的技术所使用,即用来展现页面.Servlet由于其本身不适合作为表现层技术,所以一般被当作控制器(Controller)所使用, ...

  8. Spring MVC + Spring + Mybitis开发Java Web程序基础

    Spring MVC + Spring + Mybitis是除了SSH外的另外一种常见的web框架组合. Java web开发和普通的Java应用程序开发是不太一样的,下面是一个Java web开发在 ...

  9. java web 开发入门 --- tomcat/servlet/jsp

    在做java web 开发时,要先安装tomcat.它是一个web服务器,也叫web容器,我们把写好的jsp, html页面放到它里面,然后启动它,就可以用浏览器访问这些页面,地址栏中输入localh ...

随机推荐

  1. Python获取指定文件夹下的文件名

    本文采用os.walk()和os.listdir()两种方法,获取指定文件夹下的文件名. 一.os.walk() 模块os中的walk()函数可以遍历文件夹下所有的文件. os.walk(top, t ...

  2. android发布版本的几个命令

    ./build_native.sh /opt/software/apache-ant-1.8.2/bin/ant clean #/opt/software/apache-ant-1.8.2/bin/a ...

  3. 【LOJ】#2059. 「TJOI / HEOI2016」字符串

    题解 我们冷静一下,先画一棵后缀树 然后发现我们要给c和d这一段区间在[a,b]这一段开头的串里找lcp 而lcp呢,就是c点的祖先的到根的一段,假如这个祖先的子树里有[a,b - dis[u] + ...

  4. 用 Java 实现一个快速排序算法

           快速排序是排序算法中效率最高的一种,它是利用递归的原理,把数组无限制的分成两个部分,直到所有数据都排好序为止. 快速排序是对冒泡排序的一种改进.它的基本思想是通过一趟排序将要排序的数据分 ...

  5. NHibernate 学习导航

    http://www.cnblogs.com/lyj/archive/2008/10/30/1323099.html

  6. console在ie下不兼容的问题(console在ie9下阻碍页面的加载,打开页面一片空白)

    在页面中加入以下代码: window.console = window.console || (function() { var c = {}; c.log = c.warn = c.debug = ...

  7. OpenVAS漏洞扫描基础教程之连接OpenVAS服务

    OpenVAS漏洞扫描基础教程之连接OpenVAS服务 连接OpenVAS服务 当用户将OpenVAS工具安装并配置完后,用户即可使用不同的客户端连接该服务器.然后,对目标主机实施漏洞扫描.在本教程中 ...

  8. github下载项目

  9. BZOJ 4066 简单题(KD树)

    [题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=4066 [题目大意] 要求维护矩阵内格子加点和矩阵查询 [题解] 往KD树上加权值点,支 ...

  10. C语言学习常见错误分析

    错误分类     语法错 逻辑错 运行错 0.忘记定义变量: int main() { x=3;y=6;  printf("%d/n",x+y); } 1.C语言的变量一定要先定义 ...