Servlet入门

web是全球广域网,也称万维网,能够通过浏览器访问网站。

JavaWeb就是用来解决相关web互联网领域的技术栈。

JavaWeb技术栈

B/S架构
B/S 架构:Browser/Server,浏览器/服务器 架构模式,它的特点是,客户端只需要浏览器,应用程序的逻辑和数据都存储在服务器端。浏览器只需要请求服务器,获取Web资源,服务器把Web资源发送给浏览器即可。
B/S架构的好处:易于维护升级,服务器端升级后,客户端无需任何部署就能使用。
静态资源

主要包含:HTML,CSS,JavaScript,图片等。

动态资源

主要包含:Servlet,JSP,主要用来处理逻辑。动态资源处理完逻辑之后会把结果交给静态资源展示,动态资源要和静态资源结合使用。

Http协议

超文本传输协议,规定了浏览器和服务器之间数据传输的规则。数据传输的规则值请求数据和响应数据需要按照指定的格式进行传输。

Http协议的特点

无连接性,无状态性,基于文本,支持多媒体,基于请求-响应模型,支持多种请求方式,支持缓存,支持安全性,状态码,可扩展性。

Web服务器

web服务器:负责解析Http协议,解析请求数据,并发送响应数据。

浏览器按照Http协议发送请求和数据,后台就需要一个Web服务器软件来根据Http协议解析请求数据和数据,然后把处理结果按照Http协议发送给浏览器。

请求数据格式

请求数据包含:请求头,请求行,请求体。

请求行:HTTP请求中的第⼀⾏数据,请求⾏包含三块内容,分别是 POST [请求⽅式] / [请求URL路径] HTTP/1.1 [HTTP协议及版本]

请求方式有7种,最常见的是post和get。

请求头:第二行开始,格式为key:value

请求体: POST请求的最后⼀部分,存储请求参数.(GET请求没有请求体)

GET和POST请求的区别

get请求中请求参数会拼接到url后面,在请求行中,没有请求体。post请求有请求体,请求参数在请求体中。

get请求的请求参数有大小限制,post没有。

响应数据格式

包含:响应头,响应行,响应体。

响应行:响应数据的第⼀⾏,响应⾏包含三块内容,分别是 HTTP/1.1 [HTTP协议及版本] 200 [响应状态码] OK [状态码的描述]

响应头:第二行开始,格式为key:value

响应体: 最后⼀部分。存放响应数据

Servlet

Servlet是JavaWeb最为核心的内容,它是Java提供的一门动态Web资源开发技术。

servlet是JavaEE规范之一,就是一个接口,需要定义Servlet类实现Servlet接口,并有web服务器运行servlet

Servlet两种配置方式:web.xml,@webservlet("/servlet")括号里写的就是访问路径

  //注册servlet
   
       first
        
       com.kfm.ServletDemo
   
    //映射servlet
    
        
        first
        /demo
    

servlet由谁创建,由谁调用?

Servlet由服务器创建,Servlet方法由服务器调用。

服务器怎么知道Servlet中一定要有service方法?

因为自定义的Servlet类实现了Servlet接口,必然会重写service()方法。

Servlet生命周期

Servlet运行在Servlet容器中(web服务器),其生命周期有容器来管理,分为4个阶段:

初始化:在Servlet实例化之后,容器会调用init()方法初始化这个对象,完成一些加载配置文件,创建连接等初始化工作,该方法只调用一次。

请求处理:每次请求Servlet是,容器都会调用service()方法处理请求。

服务终止:当需要释放内存或者容器关闭时,容器就会调用destroy()方法完成资源的释放。释放后该servlet实例会被java的垃圾回收器回收。

Servlet对象是在什么时候创建的?

默认是在第一次被访问时创建的。

Servlet生命周期涉及到的三个方法,什么时候被调用,调用几次?

init方法:在Servlet对象被创建的时候调用,调用1次。

service方法:在Servlet被访问的时候调用,访问一次调用一次。

destroy方法:Servlet对象被销毁的时候调用,只调用1次。

两个不常用的方法:getServletInfo(),获取servlet信息,getServletConfig()

体系结构

Servlet入门_第1张图片

 我们将来开发的B/S架构的Web项目,都是针对Http协议,所以自定义Servlet继承HttpServlet。

HttpServlet内部定义了HTTP协议中的DELETE、GET、OPTIONS、POST、PUT、TRACE等请求方式对应的doDelete()、doGet()、 doOptions()、doPost()、doPut()、doTrace()等方法。

当我们所开发的Servlet程序需要分别处理来自Web客户端的GET请求和POST请求时,可以选择继承HttpServlet类并重写其doGet方法和doPost方法。HttpServlet的service方法中对请求类型做了判断,根据不同的请求类型,执行doGet或doPost方法。
除非是必须区分GET请求和POST请求,否则没有必要分别重写HttpServlet类的doGet方法doPost方法,只需要重写一个service方法就可以了。

urlpattern配置

Servlet类编写好后,要想被访问到,就需要配置其访问路径

一个Servlet可以配置多个urlPattern(“/demo1”,"/demo2"),访问路径:http://localhost:8080/demo1或http://localhost:8080/demo2

url配置规则

精确匹配:@WebServlet("/user/select")

目录匹配:@WebServlet("/user/*"),user下面的任何一个都能访问到

扩展名匹配:@WebServlet("*.do"),扩展名匹配不用加/

任意匹配:@WebServlet("/")或者@WebServlet("/*")

/和/*的区别:

如果配置了“/”,当所有的路径都不符合时,会匹配这个“/”对应的servlet

如果配置了"/*",意味着匹配任意访问路径

你可能感兴趣的:(servlet)