javaweb应用程序概述

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 什么是Servlet

ServletJavaEE中的标准组件之⼀,专⻔⽤于处理客
户端的HTTP请求。并且它必须依赖于Servlet容器
Tomcat就是⼀个标准的Servlet容器)才可以运⾏,
⽽不能脱离这个环境⽽单独执⾏。因为Servlet实例的
创建和销毁都是由容器负责管理的,我们不能⾃⾏通过
new关键去创建和使⽤它。

4.2 编写⼀个简单的Servlet

1.在任意地⽅创建⼀个myweb⽂件夹,这个⽂件夹相
当于⼀个项⽬根⽬录
2.在根⽬录下创建WEB-INF⼦⽬录
3.WEB-INF⽬录下创建srcclasses⼦⽬录
4.src⽬录下编写⼀个类,继承HttpServlet这个⽗类

public class HelloServlet extends
HttpServlet	{
}

 2.重写⽗类的service⽅法,这个就是专⻔处理客户端请
求的⽅法, web容器会为这个⽅法传⼊两个参数
HttpServletRequestHttpServletResponse,并且这个
⽅法还需要抛出ServletExceptionIOException给容
器捕获

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("
<h1>Hello	Servlet</h1>")
}
}				

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

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

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

7.WEB-INF⽬录下创建并编辑web.xml⽂件,为
servlet配置请求映射

<?xml version="1.0"	encoding="utf-8"?>
<!--	配置根节点	-->
<web-app>
<!--	配置servlet类	-->
<servlet>
<!--	指定servlet的别名	-->
<servlet-name>hello</servlet-name>
<!--	指定Servlet的完整类名-->
<servlet-class>HelloServlet</servletclass>
</servlet>
<!--	配置请求映射-->
<servlet-mapping>
<!--	这⾥的servlet-name和上⾯的
servlet-name要⼀⼀对应	-->
<servlet-name>hello</servlet-name>
<!--	配置请求映射的url,必须以“/”开头-->
<url-pattern>/hello</url-pattern>
</servlet-mapping>
</web-app>

 8.将项⽬部署都tomcatwebapps⽬录中,并执⾏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的标识删除服务器上的某个资源
(类似于删除)
其他 ...


备注: GETPOST区别:
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 RequestResponse对象

web容器调⽤某个ServletService⽅法时,会创建⼀个HttpServletRequestHttpServletRespinse对象
作为参数传⼊到这个⽅法中,那么我们可以通过HttpServletRequest来获取相关的请求内容等,⽽响应客户端

可以利⽤HttpServletResponse对象来完成。

猜你喜欢

转载自www.cnblogs.com/ywbmaster/p/9247033.html