javaWeb基础核心之一Servlet

时间:2021-10-19 08:31:46

  既然是做JAVA开发的,先从一些基本的整理起来,算是知识回顾,加深记忆。

  第一篇想到那理到哪,可能有点乱,不是太会排版,见谅,估计可能也就我自己看的懂。

  servlet在百度百科上的定义是这样的:

  Servlet(Server Applet),全称Java Servlet,未有中文译文。是用Java编写的服务器端程序。其主要功能在于交互式地浏览和修改数据,生成动态Web内容。狭义的Servlet是指Java语言实现的一个接口,广义的Servlet是指任何实现了这个Servlet接口的类,一般情况下,人们将Servlet理解为后者。

  Servlet运行于支持Java的应用服务器中。从原理上讲,Servlet可以响应任何类型的请求,但绝大多数情况下Servlet只用来扩展基于HTTP协议的Web服务器。
最早支持Servlet标准的是JavaSoft的Java Web Server。此后,一些其它的基于Java的Web服务器开始支持标准的Servlet。
 

  简单来说,servlet就是运行在服务器端的java程序。Servlet是javaEE的规范(接口),如果想将我们写的程序让客户端访问到,创建一个类实现Servlet接口。Servlet作用是动态生成页面。

  学习的时候都会说服务器一启动就会创建servlet对象,servlet里有几个方法,简单介绍一下:

  public void service(ServletRequest req, ServletResponse res)

  这个是servlet的核心方法,程序代码放置到service方法中,每一次都会执行(每次客户端请求都会执行一次)

  其中的参数:

  ServletRequest:代表请求,内部封装的是请求的信息

  ServletResponse:代表响应,内部封装的要响应给客户端的信息

  一般来说,开发时继承HttpServlet,为什么不是实现servlet接口呢?

  查看一下源码就可以看到,自定义的Servlet 继承 HttpServlet 它又继承GenericServlet 实现Servlet接口

  还有,继承httpservlet是没有service方法的,但是会有doGet和doPost方法

  为什么没有覆盖service方法 而是覆盖doGet和doPost?默认不是执行service方法吗?

  看一下源码就会发现啦:

  javaWeb基础核心之一Servlet

javaWeb基础核心之一Servlet

javaWeb基础核心之一Servlet

javaWeb基础核心之一Servlet

实际访问流程是:

客户端提交请求---->tomcat容器---->创建servlet对象----->调用service方法----->HttpServlet的service(ServletRequest,ServletResponse)方法 ----->HttpServlet的service(HttpServletRequest,HttpServletResponst)----->doGet()/doPost()

  public void init(ServletConfig config)

  init方法是Servlet的初始化方法,Servlet对象创建时调用的方法

  其中的参数:ServletConfig代表是Servlet的配置对象,内部封装的是此Servlet 的配置信息

  public void destroy()

  destory是Servlet销毁的方法,Servlet对象销毁的时候执行

  

  Servlet的基本配置(web.xml 了解一下)

  <servlet>

  <servlet-name>随意写</servlet-name>

  <servlet-class>Servlet的全包名</servlet-class>

  </servlet>

  <servlet-mapping>

  <serlvet-name>与上面的name一致</servlet-name>

  <url-pattern>/servlet对外访问的虚拟路径</url-pattern>

  </servlet-mapping>

  url-patten标签里的配置:

  完全匹配:访问虚拟的资源与配置的完全一样

  目录匹配:格式:/开始 *结束

  扩展名匹配:格式: 以*开始  以扩展名结束

  插一下静态资源访问过程:

  在页面访问index.html静态资源

  tomcat会按照index.html名字找一个servlet,找不到,会找缺省 servlet

  DefaultServlet内部帮你找一个名字叫index.html的静态资源,

  第一种结果:找到index.html资源 缺省的servlet逐行输出静态资源

  第二种结果:找不到 返回一个默认的错误页面404

  以myeclipse为例,创建web项目

javaWeb基础核心之一Servlet

  myeclipse里可以直接创建servlet文件,可以省去我们各种配置的麻烦。

  默认实现的方法我们实际上一般只需要勾选doget和dopost就可以啦,最常用的两种提交。

javaWeb基础核心之一Servlet

  mapping url就是我们设置虚拟目录的名字,在这写了就不用去xml里配置了。

  然后就可以在servlet写东西了。

  再介绍一些常用的方法吧!

  首先要介绍一个对象:

  ServletContext中文译成 Servlet上下文对象,代表的是一个Web应用的环境对象,内部封装的与web应用整体相关的数据。服务器一启动就会创建ServletContext对象,一个web应用只有一个ServletContext对象。

  获得这个对象有两个方法:

  config.getServletContext();

(在自定义的Servlet中直接使用 getServletConfig();返回的就是一个config对象,它代表是Servlet对象的配置对象,ServletConfig对象内部封装的是该Servlet对象的配置信息,一个Servlet就有一个对应的ServletConfig对象。当Servlet对象创建时,web容器会调用init方法,同时会创建该Servlet对象的配置对象ServletConfig作为参数传递给init方法。)

  getServletContext();

  ServletContext的作用

  (1)获取web应用的初始化参数

  (2)ServletContext对象可以作为域对象存储数据

  域对象:区域对象,存数据

  只要是域对象,必然有下面三个方法

  setAttribute(name,value)---向域对象中设置值

  getAttribute(name)---从域中获取值

  removeAttribute(name)---从域中删除某个数据

javaWeb基础核心之一Servlet

  (3)获得web应用中的资源的绝对路径(这个比较常用)

  资源在服务器上的绝对路径  context.getRealPath(相对于web应用根目录地址);

  最后在贴一张简单明了的流程图,看到这张图可以容易理解servlet生态环境。

