Web基础知识

Web基础知识

    • 几个专有名词
    • 常见协议:
    • HTTP 超文本传输协议
    • URL编码
    • 动态网页与静态网页
    • Web Container(Web容器)、服务器、容器
    • MVC模式

几个专有名词

**HTML(HyperText Markup Language): ** 超文本标记语言
**HTTP(HyperText Transfer Protocol): ** 超文本传输协议
URL(Uniform Resource Locator)

URL的格式:<协议>://<用户>:<密码>@<主机>:<端口号>/<路径>
协议:指定以何种方式获取资源

常见协议:

  • ftp (File Transfer Protocol,文件传输协议)
  • http (HyperText Transfer Protocol,超文本传输协议)
  • mailto (电子邮件)
  • file (特定主机文件名)

HTTP 超文本传输协议

连个基本的特征:

  1. 基于请求(Request)/响应(Response)模型
  2. 无状态(Stateless)通信协议,即服务器在响应客户端之后,就不会记得客户端的信息,更不会去维护与客户端有关的状态。

Get请求与Post请求:

请求类型 Get请求 Post请求
特点 1、请求参数是在URL后跟一个问号 (?) ,然后是请求参数名称(name)与请求参数值(value),中间以等号(=)表示成对关系。若有多个请求参数,则以(&)连接。 2、可以发送的请求参数长度有限(不同的浏览器有所不同)。 3、请求参数可以在地址栏中看到。 4、可以加入浏览器的书签。 1、请求参数放在信息体(Messenge body)中。 2、信息体中的内容长度不受限制,所以Post请求可以发送大量的请求。 3、并且在地址栏中也不会出现请求参数。 4、由于请求参数不会出现在浏览器地址栏中,所以无法加入浏览器的书签。
适用范围 1、若请求参数长度有限可以用Get请求。 2、需要设定书签。 3、等幂操作,纯粹取得服务器资源,而不改变服务器的状态。 1、请求参数很长或者类似与文件上传这样的大量数据 。 2、请求参数中含有安全性考虑的参数,如卡号,密码等等。 3、需要发送请求至服务器获取最新的资料,而不是从Cache缓存中获取旧资料。(Get请求实现相同效果需要加时间戳) 4、非等幂(non-idempotent)操作 ,若请求会改变服务器的状态,例如增、删、更新,则应该使用Post请求。

URL编码

如果要在请求参数中用到保留字符和不安全的字符,必须在 % 字符后以十六进制数值表示方式,来表示该字符的八个位数值。
Web基础知识_第1张图片
在 UTF-8 编码下,一个中文字符会用三个字节来表示,那么在URL中就会用三个两位的十六进制数来表示这一个中文字符。 比如在URL后的请求参数中包含“林”字,那么其表示方式是"%E6%9E%97",现在一般的浏览器会直接将网址里面的中文的URL编码显示为中文,其实正真的还是URL编码。
java.net.URLEncoder类的静态 encode() 方法也可以用来指定请求参数中字符的编码。如:

String text = URLEncoder.encode("林",“UTF-8);     //UTF-8编码
String text = URLEncoder.encode("林",“BIG5”);     //BIG5编码

动态网页与静态网页

**静态网页: **请求服务器上的网页时,服务器不对网页文件做任何的处理,直接将网页文件当做响应发送给浏览器。如HTML。
**动态网页:**根据请求参数、表头或实际服务器上的状态,以程序的方式动态产生响应内容,再发送给浏览器。这类动态处理网页的技术有:CGI、PHP、ASP、Servlet&JSP。

Web Container(Web容器)、服务器、容器

转自:https://www.cnblogs.com/leiqiannian/p/7797188.html
服务器: 硬件角度上说就是一台高性能的Computer。我们通常指的服务器其实应该是装有能够处理具体请求事务的服务器软件的Computer。比如最常见的www服务器、mail服务器、计费服务器、ftp服务器等等。很多时候人们常把诸如Tomcat、IIS、Weblogic 也称之为web服务器,其实这些只是用于开发、集成、部署和管理Web应用、网络应用和数据库应用的应用服务器软件。

