01.动态网页的优势
动态网页是在服务器端运行的程序!随不同用户,不同条件 返回不同的结果!
001.交互性:网页会根据用户的要求和选择而动态的改变和现实网页内容!
002.自动更新:无需改变页面的代码,便会自动更新页面内容!
003.随机性:当不同的时间,不同身份的用户访问同一页面会产生不同的的页面效果!
02.动态网页是静态网页的替代品吗?
两者各有优点,选择哪种页面取决于网站功能的需求和内容的多少。如果网站的功能简单,内容少,采用静态网页的方式更合适!
反之,一般要使用动态网页!
03.B/S架构(Browser/Server 浏览器/服务器)
001.在B/S架构下,应用程序 完全 放在应用服务器上,并通过应用服务器与数据库服务器进行通信,系统界面通过浏览器展现。
002.B/S和C/S各自优势
B/S的优势:
维护和升级方式简单。C/S架构必须安装和配置客户端软件。如果系统需要更新,必须对每一个客户端都进行更新!
B/S架构中,软件应用的业务逻辑完全在服务器端实现,所有的客户端只是浏览器,不需要维护!(升级浏览器需在客户端进行)
维护人员只需要关注服务器端软件的软件更新!
C/S的优势:
B/S的界面没有C/S的友好,很难做出像office这样界面丰富的软件。
在速度和安全性上需要花费巨大的设计成本!
由于B/S架构的交互是 请求/响应 模式的,一旦数据信息发生变化,必须通过刷新页面才能看到更新的数据信息!
C/S架构一般面向固定的用户群,一般高度机密的信息系统采用C/S架构!
B/S架构适用于公开信息发布,对信息的保密性要求较低的情况!

003.B/S架构的工作流程
01.浏览器接收用户的输入
02.浏览器向服务器发送请求,等待服务器响应(此请求先到应用程序服务器,再到数据库服务器!)
03.数据处理:服务器通常使用服务器脚本语言(Java等)进行数据库访问
04.服务器向浏览器发送响应!(如动态生成的html页面,并有浏览器进行渲染后展现给用户!)

04.URL(Uniform Resource Locator) 统一资源定位符!

01.URL用于完整的描述Internet上网页和其他资源的地址的一种标识方法!(简单说URL就是网址!)
02.在Internet上所有资源都有一个独一无二的URL!
03.URL的组成! http://localhost/news/index.jsp
协议:http ==> HyperText Transfer Protocol 超文本传输协议!
https ==> 安全的! safe
该协议支持简单的 请求/响应对话!对于Web服务器是最常用的协议!

服务器域名 IP:localhost

端口号:
端口是用于服务器内外部通信的通道!当外部访问服务器时就需要通过指定的通道来访问!
为了避免复杂的ip地址,通常用域名来代替!例如百度ip为 202.108.22.5 域名为baidu.com

路径:
包含两层含义!
例如news/index.jsp
news是指Web应用程序 对外发布时 对应的上下文路径!即Web应用的根目录!index.jsp代表具体的资源!

05.常用的Web服务器(Web容器)
001.Tomcat
002.JBoss
003.Jetty

06.Web应用的目录结构
/ :根目录,该目录下的所有文件 对客户端都可以访问!(jsp html css js ..)
/WEB-INF:存放应用程序所使用的各种资源,该目录及其子目录对客户端 不可以访问!(其中包括web.xml 部署描述符)
/WEB-INF/classes :存放应用程序 所有的class文件!
/WEB-INF/lib : 存放Web应用使用的 jar文件!

注意:01.Tomcat运行过程中,Tomcat类加载器会先加载 classes目录下的class文件!然后再加载 lib目录下的 jar文件!
如果在这两个目录下存在同名的类,那么classes目录下的类具有优先权!
02.每个JavaWeb应用都有一个核心文件 即web.xml !(保存在WEB-INF目录下!)
web.xml 控制整个应用程序的行为方式和方法!
03.修改web.xml后,需要重启Web服务器!
04.web.xml 文件中的<welcome-file-list>标签用于设定web应用的起始访问页面列表!
<welcome-file>用于指定某一具体页面!
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
...
</welcome-file-list>

