上一篇博我粗略的介绍了一下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. 使用CSS3 @media 设置页面自适应

    参考CSS3 @media 查询 如果文档宽度小于 300 像素则修改背景演示(background-color): @media screen and (max-width: 300px) { bo ...

  2. Web Api之Cors跨域以及其他跨域方式(三)

    我们知道ajax不能跨域访问,但是有时我们确实需要跨域访问获取数据,所以JSONP就此诞生了,其本质使用的是Script标签,除JSONP以外还有另外实现跨域方式 一.手动实现JSONP跨域 1.首先 ...

  3. [python selenium] 操作方法整理

    个人笔记,摘抄自虫师python selenum,仅供个人参考 1.安装: pip install selenium 下载webdriver # webdriver 下载并放置在python主目录 · ...

  4. CTF实验吧让我进去writeup

    初探题目 两个表单,我们用burp抓包试试 这时候我们发现Cookie值里有个很奇怪的值是source,这个单词有起源的意思,我们就可以猜测这个是判断权限的依据,让我们来修改其值为1,发送得到如下显示 ...

  5. Java拾遗补缺

    JDK9的lib目录下已经不再包含dt.jar和tool.jar.

  6. poj-2253-poj-1797_最短路练习

    title: poj-2253-poj-1797_最短路练习 date: 2018-11-17 11:48:51 tags: acm 刷题 categories: ACM-最短路 概述 一道最短路的变 ...

  7. Qt Quick快速入门之qml布局

    Qml里面布局主要有两种,锚点布局.Grid布局. 锚点布局使用anchors附件属性将一个元素的边定位到另一个元素的边,从而确定元素的位置和大小.下面是示例 import QtQuick 2.3 i ...

  8. BZOJ1878: [SDOI2009]HH的项链[树状数组+离线 | 主席树]

    题意: 询问区间不同种类颜色数 [2016-11-15] 离线好厉害 对于每一个区间询问,一个数只考虑一次,那么考虑他最后出现的一次 将询问按r排序 从1到n扫描,用树状数组维护一个位置应不应该考虑( ...

  9. BZOJ3611 HEOI2014大工程

    先建虚树,然后统计答案. 对于这个两点间最大值和最小值的操作我参考了hzwer的代码. 建虚树时注意判自环 By:大奕哥 #include<bits/stdc++.h> using nam ...

  10. BZOJ.2738.矩阵乘法(整体二分 二维树状数组)

    题目链接 BZOJ 洛谷 整体二分.把求序列第K小的树状数组改成二维树状数组就行了. 初始答案区间有点大,离散化一下. 因为这题是一开始给点,之后询问,so可以先处理该区间值在l~mid的修改,再处理 ...