JAVA WEB

1. B/S 与C/S区别

1.1 C/S

c/s即Client/Server(客户机/服务器)结构。它在技术上很成熟。

特点:

  • 维护成本高(因为采用cs结构时,对于不同的客户端要开发不同的程序,而且软件安装调试和升级都需要在所有客户机上进行。)
  • 在本地安装,如果需要更新,需要安装更新程 序,
  • 还可能会造成更新失败
  • 只能够在局域网内访问(管理系统)
  • 界面开发不够灵活
  • 交互性强
  • 具有安全的存取模式
  • 网络通信量低
  • 响应速度快
  • 利于处理大量数据
  • 客户端负载大(cs客户端不仅负责和用户的交互,收集用户信息,而且还需要通过网络向服务器发出请求。而bs把事务处理逻辑部分交给了服务器,客户端只是负责显示。)

例如:QQ,WeGame,Word软件都是属于c/s的软件 

1.2B/S

B/s即Browser/Server(浏览器/服务器)结构。就是只安装维护一个服务器(Server),而客户端采用浏览器(Browse)运行软件。

  • 维护成本相比较略低,维护方便
  • 无需在本地安装,如果需要更新,直接更新服务 器端的内容,客户端使用浏览器进行访问
  • 可以支持广域网,分布性强
  • 依赖于HTML5\CSS3\JS...实现更加灵活的页面设 计和开发
  • 开发简单且共享性强
  • 安全性差

 例如:taobao、京东、百度金融大型应用

2.http协议

        超文本传输协议(Hyper Text Transfer Protocol, HTTP)是一个简单的请求-响应协议,它通常运行在TCP 之上。HTTP协议是用于从WWW服务器传输超文本到本地浏览器的传输协议。他是应用层协议,由请求和响应构成,是一个标准的个客户端和服务器模型。它指定了客户端可能发送给服务器什么样的消息 以及得到什么样的响应。请求和响应消息的头以ASCII形 式给出;而 消息内容则具有一个类似MIME的格式。这 个简单模型是早期Web成功的有功之臣,因为它使开发 和部署非常地直截了当。

2.1 协议

        计算机与计算机之间的通讯语言就叫做协议,不同的计算机之间只有使用相同的协议才能通信。所以网络协议就是为计算机网络中进行数据交换而建立的规则,标准或约定的集合。

2.3 OSI模型

.        将计算机网络体系结构的通信协议划分为7层,自上而下分别是:物理层,数据链路层,网络层,传输层,会话层,表示层,应用层。

2.4 http协议特点

  • 支持客户/服务器模式,也支持B/S结构

  • HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。

  • HTTP允许传输任意类型的数据对象,正在传输的类型由Content-Type加以标记

无连接

无连接是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断 开连接。采用这种方式可以节省传输时间。在1.1 版本中,采用长连接形式,但是不代表一直保持 连接,当超过连接时长限制时,就会断开连接。

无状态

HTTP协议是无状态协议,无状态是指协议对于事务处理没有记忆能力,缺少状态意味着如果后续处理需要前面的信息,则 它必须重传,这样可能导致每次连接传送的数据量增大。另一方面好处就是,如果后续的连接不 需要之前提供的信息,响应就会比较快.而为了解决HTTP的无状态特性,出现了Cookie和Session技 术

