位置: IT常识 - 正文

day11-Servlet01

编辑:rootadmin
==Servlet01== 官方api文档:https://tomcat.apache.org/tomcat-8.0-doc/servletapi/index.html Servlet和Tomcat的关系:一句话,Tomcat支持Servlet Servlet是跟Tomcat关联在一起的,换而言之, ... Servlet01

推荐整理分享day11-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快速入门-手动开发Servletday11-Servlet01

例子

需求说明:

开发一个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接口

package com.li.servlet;import javax.servlet.*;import java.io.IOException;/** * 1.开发一个servlet,需要实现Servlet接口 * 2.实现Servlet接口的方法:一共有5个 */public class HelloServlet implements Servlet { /** * 1.初始化 Servlet * 2.当创建HelloServlet实例时,会调用init方法 * 3.该方法只会被调用一次 * * @param servletConfig * @throws ServletException */ @Override public void init(ServletConfig servletConfig) throws ServletException { System.out.println("init() 被调用"); } /** * 返回ServletConfig对象 也就是返回Servlet的配置 * * @return */ @Override public ServletConfig getServletConfig() { return null; } /** * 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 */ @Override public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException { System.out.println("hi HelloServlet~"); } /** * 返回servlet的信息,使用较少 * * @return */ @Override public String getServletInfo() { return null; } /** * 1.该方法是在servlet被销毁时,被tomcat调用 * 2.只会调用一次 */ @Override public void destroy() { }}

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

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

<?xml version="1.0" encoding="UTF-8"?><web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" version="4.0"> <!--web.xml文件主要用来配置该web应用使用到的Servlet--> <!--配置HelloServlet--> <!--解读: 1.servlet-name:给Servlet取名(任意),该名字唯一 2.servlet-class:Servlet的类的全路径,Tomcat在反射生成该Servlet类实例时需要使用 3.servlet-mapping里的servlet-name要和上面的servlet-name保持一致 4.url-pattern:这个就是该Servlet访问的url的配置(路径) 5.这时我们应该这样访问Servlet:http://localhost:8080/web应用名/helloServlet 5.url-pattern的取名也是随意的(注意加上斜杠) --> <servlet> <servlet-name>HelloServlet</servlet-name> <servlet-class>com.li.servlet.HelloServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>HelloServlet</servlet-name> <url-pattern>/helloServlet</url-pattern> </servlet-mapping></web-app>

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

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

可以自己配置快捷键启动

浏览器访问:

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

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

本文链接地址:https://www.jiuchutong.com/zhishi/310364.html 转载请保留说明!

上一篇:WordPress提示Briefly unavailable for scheduled maintenance解决办法(wordpress提示插件)