javaWeb基础核心之一Servlet

  顺带提一下Servlet的生命周期

  什么时候创建Servlet对象:

  默认第一次访问时创建Servlet对象,会将servlet放置到web容器的内存中, 等待为后面的访问服务,某一个Servlet对象只有一个。执行init方法

  什么时候销毁Servlet对象:

  服务器关闭或web应从服务器中移除Servlet销毁,销毁时会执行destory方法

  本文作者冯如,因知识本身在变化,作者也在不断学习成长,文章内容也不定时更新,为避免误导读者,方便追根溯源,请诸位转载注明出处,有问题欢迎与我讨论,共同进步。

javaWeb基础核心之一Servlet的更多相关文章

  1. JavaWeb基础总结:Servlet专题

    最近工作中有部分整改老接口的任务,大部分与Spring的拦截器,Tomcat相关,改到一些底层的代码发现,对基础J2EE的知识有些遗忘,需要频繁查阅,索性从头系统的整理一下Servlet和Filter ...

  2. JavaWeb基础知识总结

    JavaWeb基础知识总结.   1.web服务器与HTTP协议 Web服务器 l WEB,在英语中web即表示网页的意思,它用于表示Internet主机上供外界访问的资源. l Internet上供 ...

  3. 关于java基础、多线程、JavaWeb基础、数据库、SSM、Springboot技术汇总

    作者 : Stanley 罗昊 本人自行总结,纯手打,有疑问请在评论区留言 [转载请注明出处和署名,谢谢!] 一.java基础 1.多态有哪些体现形式? 重写.重载 2. Overriding的是什么 ...

  4. JavaWeb基础&colon; ServletContext

    基本概念 Web容器在启动时,会为每个Web应用程序都创建一个对应的ServletContext对象,它代表当前Web应用. ServletContext(javax.servlet.http.Ser ...

  5. JavaWeb基础&colon; 学习大纲

    JavaWeb基础: Web应用和Web服务器 JavaWeb基础: Tomcat JavaWeb基础:HTTP协议和基于Restful的架构 JavaWeb基础: Web工程配置文件 JavaWeb ...

  6. 超详细的Java面试题总结(四 )之JavaWeb基础知识总结

    系列文章请查看: 超详细的Java面试题总结(一)之Java基础知识篇 超详细的Java面试题总结(二)之Java基础知识篇 超详细的Java面试题总结(三)之Java集合篇常见问题 超详细的Java ...

  7. JQuery基础核心

    一.代码风格 在jQuery程序中,不管是页面元素的选择.内置的功能函数,都是美元符号“$”来起始的. 而这个“$”就是jQuery当中最重要且独有的对象:jQuery对象,所以我们在页面元素选择或执 ...

  8. 06-CABasicAnimation基础核心动画

    *:first-child { margin-top: 0 !important; } body > *:last-child { margin-bottom: 0 !important; } ...

  9. spring中基础核心接口总结

    spring中基础核心接口总结理解这几个接口,及其实现类就可以快速了解spring,具体的用法参考其他spring资料 1.BeanFactory最基础最核心的接口重要的实现类有:XmlBeanFac ...

随机推荐

  1. 10月wish me luck

    10/13 明天开始的三天 就要跟历史地理化学说拜拜了 以诚待之 好运 10/20 P三角形计数:一看就是叉积.因为去年迪子讲过.但是我已经忘记了.所以重新写了一遍.把所有的点有序化,将三角形面积转化 ...

  2. LoadRunner简介

    LoadRunner是什么 LoadRunner是一个性能测试工具,它最初是Mercury公司的产品,后背HP收购. LoadRunner常用来做什么 l 验证某系统在某环境下是否满足性能需求. l  ...

  3. SharePoint 2013 隐藏部分Ribbon菜单

    SharePoint的使用中,因为用户经常不愿意看到那些不经常使用的操作,我们经常需要定制Ribbon菜单, 更多时候不是隐藏所有,而是隐藏掉我们不需要的那些:下面,我们一列表为例,简单介绍下如何部分 ...

  4. JAVA--线程wait&lpar;&rpar;、lnotify&lpar;&rpar;和notifyAll&lpar;&rpar;方法

    join()方法是Thread类的一个方法,而wait().notify().notifyAll()是java.lang.Object类的方法,这意味着,任何一个Java对象(包括线程对象)都有wai ...

  5. Django中manger&sol;QuerySet类与mysql数据库的查询

    Django中的单表操作 1.精确查询 #查询的结果返回是容器Query Set的函数(Query Set模型类)​# 1. all()   查询的所有的符合条件的结果,支持正向索引,支持索引切片,不 ...

  6. 自增ID算法snowflake - C&num;版

    急景流年,铜壶滴漏,时光缱绻如画,岁月如诗如歌.转载一篇博客来慰藉,易逝的韶华. 使用UUID或者GUID产生的ID没有规则 Snowflake算法是Twitter的工程师为实现递增而不重复的ID实现 ...

  7. java awt学习笔记

    最近这两天,花了些时间温习了java.awt的学习,故今日花些时间写下自己的总结吧. 1.常见的组件:Button.TextArea.Label.Checkbox.TextField Containe ...

  8. ES 使用小结

    ES 是 Elastic Search 的缩写,可以理解为一个支持分布式部署的软件. 部署了以后可以当数据库用,虽然官方不建议这样做,但我们是这样干的. 它解决了很多场景下的查询需求,发版速度飞快,用 ...

  9. tips:Java中的switch的选择因子

    tips:Java中的switch的选择因子! /*  switch(){   }  */ switch的()中的判断条件能是什么类型呢? 事实上,在我们学习c++的了解中,switch的参数是一个能 ...

  10. Sliding Window Median LT480

    Median is the middle value in an ordered integer list. If the size of the list is even, there is no ...