美文网首页
JavaWeb总结

JavaWeb总结

作者: 逛逛_堆栈 | 来源:发表于2021-03-27 13:57 被阅读0次

    1、WEB开发基本知识

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

    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 请求

    如果页面中的<form>表单元素的 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客户端的请求并返回相应响应,也可以放置网站文件,让全世界浏览;可以放置数据文件,让全世界下载。

    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对象生成响应结果

    代码实例:

    Servlet实例

    web.xml文件

    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重定向到其他站点的资源。

    重定向原理

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

    转发原理

    区别:

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


    JSP:

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

    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

    MVC三层结构

    5、JavaWeb数据流程

    用一张流程图表示吧:

    JavaWeb数据流程

    相关文章

      网友评论

          本文标题:JavaWeb总结

          本文链接:https://www.haomeiwen.com/subject/zexyhltx.html