Java Web开发基础(2)-JSP
上一篇博我粗略的介绍了一下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的更多相关文章
- Java Web开发基础(3)-JSTL
在DRP项目中接触到了JSTL标签库,对我这样的比較懒的人来说,第一感觉就是"惊艳". JSTL标签库的使用.能够消除大量复杂.繁复的工作.工作量降低的不是一点半点.是降低了一大半 ...
- java Web开发基础(一)工程项目文档结构
2013年毕业后,在深圳工作开始是用.NET ASP.NET MVC做的项目,后来公司用java来做.于是就从.NET转java了.从.NET转java不是那么的难.今天刚好是清明节放假三天,整理了j ...
- Java Web开发基础(1)-Servlet
概述 Servlet技术是对webserver的扩展,要理解这个,可能先了解一下什么是Webserver以及它的功能,特别是它的不足是非常有帮助的,可參考:点击打开链接.另外.Servlet也是一个用 ...
- java web开发基础实例(javabean+jsp+servlet+jdbc)
JavaBean:用于传递数据,拥有与数据相关的逻辑处理 JSP:从Model接收数据并生成HTML Servlet:接收HTTP请求并控制Model和View jdbc:用于配置环境 一.[建立数据 ...
- Java web开发,在一个jsp里放太多java代码的后果,摘自 java web轻量级开发面试教程
现要做一个简单的登录页面,如果用户通过验证,会显示Welcome用户名的欢迎词,反之则返回登录页面让用户再次输入 这部分的完整代码是JSPDemo项目里的login.jsp,下面来分析一下关键代码. ...
- Java Web开发基础零星知识
1. Web的三个核心标准 万维网的核心标准有三个,分别是URL.HTTP和HTML. URL(统一资源定位符,Universal Resource Locator),为描述Internet上的网页以 ...
- Java Web开发之详解JSP
JSP作为Java Web开发中比较重要的技术,一般当作视图(View)的技术所使用,即用来展现页面.Servlet由于其本身不适合作为表现层技术,所以一般被当作控制器(Controller)所使用, ...
- Spring MVC + Spring + Mybitis开发Java Web程序基础
Spring MVC + Spring + Mybitis是除了SSH外的另外一种常见的web框架组合. Java web开发和普通的Java应用程序开发是不太一样的,下面是一个Java web开发在 ...
- java web 开发入门 --- tomcat/servlet/jsp
在做java web 开发时,要先安装tomcat.它是一个web服务器,也叫web容器,我们把写好的jsp, html页面放到它里面,然后启动它,就可以用浏览器访问这些页面,地址栏中输入localh ...
随机推荐
- jquery中获取iframe的id的方法:
jquery中获取iframe的id的方法: var frameId = window.frameElement && window.frameElement.id || ''; al ...
- Java集合类 课后练习
1.Pg235--2分别向Set集合以及List集合中添加“A”,“a” , "c" , "C" , "a" 5个元素,观察重复值“a”能 ...
- Proxy 代理
意图 为其他对象提供一种代理以控制对这个对象的访问 动机 对一个对象进行访问控制的原因是为了只有在我们确实需要这个对象时才对它进行创建和初始化 典型例子:智能指针的实现,通过引用计数来决定“=” 复制 ...
- Ajax的text/plain、application/x-www-form-urlencoded和application/json
Ajax的text/plain.application/x-www-form-urlencoded和application/json HTTP请求中,如果是get请求,那么表单参数以name=valu ...
- Educational Codeforces Round 44 (Rated for Div. 2) F - Isomorphic Strings
F - Isomorphic Strings 题目大意:给你一个长度为n 由小写字母组成的字符串,有m个询问, 每个询问给你两个区间, 问你xi,yi能不能形成映射关系. 思路:这个题意好难懂啊... ...
- Android Studio奇技淫巧
No1: Ctrl+E:显示最近浏览过的文件 Ctrl+Shift+E:显示最近编辑过的文件 Ctrl+Tab:切换最近编辑过的文件 No2: 条件断点:断点右键 No3: 全局断点 这样只要碰到空指 ...
- Android消息总线的演进之路:用LiveDataBus替代RxBus、EventBus
背景 对于Android系统来说,消息传递是最基本的组件,每一个App内的不同页面,不同组件都在进行消息传递.消息传递既可以用于Android四大组件之间的通信,也可用于异步线程和主线程之间的通信.对 ...
- [漏洞复现]CVE-2018-4887 Flash 0day
1.漏洞概述 2018年2月1号,Adobe官方发布安全通报(APSA18-01),声明Adobe Flash 28.0.0.137及其之前的版本,存在高危漏洞(CVE-2018-4878). 攻击者 ...
- 理解事件(Event)
Overview 在前几章,我们已经对委托有了一个完整的了解了,本章将会对事件进行一下介绍: 相对于委托,事件再是我们更加频繁的接触的,比如 鼠标的click 事件,键盘的 keydown 事件等等. ...
- 微信小游戏 lodash 问题
在微信小游戏里引入 lodash 会报错 window._ = require("./js/thirdParty/lodash.js"); 所以得把lodash.js 里面的源码 ...