JavaWeb总结

时间:2021-6-4 作者:qvyue

1、WEB开发基本知识

HTTP协议:HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网服务器传输超文本到本地浏览器的传送协议。HTTP是一个基于TCP/IP通信协议来传递数据。HTTP协议工作于客户端-服务端架构为上。浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求。Web服务器根据接收到的请求后,向客户端发送响应信息。

JavaWeb总结
HTTP协议

静态web资源(如html 页面):客户端发送请求到web服务器,web服务器从内存在取到相应的文件,返回给客户端,客户端解析并渲染显示出来一般供人们浏览的数据是不变的。

动态web资源:客户端请求的动态资源,先将请求交于web容器,web容器连接数据库,数据库处理数据之后,将内容交给web服务器,web服务器返回给客户端解析渲染处理。不同时间点访问web页面看到的内容可能各不相同。


Http请求(请求报文): 

(1)请求行(请求方式 资源文件路径 协议/版本号)

(2)请求头 (以键值对组装的信息,对客户端方面的描述)

(3)空行(标志请求头的结束)

(4)请求体 (请求数据)

Http响应(相应报文):

(1)状态行(协议/版本 状态码 信息)

(2)响应头(以键值对组装的信息,对服务端数据的描述)

(3)空行

(4)响应体(响应的具体数据)


请求方式:

GET 请求方式传递参数:

在浏览器地址栏中输入某个 URL 地址或单击网页上的一个超链接时,浏览器发出的HTTP请求消息的请求方式为 GET 请求

如果页面中的

表单元素的 method 属性设置为“ GET ”,浏览器提交FORM表单时生成的 HTTP 请求消息的请求方式为 GET 请求

