JavaWeb01-动态网页


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在第一次请求时会比较慢!



原文地址:https://www.cnblogs.com/9513-/p/7954001.html