下一篇:使用Python创建简单的HTTP服务器(python中如何创建一个对象)

  • 全民K歌怎么一键分享到微信状态(全民k歌怎么一半歌词一半视频)

    全民K歌怎么一键分享到微信状态(全民k歌怎么一半歌词一半视频)

  • visio是什么软件(visio是什么软件 视频)

    visio是什么软件(visio是什么软件 视频)

  • 荣耀30s是集成5G的吗(华为荣耀30s是集成5g吗)

    荣耀30s是集成5G的吗(华为荣耀30s是集成5g吗)

  • 爱国者是哪国的品牌(爱国者是哪国的导弹)

    爱国者是哪国的品牌(爱国者是哪国的导弹)

  • 注册阿里巴巴需要什么条件(注册阿里巴巴需要营业执照吗)

    注册阿里巴巴需要什么条件(注册阿里巴巴需要营业执照吗)

  • miui11怎么缩小桌面图标(小米11怎么调整桌面)

    miui11怎么缩小桌面图标(小米11怎么调整桌面)

  • 微信长按图片翻译怎么开启(微信长按图片翻译没了)

    微信长按图片翻译怎么开启(微信长按图片翻译没了)

  • 为什么微信同步不了qq(为什么微信同步不了)

    为什么微信同步不了qq(为什么微信同步不了)

  • 手机id停用怎么办怎么恢复(手机id停用怎么恢复正常)

    手机id停用怎么办怎么恢复(手机id停用怎么恢复正常)

  • 手机全民k歌怎么玩(手机全民k歌怎么导入抖音)

    手机全民k歌怎么玩(手机全民k歌怎么导入抖音)

  • 华为p30pro防水吗(华为手机掉水里几秒没事吧)

    华为p30pro防水吗(华为手机掉水里几秒没事吧)

  • 有哪些好的微信公众号值得推荐?(有哪些好的微信名)

    有哪些好的微信公众号值得推荐?(有哪些好的微信名)

  • 为什么嘿siri不能唤醒(为什么嘿siri不能录取)

    为什么嘿siri不能唤醒(为什么嘿siri不能录取)

  • vivoy66耗电快解决方案(vivoy66耗电量快怎么办)

    vivoy66耗电快解决方案(vivoy66耗电量快怎么办)

  • 华为p30pro与nova5pro区别(华为p30pro与nova10)

    华为p30pro与nova5pro区别(华为p30pro与nova10)

  • 苹果微信时间错乱如何调回(苹果微信时间错位怎么办)

    苹果微信时间错乱如何调回(苹果微信时间错位怎么办)

  • 苹果8p黑屏但没关机(苹果8p黑屏但没声音)

    苹果8p黑屏但没关机(苹果8p黑屏但没声音)

  • 此 Google 帐号尚未与设备关联。要安装应用,请先访问设备上的 Play 商店应用。 了解详情(已解决)(此 google 帐号尚未与设备关联)

    此 Google 帐号尚未与设备关联。要安装应用,请先访问设备上的 Play 商店应用。 了解详情(已解决)(此 google 帐号尚未与设备关联)

  • 16个常见的BIOS硬盘故障现象及急救措施(bios里硬盘是哪个)

    16个常见的BIOS硬盘故障现象及急救措施(bios里硬盘是哪个)

  • 修改hosts文件的权限以自由修改该文件(修改hosts文件的软件)

    修改hosts文件的权限以自由修改该文件(修改hosts文件的软件)

  • Linux系统下无法访问mysql解决方法(linux用不了yum)

    Linux系统下无法访问mysql解决方法(linux用不了yum)

  • Win10自带的重装系统(win10自带的重装能彻底清除上网记录和u盘记录吗)

    Win10自带的重装系统(win10自带的重装能彻底清除上网记录和u盘记录吗)

  • Python测试前置操作的方法(前置测试模型)

    Python测试前置操作的方法(前置测试模型)

  • php中__sleep方法的使用(php sleep())

    php中__sleep方法的使用(php sleep())

  • 个人房产投资入股公司过户
  • 非盈利组织确认及所得税汇算怎么做
  • 实收资本增加如何计算
  • 财务软件大概多少钱
  • 中国进口货物完税价格表
  • 商品流通企业都交什么税
  • 固定总价合同中,承包人承担的价格风险
  • 偶然所得计税依据 包不包含增值税
  • 企业增加注册资本需要缴纳什么税
  • 捐赠支出税前扣除政策
  • 油费预付卡如何开发票
  • 不动产折旧费计算公式
  • 单位月工资总额
  • 需要预缴增值税
  • 预收物业费是否必须开具发票
  • 开专票和普票的税点
  • 广告费定金属于什么科目
  • 收到未抵扣的红字发票
  • 房屋贷款基准利率表 历年查询
  • 委托加工存货要交什么税
  • 税控盘280减免申报
  • 我想看一下这个月几日
  • 解决的英文
  • 王者荣耀中白起的台词
  • 增值税当月申报次月缴纳吗
  • 局域网解决方案
  • 进货折扣适用于什么条件
  • php加密解密函数高级
  • elementui常用组件
  • 未确认融资费用借贷方向
  • 股东无偿投入的土地需要摊销吗
  • 财务费用为什么是负数表示
  • vue3 element-plus
  • php计算数组中值怎么算
  • php互换两个变量的关系
  • vue基础知识
  • 所得税汇算清缴退税会计分录怎么做
  • 代开专票时缴纳的增值税账务处理如何做?
  • 小规模纳税企业销售货物或者提供应税劳务
  • 对公账户怎么查询开户行
  • 发票有别的字迹有影响吗
  • 增值税发票抵扣期限是多久
  • 资产负债表和利润表的认定
  • 公司能经营烟草公司吗
  • 国有集体企业是国企吗
  • 企业筹建期间银行开户要求
  • 企业间借款利息开票税收分类编码
  • 出包方式建造固定资产的成本包括
  • 汇算清缴后收到退回的所得税
  • 企业发生装修费就计入长期待摊费用吗还是
  • 交易性金融资产的账务处理
  • 建筑企业其他应付款包含什么内容
  • 预付差旅费属于什么类型
  • 关闭terminal monitor
  • django使用mysql
  • rundll32.exe在哪个文件夹
  • win7如何创建文件夹
  • mom.exe是什么
  • windows升级10
  • msvcmm32.exe - msvcmm32是什么进程 有什么用
  • win8的应用商店
  • win7系统删除文件夹怎么恢复
  • react-native fetch的具体使用方法
  • js实现图片放大功能
  • Linux 中的nc命令小结
  • Linux修改tomcat默认端口号8080
  • 安卓开发常见问题解决
  • unity飞机大战游戏毕业论文
  • 通过制作日晷我们可以探索发现一天之中
  • unity mesh编程
  • html微信
  • 从最近两会看苹果和谷歌的最大梦魇
  • 国家税务局通用定额发票查询
  • 票据代码和票据号码是什么意思
  • 税法查询系统
  • 深圳沙井社保局在哪个位置
  • 公务员考试税局
  • 个体户 零申报
  • 深圳市福田区行政代码是多少
  • vat税怎么做分录
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设