容器: Servlet没有main()方法。Servlet受控于另一个Java应用,这个Java应用称为容器。Tomcat就是这样一个容器。如果web服务器应用得到一个指向servlet的请求(而不是其他请求,如请求一个普通的静态HTML),此时服务器不是把这个请求交给servlet本身,而是交给部署该servlet的容器,要由容器调用servlet的方法,如doPost()或doGet()。
容器能提供什么?
通信支持:利用容器提供的方法,你能轻松地让servle与Web服务器对话;
生命周期管理:容器控制着servlet的生与死。它会负责加载类、实例和初始化servlet、调用servlet方法,并使servlet实例能够被垃圾回收。
多线程支持:容器会自动地为它接收的每个servlet请求创建一个新的java线程。针对客户机的请求,如果servlet已经运行完相应的HTTP服务方法,这个线程就会结束(也就是会死掉)。
声明方式实现安全:利用容器,可以使用XML部署描述文件配置(和修改)安全性,而不必将其硬编码写到servlet(或其他)类代码中。
JSP支持:负责把JSP代码翻译成真正的java。

web容器的应用程序规范:
web应用程序需要部署到web容器中才能运行,两者都必须符合javaEE规范。web容器的应用程序规范如下:
1.目录结构规范:javaWeb程序的所有文件都包含在一个文件夹中,包含WEB-INF子文件夹和META-INF子文件夹,WEB-INF文件夹包含classes文件夹和lib文件夹以及web.xml。
如Tomcat结构目录
/bin:包含启动和关闭Tomcat的文件
/conf:包含不同的配置文件:server.xml,web.xml,tomcat-user.xml
/lib:包含Tomcat使用的JAR文件
/logs:包含日志文件
/webapps:包含应用程序示例及自己开发的程序
/work:包含有JSP生成的Servlet
2.jar文件放在WEB-INF/lib文件夹中。
3.web.xml规范:是整个web应用程序的描述文件,里面定义者该Web应用程序可供访问的信息资源以及这些资源的行为,包括servlet,过滤器,监听器,安全验证等信息资源。
4.其他资源文件,如jsp,html,图片和声音的放在与WEB-INF同一级目录下,因为WEB-INF文件夹对于客户端是不可见的。

web容器是一种服务程序,是能够支持发布web程序的软件,在服务器一个端口就有一个提供相应服务的程序,而这个程序就是处理从客户端发出的请求,如JAVA中的Tomcat容器,ASP的IIS或PWS都是这样的容器。一个服务器可以多个容器。
b/s结构下,以常见的自来水供水系统为例来说,整个web系统好比完整的供水系统,用户只需要有水龙头(Broswer),水管相当于计算机网络(network),自来水公司的供水系统(即Server),其中的压力水罐就是容器(Container)了。
Tomcat是Apache-Jarkarta的一个子项目,是一个开放式源码,免费支持JSP和Servlet技术的容器,它同时又是一个Web服务器软件。
Servlet和JSP两者分工协作,Servlet侧重于解决运算和业务逻辑问题,JSP则侧重于解决展示问题。 Servlet与JSP一起为Web应用开发带来了巨大的贡献,后来出现的众多Java Web应用开发框架都是基于这两种技术的,更确切的说,都是基于Servlet技术的。
servlet容器的主要任务是管理servlet的生命周期。 web容器更准确的说应该叫web服务器(Python的web容器有web.py等),它是来管理和部署web应用的。还有一种服务器叫做应用服务器,它的功能比web服务器要强大的多,因为它可以部署EJB应用,可以实现容器管理的事务,一般的应用服务器有weblogic和websphere等,它们都是商业服务器,功能强大但都是收费的。web容器最典型的就是tomcat了,Tomcat是web容器也是 servlet 容器。

MVC模式

Controller(控制器):取得请求参数,验证请求参数,转发请求给画面,这些都使用程序代码来实现。
Model模型):接受控制器的请求调用,负责处理业务逻辑,负责数据存取逻辑等,这部分还可依应用程序功能,产生各种不同职责的模型对象,模型使用程序来实现。
View(视图):接受控制器请求调用,会从模型提取运算后的结果,根据需求呈现所需的画面,在职责分配良好的情况下,基本上可做作到不出现程序代码。

你可能感兴趣的:(java开发)