java客户端应用程序_javaweb应用程序概述

本文介绍了Java Web应用程序的基础知识,包括HTTP协议的特性、Web服务器的角色、Servlet的概念及其生命周期,以及Web项目结构。详细讲解了Servlet的创建、请求处理流程和生命周期方法。同时,探讨了HTTP请求报文的组成、常见的HTTP请求方法,以及Servlet之间的转发和重定向。此外,文章还提到了会话跟踪技术如Cookie,并介绍了Filter和Listener的用途与配置。最后,简要概述了JSP的基础知识,包括JSP引擎、三大元素、内置对象以及EL表达式。
摘要由CSDN通过智能技术生成

1、HTTP(超文本传输协议),它是一种主流的B/S架构中应用的通信协议。具有以下特点:

1.1、无状态:服务不会记录客户端每次提交的请求,服务器一旦响应客户端之后,就会结束本次的通信过程,客户端下一次的请求是一个新的连接,和上一次通信没有任何关系

1.2、简单灵活:HTTP是基于请求和响应的模型

支持客户端与服务端:

1.3、支持主流的B/S以及C/S架构的通信。C/S架构可选的协议有多种,列如:TCP/IP、UDP、HTTP、等,而B/S架构通常只支持HTTP协议。

2、服务器

2.1、概念

服务器同常由硬件和软件部分构成,对用户提供相应的服务

硬件:包括相应的CPU、内存、磁盘、等等

软件:包括操作系统、运行环境、服务端软件、数据库等等

2.2、Web服务器

web服务器是提供服务端程序运行的一个环境,它本身也是一个软件

列如:将我们编写的html文件放到web容器服务器中,那么外界就可以通过浏览器来访问我们的HTML页面,

常见的web服务器有Apache、Tomcat、Jetty、Nginx等等,而Tomcat、Jetty、这些web服务器更准确地来说是一个Servlet容器

3. Web项⽬结构

录,例

如:

myweb、

ch01

通常存放静态资源⽂件(如: html等等)

WEB-INF

这个⽬录是当前项⽬私有的⼀个⽂件夹,只能提供给项⽬内部访问,对于客户端来说是访问

不到了,通常这个⽬录下存放的是Java源代码、编译后的字节码⽂件以及Servlet的核⼼配置⽂件web.xml

src

存放Java源代码的⽬录

classes

存放编译后的字节码⽂件

llib

lib⽬录存放当前项⽬所需要的jar⽂件

jsp ⻚⾯

⽤于存放JSP动态

web.xml

项⽬的配置⽂件,⽤于配置Servlet的请求映射、过滤器、监听器等等信息。每⼀个web项⽬都对应⼀个web.xml配置⽂件

4. Servlet基础

4.1 什么是Servlet6

Servlet是JavaEE中的标准组件之⼀,专⻔⽤于处理客

户端的HTTP请求。并且它必须依赖于Servlet容器

(Tomcat就是⼀个标准的Servlet容器)才可以运⾏,

⽽不能脱离这个环境⽽单独执⾏。因为Servlet实例的

创建和销毁都是由容器负责管理的,我们不能⾃⾏通过

new关键去创建和使⽤它。

4.2 编写⼀个简单的Servlet

1.在任意地⽅创建⼀个myweb⽂件夹,这个⽂件夹相

当于⼀个项⽬根⽬录

2.在根⽬录下创建WEB-INF⼦⽬录

3.在WEB-INF⽬录下创建src和classes⼦⽬录

4.在src⽬录下编写⼀个类,继承HttpServlet这个⽗类

public class HelloServlet extends

HttpServlet{

}

2.重写⽗类的service⽅法,这个就是专⻔处理客户端请

求的⽅法,web容器会为这个⽅法传⼊两个参数

HttpServletRequest和HttpServletResponse,并且这个

⽅法还需要抛出ServletException和IOException给容

器捕获

public class HelloServlet extends

