1987WEB视界-分享互联网热点话题和事件

您现在的位置是:首页 > WEB开发 > 正文

WEB开发

day11-Servlet01

1987web2024-03-27WEB开发188
Servlet01官方api文档:https://tomcat.apache.org/tomcat-8.0-doc/servletapi/index.ht

Servlet01

官方api文档:https://tomcat.apache.org/tomcat-8.0-doc/servletapi/index.html

Servlet和Tomcat的关系:一句话,Tomcat支持Servlet

Servlet是跟Tomcat关联在一起的,换而言之,Tomcat是哪个版本,就对应哪个版本的Servlet

1.为什么需要Servlet?

需求:请用你现有的html,css,javascript,开发网站,比如可以让用户留言/购物/支付,你能搞定吗?

这就需要引入我们的动态网页(能和用户交互)技术===>Servlet

我们对之前的JavaWeb技术体系图进一步地细化:

Tomcat的web服务拿到一个请求后:

如果web服务发现是该请求是和java相关的,或者说是一个Servlet(动态请求,比如说可能会去操作数据库),那么Tomcat会去寻找Servlet,Servlet又去调用java程序,进行数据库操作

如果Tomcat的web服务发现请求的是一个静态资源,比如html,图片等,就直接拿到该资源,然后返回,不会和java程序或者数据库发生关系

因此我们说Tomcat其实是有两个功能的:一是充当Servlet的容器;二是充当普通的web服务

只支撑静态资源返回的还有apache,如果是一个静态资源的网站,不需要和数据库进行交互,其实完全可以使用Apache来作为web服务,或者只使用一个Nginx就可以了

2.什么是Servlet?

什么是Servlet

Servlet在开发动态WEB工程中得到了广泛地应用,掌握好Servlet非常重要,Servlet是SpringMVC的基础

Servlet(java服务器小程序),它的特点有:

它是由服务器调用和执行的

即由tomcat解析和执行的

它是用java语言编写的,本质就是Java类

它是按照Servlet规范开发的(接口),Servlet本质就是一套接口规范

除了Tomcat可以去解析Servlet,weblogic也可以支持 Servlet,即只要按照规范去开发接口,就可以支持Servlet,类似于jdbc的接口规范

功能强大,几乎完成所有的网站功能

3.Servlet基本使用

3.1Servlet开发方式说明

Servlet3.0前使用web.xml,Servlet3.0版本以后(包括3.0)支持注解,同时支持web.xml配置如何查看Servlet版本Servlet的讲解只是为了知道Servlet的使用原理(原生的Servlet在项目中使用很少)不管使用哪种方式,本质都一样

3.2快速入门-手动开发Servlet

例子

需求说明:

开发一个HelloServlet当浏览器访问http://localhost:8080/web应用名/helloServlet时,后台输出“hi HelloServlet”

思路:

编写类HelloServlet去实现Servlet接口

实现service方法,处理请求,并响应数据

在web.xml中去配置Servlet程序的访问地址

首先创建web工程,配置好Tomcat

添加servlet-api.jar(在你安装的tomcat/lib下)到工程,因为servlet.jar不是jdk自带的,要引入才可以使用

在idea项目的web/WEB-INF下创建一个lib目录,将servlet-api.jar拷贝进去,然后右击jar包,点击add as library,在弹出的窗口中点击ok即可

在src包下面创建HelloServlet.java,并实现Servlet接口

packagecom.li.servlet;importjavax.servlet.*;importjava.io.IOException;/*** 1.开发一个servlet,需要实现Servlet接口* 2.实现Servlet接口的方法:一共有5个*/publicclassHelloServletimplementsServlet{/*** 1.初始化 Servlet* 2.当创建HelloServlet实例时,会调用init方法* 3.该方法只会被调用一次** @param servletConfig* @throws ServletException*/@Overridepublicvoidinit(ServletConfigservletConfig)throwsServletException{System.out.println("init() 被调用");}/*** 返回ServletConfig对象 也就是返回Servlet的配置** @return*/@OverridepublicServletConfiggetServletConfig(){returnnull;}/*** 1.service方法处理浏览器的请求(包括get/post)* 2.当浏览器每次请求Servlet时,就会调用一次server方法* 3.当Tomcat调用该方法时,会把http请求的数据封装成 实现了ServletRequest接口 的request对象* 4.通过servletRequest对象,就可以得到用户提交的数据* 5.servletResponse对象可以用于返回数据给Tomcat-->浏览器** @param servletRequest* @param servletResponse* @throws ServletException* @throws IOException*/@Overridepublicvoidservice(ServletRequestservletRequest,ServletResponseservletResponse)throwsServletException,IOException{System.out.println("hi HelloServlet~");}/*** 返回servlet的信息,使用较少** @return*/@OverridepublicStringgetServletInfo(){returnnull;}/*** 1.该方法是在servlet被销毁时,被tomcat调用* 2.只会调用一次*/@Overridepublicvoiddestroy(){}}

实现了接口之后,在web.xml配置HelloServlet,即给HelloServlet提供对外的访问地址

目的是为了告诉Tomcat服务器,HelloServlet在哪里

HelloServletcom.li.servlet.HelloServletHelloServlet/helloServlet

设置 快捷键ctrl+/ 可以在当前位置注释,而不是在行

访问HelloServlet(记得要reploy或者restart)

可以自己配置快捷键启动

浏览器访问:

后台输出:可以看到init方法只调用了一次,而每次访问都会调用server方法

4.浏览器调用Servlet流程分析

声明:本站所有文章,如无特殊说明或标注,均为爬虫抓取以及网友投稿,版权归原作者所有。