使用 GET 请求方式给 WEB 服务器传参的格式:(http://127.0.0.1/project?name=tom&pass = 123456)请求数据会以 ? 的形式隔开拼接在请求头中,数据以键值对的形式存在

使用 GET 请求方式传递的数据量一般限制在 1KB 以下

POST 请求方式传递参数:

POST 请求方式主要用于向 WEB 服务器程序提交 FORM 表单中的数据:FORM 表单中的元素 method 设置为 POST

POST 方式将各个表单中字段元素及其数据作为 HTTP 消息的数据内容发送给 WEB 服务器,传送的数据量要比使用 GET 方式传送的数据量大得多

数据一般在请求体中传送


Java Servlet:

Java Servlet 是运行在 Web 服务器或应用服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层。

工作原理:

  Servlet接口定义了Servlet与servlet容器之间的契约。这个契约是:Servlet容器将Servlet类载入内存,并产生Servlet实例和调用它具体的方法。但是要注意的是,在一个应用程序中,每种Servlet类型只能有一个实例(单实例)。

    用户请求使Servlet容器调用Servlet的Service()方法,并传入一个ServletRequest对象和一个ServletResponse对象。ServletRequest对象和ServletResponse对象都是由Servlet容器(例如TomCat)封装好的,并不需要程序员去实现,程序员可以直接使用这两个对象。

    ServletRequest中封装了当前的Http请求,因此,开发人员不必解析和操作原始的Http数据。ServletResponse表示当前用户的Http响应,程序员只需直接操作ServletResponse对象就能把响应轻松的发回给用户。

    对于每一个应用程序,Servlet容器还会创建一个ServletContext对象。这个对象中封装了上下文(应用程序)的环境详情。每个应用程序只有一个ServletContext。每个Servlet对象也都有一个封装Servlet配置的ServletConfig对象。


2、Web服务器

Web服务器一般指网站服务器,是指驻留于网络上某种类型计算机的程序,可以处理浏览器等Web客户端的请求并返回相应响应,也可以放置网站文件,让全世界浏览;可以放置数据文件,让全世界下载。

JavaWeb总结
Web服务器


常见状态码:

404 -Not Found 代表客户端错误,指的是服务器端无法找到所请求的资源

400 -请求无效,服务器不理解请求的语法

403 – 禁止访问 ,服务器拒绝请求

500 – 内部服务器错误,无法完成请求

200 – 服务器已成功处理了请求

3xx – 重定向


3、Java Servlet开发

在进行Servlet开发的时候,我们首选需要实现HTTPServlet。这是一个抽象类,servlet.http包中定义了采用HTTP通信协议的HttpServlet类。

继承HttpServlet抽象类重写HttpServlet的部分方法,如doGet()或doPost()方法获取HTTP请求信息。通过HttpServletRequest对象来检索HTML表单所提交的数据或URL上的查询字符串生成HTTP响应结果。通过HttpServletResponse对象生成响应结果

代码实例:

JavaWeb总结
Servlet实例

web.xml文件

JavaWeb总结
web.xml文件

解读上述实例:

Servlet生命周期:分为实例化阶段、初始化阶段、服务阶段和销毁阶段。Servlet 被tomcat容器装载后,根据web.xml配置,创建一个 servlet 实例并且调用 servlet 的init() 方法进行初始化;用户发起请求,容器响应客户端的请求,调用 service() 方法,根据请求提交方式选择执行 doGet() 方法或者 doPost()方法;终止阶段,调用 destroy() 方法

用户请求通过servlet-pattern(servlet-mapping) —>找到 servlet-name(servlet-mapping) —> servlet-name(servlet) —>进而找到 servlet-class(servlet),然后去执行对应的Get/Post方法。


九大内置对象

 (1)Request对象

1、request是javax.servlet.httpServletRequest类型的对象。

2、代表了客户端的请求信息,主要用于接受通过HTTP协议传送到服务器的数据。(包括头信息、系统信息、请求方式以及请求参数等)。

3、request对象的作用域为一次请求。

(2)Response对象

1、response代表的是对客户端的响应,将容器处理过的对象传回到客户端。

2、response对象也具有作用域,只在JSP页面内有效。

(3)Session对象

1、session对象是在服务器创建的与用户请求相关的对象。服务器为每个用户都生成一个session对象,用于保存该用户的信息,跟踪用户的操作状态。

2、session对象以键值对的形式保存数据,并且session对象的value可以使复杂的对象类型,而不仅仅局限于字符串类型。

(4)Application对象

1、application对象将信息保存在服务器中,直到服务器关闭,保存的信息会在整个应用过程中都有效。可以将保存在application的数据当作全员共享的数据。

(5)Out对象

1、out对象用于Web浏览器内输出信息,管理应用服务器上的输出缓冲区。

2、数据输出完毕后,要及时关闭输出流。

(6)Config对象

1、config对象的主要作用是取得服务器的配置信息。

2、Servlet初始化时,容器把某些信息通过config对象传递给这个Servlet。

3、在web.xml文件中为应用程序环境中的Servlet程序和JSP页面提供初始化参数

(7)Page对象

page对象代表JSP本身,只有在JSP页面内才是合法的。类似于Java编程中的this指针。

(8)Exception对象

1、exception作用是显示异常信息,只有在包含isErrorPage=true的页面中才可以被使用,在一般的JSP页面中使用该对象将无法编译JSP文件。

2、在JSP页面中出现没有捕获到的异常,就会生成exception对象,并把exception对象传送到在page指令中设定的错误页面中,然后在错误页面中处理相应的exception对象。

(9)PageContext对象

1、pageContext 对象的作用获取JSP页面的out、request、reponse、session、application 等对象。

2、pageContext对象的创建和初始化都是由容器来完成的,在JSP页面中可以直接使用pageContext对象。


重定向和转发:

重定向:HttpServletResponse提供的sendRedirect(String path)方法用于实现重定向功能。重定向可以跳转至到同一个容器(服务器tomcat)中的其他应用程序的资源,甚至可以使用绝对路径的URL重定向到其他站点的资源。

JavaWeb总结
重定向原理

转发:Servlet API中定义了一个RequestDispatcher接口,该接口中的forward()方法用于将请求转发至RequestDispatcher实例指定的资源。请求转发只能在同一个容器内的资源之间进行跳转,但可以通过请求转发将请求向下传递。

JavaWeb总结
转发原理

区别:

重定向:地址栏发生改变,跳转发生在客户端,用的不是同一HttpServletRequest对象,可以跳转到外部。请求转发:地址栏不会改变,跳转发生在服务器端,用的是同HttpServletRequest对象,只能在内部跳转。


JSP:

JSP全称Java Server Pages,是一种服务器端动态页面技术的组件规范,是以“.jsp”为后缀的文件,在该文件中主要是前端代码和少量的java 代码构成,标签通常以结束,该文件在容器中会转换成Servlet执行。Jsp 在本质上也是Servlet,用Jsp 实现的页面用Servlet也能实现。

JavaWeb总结
jsp执行原理

弊端:由于Jsp页面同时包含前后端代码,甚至操作数据库代码也写在页面里,要求开发人员前后端都需要懂,导致维护成本增加,而且如果内容过多,由于是同步加载,服务器压力会增大,由于以上原因提出了前后端分离技术。这样子:

1. 用户发送请求直接到达html页面服务器或中间件

2. 请求路由规则由前端制定,整个项目开发的权重前移

3. 前端负责调用服务端接口产生数据,展现动态效果,不需要关心后端实现

4. 业务分离,实现前后端解耦

5. 减轻后端服务器压力

6. 提高后端开发人员效率


EL表达式和JSTL标签:

从本质上来讲这两者是一样的,都是JSP中为了简化Java语言部分的编写而生的,但是两者的侧重点不一样。EL的主要功能是简化JSP开发中对对象的引用,更侧重于数据交互。JSTL的主要功能对Java中常用语句的封装,比如你可以用类似HTML那样标签来做一个for循环,而不用像Java代码中那样手写循环。


4、JavaWeb三层架构

由于初代javaweb所有代码都放在jsp中,所有的东西都耦合在一起,对后期的维护和扩展极为不利,于是javaweb演进到了第二代,把业务逻辑的内容放到了JavaBean中,而JSP页面负责显示以及请求调度的工作,后来到了第三代,为了解决视图与业务分离,演变出了经典的三层架构,而三层架构中的佼佼者当属mvc模式,mvc模式即视图层,业务逻辑层,持久化层。

M = JavaBeans:用于传递数据,拥有与数据相关的逻辑处理。

V = JSP:从Model接收数据并生成HTML

C = Servlet:接收HTTP请求并控制Model和View

JavaWeb总结
MVC三层结构

5、JavaWeb数据流程

用一张流程图表示吧:

JavaWeb总结

JavaWeb数据流程

声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:qvyue@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。