HttpServlet{

public void service(HttpServletRequest

request, HttpServletResponse

response)throws ServletException,

IOException{

//设置响应类型及编码

response.setContentType("text/html;charset

=utf-8");

//获取字符输出流输出html信息

response.getWriter().println("

HelloServlet

")

}

}

5.编译Servlet,需要依赖servlet-api.jar⽂件,将它添加

到classpath中

javac -cp d:\servlet-api.jar;

HelloServlet.java

6.将编译后的HelloServlet.class⽂件剪切到classes⽬

录中

7.在WEB-INF⽬录下创建并编辑web.xml⽂件,为

servlet配置请求映射

hello

HelloServlet

hello

/hello

8.将项⽬部署都tomcat的webapps⽬录中,并执⾏bin⽬

录下的startup.bat启动容器

9.打开浏览器,在地址栏输⼊http://localhost:8080/m

yweb/hello访问Servlet

4.3 Servlet的请求处理流程

浏览器发起http的请求,这个请求⾸先会被servlet容器

(Tomcat)截获,然后容器会根据web.xml⽂件中配

置servlet的来找到相应的这个别名,然后再根据这个

别名找到具体Servlet的类,然后容器会创建这个

Servlet类的实例并调⽤service⽅法来处理这个请求。

4.4 Servlet的⽣命周期

所谓的⽣命周期,就是从Servlet的创建⼀直到它销毁

的整个过程。并且它的这个⽣命周期都是由Servlet容

器(Tomcat)负责管理和维护的。(补充:在Tomcat

中,Servlet是以单实例多线程的⽅式处理客户端请

求)

4.4.1 Servlet对象创建的过程

当第⼀次请求某个Servlet的时候,容器会先查找之前

有没有创建过这个Servlet的实例,如果没有则创建⼀

个并缓存起来。后续相同的请求都由这个缓存的对象来

处理。(注意:这⾥说的是第⼀次请求时创建。另外⼀

种情况则是在容器启动的时候就创建Servlet的实例,

4.4.2⽣命周期⽅法

⽅法名

描述

init

在Servlet对象创建之后⽴即执⾏的初始化

⽅法,且只执⾏⼀次

service

核⼼的请求处理⽅法,这个⽅法可以执⾏

多次

destroy

容器准备销毁Servlet实例之前执⾏这个⽅

法,也是执⾏⼀次

在web.xml中为Servlet指定配置,这个配置的值是⼀个整型,数值越⼩,则初始化的优先级别越⾼)

4.5 HTTP报⽂组成

4.5.1 请求报⽂

请求⾏:请求报⽂的第⼀⾏就是请求⾏。包括请求⽅

法、请求URL地址、 HTTP协议版本。

请求头:请求⾏之后的信息就是请求头,它是以“名称:

内容”的格式体现。主要包括服务器主机地址及端⼝、

连接状态、系统信息、编码、语⾔等等。

请求体:请求头结束之后会有⼀个空⾏,空⾏之后就是

请求体的内容。通常使⽤POST提交的数据信息会存放

在请求体当中,然后传递给服务器。

4.5.2 响应报⽂

状态⾏:主要包括HTTP协议、响应状态码(例如:

200表示OK,成功响应)。

响应头:主要包括服务器信息、响应的类型及编码、内容的⻓度、响应的时间等。

响应体:服务端可以将信息数据携带到响应体中,带回客户端。

4.6 HTTP请求⽅法在HTTP/1.1协议中,请求⽅法主要包括8个,下⾯列举

常⽤的请求⽅法进⾏说明。

⽅法

说明

GET

向服务器请求指定的资源,并返回响应主

体。⼀般来说GET⽅法应该只⽤于数据的

读取(类似于查询)

POST

向指定的服务器提交数据(例如:表单数

据的提交、⽂件上传等) ,并且提交的数据

会放⼊请求体中(类似于新增)

PUT

向服务器提交数据,但是和POST有所区

别。如果服务器不存在此资源的时候,则

执⾏新增,如果存在则执⾏修改(类似于

修改)

DELETE

根据uri的标识删除服务器上的某个资源

(类似于删除)

其他

...

备注:GET与POST区别:

1.GET主要⽤于获取数据, POST⽤于提交数据。

2.GET请求所带的参数是放在请求⾏的url地址后⾯,⽽POST这是放在请求体中。

3.通常浏览器会对GET请求的url⻓度有所限制,⽽POST提交的数据在请求体中,可以提交更多的内容。

⽅法

说明

service

可以处理任何的请求类型

doGet

处理对应的GET请求

doPost

处理对应的POST请求

doPut

处理对应的PUT请求

doDelete

处理对应的DELETE请求

其他

...

4.浏览器会对GET请求进⾏缓存

说明:通过HttpServlet的源代码得知,默认的所有请求都会先经过service⽅法,然后service⽅法根据请求

的⽅法类型判断来决定交给doGet或者是doPost⽅法来处理请求。如果⼦类重写了⽗类的service⽅法同时

还重写了其他的doXxx的⽅法,那么只有service⽅法会处理请求,其他⽅法将失效。

4.8 Request与Response对象

当web容器调⽤某个Servlet的Service⽅法时,会创建⼀个HttpServletRequest和HttpServletRespinse对象

作为参数传⼊到这个⽅法中,那么我们可以通过HttpServletRequest来获取相关的请求内容等,⽽响应客户端

可以利⽤HttpSe

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值