2.5 HTTP工作原理

  • 客户端的请求的过程
  1. 向服务器发送请求。
  2. 接收服务器返回的报文并解释成友善的信 息供阅读。
  3. 客户端大概有:浏览器,应用程序等。
  4. 如今时代可能使用最多的就是浏览器, 当用户在地址栏输入网址回车时,浏览器会为什 么做如下处理: 

        a.解析协议和域名。

        b.使用HTTP协议并创建请求报文向服务端发 送请求。

        c.接收服务器返回的内容并展示给客户。  

  • 服务端的响应过程 
  1. 服务器端在接收到客户端发送的请求后会 开始处理请求。
  2. 服务器处理过程:服务器软件一直在监听 端口是否有新的请求达到,如iis或者tomcat 在建立web站点后,默认会一直监听80端口 等待HTTP请求到达服务器。

        a.建立连接:如果客户端已经打开道服务器的 持久连接,则可以直接使用,否则客户端需要 在服务器打开一条新的连接。

         b.接收请求报文:连接上有数据到时,web服 务器会从网络连接中读取数据,并将请求报文 中的内容解析出来。

        c.处理请求:当请求被接收后,服务器便可以 根据请求报文进行处理了。例如post方法中 提出报文主体的数据并插入到数据库中。

        d.访问资源:请求处理完后,比如web会根据 数据生成一系列的HTML页面或图片等信息, 此步骤将访问这些存储在服务器上的物理文 件。

        e.构建响应:web服务器在识别资源后,构造 响应报文,响应报文包括:状态码,响应头, 响应主体等内容。 f.发送响应:服务器将响应的数据发送给客户 端机器。

         g.记录日志:请求结束,服务器会在日志文件 中记录一条请求日志。 

2.6 http的组成(URL)

  1. 协议部分 该URL的协议部分为“http:”,这代表网页使用的是 HTTP协议。在Internet中可以使用多种协议,如 HTTP,FTP等等本例中使用的是HTTP协议。在” HTTP”后面的“//”为分隔符
  2. 域名部分 该URL的域名部分为www.aspxfans.com, URL中也 可以使用ip地址作为域名
  3. 端口部分 跟在域名后面的是端口,域名和端口之间使用“:”作为 分隔符。如果没有,那么说明URL使用的是默认端口 80,端口不是URL的必须组成部分
  4. 虚拟目录部分 从域名后的第一个“/”开始到最后一个“/”为止,是虚拟 目录部分。虚拟目录也不是一个URL必须的部分。本 例中的虚拟目录是“/news/”
  5. 文件名部分 从域名后的最后一个“/”开始到“?”为止,是文件名部 分,如果没有“?”,则是从域名后的最后一个“/”开始到 “#”为止,是文件部分,如果没有“?”和“#”,那么从 域名后的最后一个“/”开始到结束,都是文件名部分。 本例中的文件名是“index.asp”。文件名部分也不是一 个URL必须的部分,如果省略该部分,则使用默认的 文件名
  6. 锚部分 从“#”开始到最后,都是锚部分。本例中的锚部分是 “name”。锚部分也不是一个URL必须的部分
  7. 参数部分 从“?”开始到“#”为止之间的部分为参数部分,又称搜 索部分、查询部分。本例中的参数部分为 “boardID=5&ID=24618&page=1”。参数可以允许有 多个参数,参数与参数之间用“&”作为分隔符。 

        http://域名/资源

        http://ip地址:端口号/资源?xxx=xxx&xxx=xxx 

2.7 请求/响应报文 

客户端与服务器之间的信息传递使用的载体 (overload)叫做报文,报文分为请求和响应两个部分。 

  • 组成

        请求行:包含请求方法,要访问的资源以及所 舒勇的HTTP版本

        请求头部:说明服务器要使用的附加信息

        空行:请求报文头部后的空行是必须的

        请求体:get往往不存在请求体,post请求体包 含请求的参数(有时候在负载中)

  • http请求方式

GET(获取):请求获取Request-URI所标识的 资源。(没有请求体,请求参数和对应的值附在URL后,参数用key=value键值对 的方式书写,多个参数使用&分割,传输的参数长度是没有限制的。不 同的浏览器会对get做长度限制)

POST(更新或新增):在Request-URI所标识的 资源后附加新的数据。(有请求体,数据相对安全,数据无大小限制。向指定资源提交表单数据进行处理 请求,参数数据被包含在请求体中, 以名称/值的形式出现,POST请求可能会导致新的资 源的建立和/或已有资源的修改)

HEAD:请求获取由Request-URI所标识的资 源的响应消息报头。

PUT(新增):请求服务器存储一个资源,并用 Request-URI作为其标识。

DELETE(删除):请求服务器删除Request-URI 所标识的资源。

TRACE:请求服务器回送收到的请求信息,主 要用于测试或诊断。

CONNECT:保留将来使用。