07.JSP页面 Java Server Page(Java服务器端的页面)

01.JSP技术是在 html页面中嵌入 Java脚本语言,然后由应用程序服务器中的 JSP容器来编译和执行 之后将产生的结果返回给客户端!
02.JSP的组成:

静态内容
JSP指令
JSP表达式
JSP小脚本
JSP声明
注释等元素构成!

001.静态内容:如 html文本 与Java和JSP的语法无关!
002.JSP指令元素: <%@ %>
例如 01.page指令,在一个JSP页面中可以多个page指令!page指令只对 当前页面有效!
page指令的属性:
import="java.util.*"
language="java"
contentType="text/html;charset=utf-8"
contentType属性告诉web容器在客户端浏览器上以哪种格式/编码 显示“响应”的内容!
02.include指令 等

003.JSP脚本元素:
小脚本 <% java代码 %>
表达式 <% java变量/java表达式 %> 不能在表达式结尾加分号 “;” !
声明 <%! %>用来定义方法/变量 (都是全局的!)

004.JSP注释:<%-- 注释 --%> 在客户端浏览器通过查看源码 是看不到的! (安全的!)
html注释:<!-- 注释 --> 查看源码可以看到!(不安全的!)
在JSP脚本中使用注释: <% //单行注释 %> 多行<% /*多行注释*/ %> 查看源码看不到!(安全的!)

08.JSP 执行过程! *****

当请求发送至服务器,web容器通过三个阶段实现处理!

01. 翻译阶段!
用户通过浏览器访问jsp时,web容器(tomcat)中的 jsp引擎 负责把jsp 转化为 java文件
001.jsp声明 ==> java文件中的成员方法!
002.jsp脚本 ==> java文件中 _jspService()方法中的一段代码!
003.jsp表达式 ==> java文件中 _jspService()方法中的一段代码! out.print(表达式);
004.普通html代码 ==> _jspService()中一段out代码! out.print("html标签");

02. 编译阶段!
服务器将java文件编译成 class文件

03. 执行阶段!
服务器执行 class文件!
001. 首先对生成的java类进行实例化!
002.调用实例化后的 对象._jspService() 输出 html 给浏览器!

注意:无论请求的URL 是 html 还是jsp 服务器响应回来的都是 html (jsp ==> html的过程发生在服务器内部!)

04. 浏览器 渲染html数据 显示给用户!

注意:一旦web容器把jsp文件翻译和编译完成。web容器就会将 编译好的 class字节码文件保存在 内存中!
当用户再次请求相同的jsp时, 就可以 重用 这个编译好的class字节码文件!而不会把jsp重新翻译编译!
这样做大大提升了 web应用程序的性能!(请求后服务器直接运行class文件!)
但如果对jsp进行了修改,web容器就会重新 翻译编译!
综上所述,jsp在第一次请求时会比较慢!

JavaWeb01-动态网页的更多相关文章

  1. node基础12:动态网页

    1.显示动态网页 又到了激动人心的时刻,马上就可以使用node创建动态网站了,其原理为: 在HTML模板中使用占位符 根据请求路径,确定需要返回的页面 根据请求参数来确定静态模板中占位符的值 使用正则 ...

  2. 用超链接提交表单,实现在动态网页的url中隐藏参数

    动态网页中怎么隐藏url参数传递 我们在做动态网站的时候往往会在各个页面之间传递参数,而这些参数的名称和值都会在url地址栏中被暴露出来,这样一方面不安全,另一方面也不便于搜索引擎的收录,有的时候还有 ...

  3. python动态网页爬取——四六级成绩批量爬取

    需求: 四六级成绩查询网站我所知道的有两个:学信网(http://www.chsi.com.cn/cet/)和99宿舍(http://cet.99sushe.com/),这两个网站采用的都是动态网页. ...

  4. django"动态网页","动态url","调试方法"

    一.动态网页 其实只是每次刷新时,获取最新时间而已 1.urls.py from django.conf.urls import patterns, url, include urlpatterns ...

  5. 《The Django Book》实战--第二章--动态网页基础

    这章演示了一些最基本的Django开发动态网页的实例,由于版本不一样,我用的是Django 1.,6.3,有些地方按书上的做是不行的,所以又改了一些,写出来让大家参考. 这是一个用python写的一个 ...

  6. scrapy和selenium结合抓取动态网页

    1.安装python (我用的是2.7版本的) 2.安装scrapy:   详情请参考 http://blog.csdn.net/wukaibo1986/article/details/8167590 ...

  7. 转!!常用的4种动态网页技术—CGI、ASP、JSP、PHP

    1.CGI   CGI(Common Gateway Interface,公用网关接口)是较早用来建立动态网页的技术.当客户端向Web服务器上指定的CGI程序发出请求时,Web服务器会启动一个新的进程 ...

  8. 为采集动态网页安装和测试Python Selenium库

    1. 引言上一篇<为编写网络爬虫程序安装Python3.5>中测试小例子对静态网页做了一个简单的采集程序,而动态网页因为需要动态加载js获取数据,所以使用urllib直接openurl已经 ...

  9. Python爬虫实战(4):豆瓣小组话题数据采集—动态网页

    1, 引言 注释:上一篇<Python爬虫实战(3):安居客房产经纪人信息采集>,访问的网页是静态网页,有朋友模仿那个实战来采集动态加载豆瓣小组的网页,结果不成功.本篇是针对动态网页的数据 ...

  10. 动态网页爬取例子(WebCollector+selenium+phantomjs)

    目标:动态网页爬取 说明:这里的动态网页指几种可能:1)需要用户交互,如常见的登录操作:2)网页通过JS / AJAX动态生成,如一个html里有<div id="test" ...

随机推荐

  1. 2019-08-20 纪中NOIP模拟A组

    T1 [JZOJ6310] Global warming 题目描述 给定整数 n 和 x,以及一个大小为 n 的序列 a. 你可以选择一个区间 [l,r],然后令 a[i]+=d(l<=i< ...

  2. jacob导入项目

    在 resource 下创建一个 lib 将网上下载的 jacob.jar 放入其中 在 pom 文件中导入相对应的 jar 包 <dependency> <groupId>c ...

  3. 牛客CSP-S提高组赛前集训营4 赛后总结

    复读数组 分成 3 种区间算答案: 一个块内的区间 两个块交界处,长度小于块长的区间 长度不小于块长的区间 对于第三种区间,容易发现每个区间的权值一样,只需要算出个数即可. 对于前两种空间,我的思路是 ...

  4. vue 报错碰到的一些问题及其规范

    报错信息:Expected error to be handled(需要处理的错误) 这是因为回调函数里面的参数error没有运用到,所以可以不设置参数,或者在回调函数内console.log(err ...

  5. (转)spring 框架介绍

    转自:http://www.cnblogs.com/wawlian/archive/2012/11/17/2775435.html 1.Spring MVC简介 Spring MVC框架是有一个MVC ...

  6. Linux之温故知新1

    1.touch命令的使用 2.使用(cd -)可以在上次使用的目录来回切换 3.ls通配符的使用*代表任意字符和任意个字符, ?代表任意一个字符, [12345]中的任意一个字符, [1-5]中的任意 ...

  7. webpack之 plugin(插件)

    plugin plugin是插件的意思,通常用来对某个现有的架构就行拓展 webpack中的插件,就是对webpack现有功能的各种扩展,比如打包优化,文件压缩等 loader和plugin区别 lo ...

  8. JS高级---沙箱小案例

    沙箱小案例 substr截取, 从指定的字段开始截取 (function () { var str="小白喜欢小黑"; str=str.substr(2); console.log ...

  9. AcWing 1027. 方格取数

    #include<iostream> using namespace std ; ; *N][N][N]; int w[N][N]; int n; int main() { cin> ...

  10. HDU-1719 Friend

    刚开始想打个表... 结果我发现我理解错了题目意思,以为a,b必须是两个不同的数字,然后完全无法理解样例的3为什么是friend number...很尴尬就只能去网上找题解,才发现a,b可以相等(太菜 ...