OPTIONS:请求查询服务器的性能,或者查 询与资源相关的选项和需求。

get post的本质

GET和POST都是 TCP连接,并无实质的区别。但是由于 HTTP/浏览器的限定,导致它们在应 用过程中体现出了一些不同。GET产 生一个数据包,POST产生两个数据 包。对于GET请求,浏览器会把http header 和 data 一并发出去,服务器 响应200(返回数据)。而对于POST,浏 览器先发送header,服务器响应100 continue,浏览器再发送data,服务 器响应200。

2.8 http状态码

10x: 消息,指连接状态(建立请求)

20x: 成功

30x:重定向 (适用缓存)

40x:找不到资源【客户端错误】

50x:服务器错误

3. Tomcat服务器

作用:

Tomcat是一个应用服务器。能够解析JAVA的代码, 生成.class文件,同时将java转换为html相应的内容。

bin: 放置所有的可执行文件

conf:放置所有的配置文件

lib:放置所有的支持jar包

logs:日志文件

temp:临时文件存储目录

webapps:放置所有的web应用

work:放置被编译之后的.class文件

4. JSP的基本语法与运行机制

4.1 JSP的基本语法

  • 指令(代表着当前页面的属性设置)
 <%@ page 属性=“属性值”%>

        contentType:页面的内容的类型 text/html; charset=utf-8

        import:导入要用到的包

        language: 代表页面的编程语

<%@ page
contentType="text/html;charse
t=UTF-8" language="java" %>
  • 静态代码  (指的页面中的所有静态代码(html\css\js\图片)) 
  • 小脚本 (小脚本就是在页面中的多段java代码。)
<%
代码段
%>
  •  表达式( 类似于输出语句,能够将内容输出到页面)
<%=java代码%>
  •  声明 (能够在页面中编写java的方法,该形式已经被彻 底废弃了)
<%!
方法
%>
  • 注释

        html注释:在客户端是能够被看到的 

<!--
-->

         jsp注释:无法在客户端是能够被看到的

<%--
//单行注释
/***/ 多行注释
--%>

4.2 JSP的运行机制

 运行流程:

1. 在客户端第一次请求时,先对JSP进行翻译,形成“JAVA”文件

2.之后会对java文件编译 成为”.class“文件

3. 最后会执行。

4. JSP在第一次执行时,速度较慢,从第二 次开始,就会直接使用已经编译好的.class运行,所以性能能够提升。

5. 如果对JSP中的配置进行了修改,那么服务器一定要重启! 

4.3 常见的问题

1. 404 问题

服务器未启动

页面名称输入错误

文件夹可能配置问题

将页面放置在了WEB-INF目录,该目录是 一个系统的配置目录,所以不能够随意访问

web应用未部署

2. 500问题

服务器中代码出错了,可以查看页面的错 误信息结合idea中输出的信息判断错误点。

5.JSP内置对象

JSP中一共包含9个内置对象,最大的特点就是能够 直接使用,而无需使用者手动实例化。实例化的过程被 web容器完成了。

  •  page
  • pageContext  JSP的页面容器
  • out 页面输出
  • config 服务器配置信息,可以取得初始化参数
  • exception
  • request 获取用户的请求信息

getParameter(String name) 获取表单提交的信息。 

getParameterValues(String name)获取表单组件对应多个值时的请求数据

setCharacterEEncoding(String  charset)指定每个请求的编码

RequsetDispatcher getRequestDispatcher(String path)返回一个RequsetDispatcher对象,该对象的forward()方法用于转发请求

  • response 服务器向客户端的回应信息
  • session  用来保存每一个用户的信息
  • application 表示所有用户的共享信息

四种属性范围

page(pageContext):只在一个页面中保存属性。 跳转之后无效。
request:只在一次请求中有效,服务器跳转之后有效。 客户端跳无效
session:在一次会话中有效。服务器跳转、客户端跳转都有效。 网页关闭重新打开无效
application:在整个服务器上保存,所有用户都可使用。 重启服务器后无效
注意:如果设置过多的application属性范围会影响服务器性能。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值