博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Servlet学习笔记
阅读量:5975 次
发布时间:2019-06-20

本文共 5260 字,大约阅读时间需要 17 分钟。

Servlet简介

1.什么是Servlet:以后看javaee的文档。    * Servlet是一个接口,下面有5个方法。    * Servlet有两个实现类,GenericServlet和HttpServlet   2.Servlet作用:    * Servlet是一个小的java程序,运行在服务器端。    * Servlet接收和响应从客户端发送过来的请求,使用的HTTP的协议。    * Servlet开发中的角色,接受请求去调用相应的资源或者servlet程序

编写一个Servlet程序

1.编写一个类,实现Servlet接口,重写5个方法。2.在web.xml文件中编写Servlet配置文件(记住)     
ServletDemo1
cn.itcast.servlet.ServletDemo1
ServletDemo1
/demo1
3.把day09项目发布到服务器中,启动服务器,访问ServletDemo1的程序。4.Servlet被访问的浏览器

Servlet生命周期(面试题)

Servlet生命周期(面试题)1.什么是生命周期:从人的角度人的出生、服务社会、死亡。2.Servlet实例的生命周期:从Servlet实例被创建,提供服务,Servlet销毁。在生命周期提供一些方法。3.生命周期相关的方法    * Servlet被创建之后(被服务器创建),立即调用init方法初始化Servlet init()    * 从客户端发送过来的任何请求,都会使用service方法进行处理。          service()    * Servlet从服务器中移除,调用destroy方法进行销毁的操作.                destroy()4.总结:Servlet实例被Tomcat服务器来创建,第一次访问的时候创建(在内存有一个实例(单例模式)),立即调用init方法进行初始化的操作,使用service方法对外提供服务(有一个请求,实例开启一个新线程,处理请求的内容),service有一次请求,service被调用一次。Tomcat 服务器关闭或者移除项目的时候,Servlet被销毁,但是在销毁之前调用destroy方法进行一些销毁操作(释放一些资源),调用destory的方法一次。

 Servlet的类之间的关系

1.Servlet接口2.GenericServlet实现类3.HttpServlet实现类    Servlet接口        |    GenericSerlvet (5个方法全部都重写了)        |    HttpServlet (service方法进行重写了)        |    MyServlet(相当于重写了5个方法,)4.问题:    * 编写一个类继承GenericServlet,里面有两个init方法,重写init重写哪一个呢?        *  如果以后想要重写init方法,重写init()方法。    * 编写一个类,继承HttpServlet,重写了两个service方法,分别干嘛用?        ServletRequest(请求)          ServletResponse(响应)                |                                   |        HttpServletRquest               HttpServletResponse    * HttpServlet类中有两个service方法,其中一个service的方法的内部,判断请求的方式(get和post),如果是get请求方式,默认调用doGet方法。如果post请求,默认调用doPost的方法。    * 现在在网络上就使用两种请求,一种get和post。如果编写一个类,继承HttpServelt,重写doGet和doPost方法。因为service方法默认去调用doGet或者doPost方法。开发中最简单的方式。5.开发Servlet程序(最简单的步骤)    * 编写一个类,继承HttpServlet    * 重写两个方法doGet和doPost方法    * 在web.xml中编写配置文件6.一般的情况下,doGet和doPost方法中的逻辑都是相同,互相调用,简化编程。

Servlet配置访问路径

1.学会怎么配置?学会怎么来访问?优先级,谁的优先级高先访问谁。2.在web.xml中,配置
,怎么来访问Servlet程序。 *
/servlet/demo1
-- 完全路径匹配 -- 访问:http://localhost/day09/servlet/demo1 *
/*
-- 目录匹配 -- 访问:http://localhost/day09/xxx *
*.do或者 *.action
-- 扩展名 访问:http://localhost/day09/xxx.do3.总结 * 完全路径匹配 /demo1 以/开头 访问:http://localhost/day09/demo1 * 目录匹配 /* 以/开头 访问:http://localhost/day09/xxx * 扩展名匹配 *.do 不能以/开头 访问:http://localhost/day09/yyy.do4.优先级(一个WEB程序中有多个Servlet程序,到底是访问哪个Servlet呢?) * 完全路径匹配 > 目录匹配 > 扩展名匹配

Servlet开发中WEB阶段的路径问题

1.学习编写路径2.相对路径和绝对路径    * 不能以/开头    * 相对路径:当前的这个文件和比对的文件的位置关系。    * 在WEB服务器中开发相对路径的写法        * 先访问aa.html  http://localhost/day09/aa.html        * 访问demo5写法      http://localhost/day09/demo5        * 在aa.html的文件中直接访问demo5                 * aa
* aa
* 先访问bb.html http://localhost/day09/bb/bb.html * 访问demo5写法 http://localhost/day09/demo5 * 在bb.html的文件中访问demo5 * bb
3.总结:相对路径的写法,需要先找这两个文件之间关系。但是如果一旦文件的位置改变了,写的相对的路径写法存在问题。解决这种问题,写绝对路径。 4.编写绝对路径 * 以/开头的 * http://localhost/day09/demo5 * 简便写法: /day09/demo55.在绝对路径中有分成两种 * 客户端绝对路径 * 包含项目名称 /day09/demo5 * 服务器端绝对路径 * 不包含项目名称 /demo5

ServletConfig对象

1.和在web.xml的配置文件中相关的一个对象。2.ServletConfig对象的方法    * String getServletName()       获取配置Servlet的名称(
ServletDemo5
) * String getInitParameter(String name) 获取初始化参数 * Enumeration getInitParameterNames() 获取初始化参数 * ServletContext getServletContext() 获取ServletContext对象3.总结:配置初始化参数只能针对当前的Servlet,不能在其他的Servlet程序中来获取。

ServletContext对象(重要)

ServletContext对象的简介

1.在javaweb的开发中,一共存在(JSP)4个域对象。在Servlet中一共存在3个域对象。2.学习的第一个域对象。3.ServletContext对象    * 一个WEB项目只有一个ServletContext对象    * 可以被WEB项目中的所有的Servlet所共享,可以通过ServletContext来传递数据。    * 与天地同寿。Tomcat服务器一启动,会为每一个WEB应用创建一个ServletContext对象。服务器关闭的时候ServletContext销毁。

获取ServletContext对象

1.可以通过ServletConfig获取ServletContext对象2.可以直接使用该方法:ServletContext getServletContext()

域对象

1.域对象可以在多个Servlet中传递数据。以后需要学习JSP技术(JSP和Servlet程序之间通过域对象来传递数据)2.可以向域对象中存入数据       * setAttribute("属性名称","值");         setAttribute("xx","123")    setAttribute("xx","456")3.可以从域对象中获取数据    * Object getAttribute("属性名称");4.从域对象中删除属性    * removeAttribute("属性名称");

获取ServletContext作用

1.获取全局的初始化参数    * String getInitParameter(String name)          * Enumeration getInitParameterNames()      * 配置全局的初始化参数2.实现数据的共享(*****)    *  void setAttribute(String name, Object object)    设置属性的值    *  Object getAttribute(String name)                 获取属性的值    *  void removeAttribute(String name)                删除属性的值    *  Enumeration getAttributeNames()                  获取属性的名称们    * 统计访问的次数3.读取资源文件(*****) String path的写法    * InputStream getResourceAsStream(String path)      通过文件的路径获取文件的输入流    * String getRealPath(String path)                   通过文件的路径获取文件的绝对磁盘路径4.总结:读取资源文件path路径的写法    * 如果db放在src目录下:     path = "/WEB-INF/classes/db.proterties";    * 如果db放在某个包下:           path = "/WEB-INF/classes/cn/itcast/context/db.proterties";    * 如果db放在WebRoot目录下: path = "/db.proterties";5.使用类的加载器来读取资源文件

缺省的Servlet(了解)

转载于:https://www.cnblogs.com/chyxOne/p/9719520.html

你可能感兴趣的文章
树与森林的存储、遍历和树与森林的转换
查看>>
mongodb的读写分离
查看>>
Android自定义属性
查看>>
介绍几个好用的android自定义控件
查看>>
阿里云服务器 Windows连接不成功 提示“你的凭证不工作” 解决方法
查看>>
NVIDIA Jetson TK1学习与开发(八):图文详解OpenGL在Jetson TK1上的安装和使用
查看>>
【性能优化】直方图
查看>>
Visual C#之核心语言
查看>>
[J2ME]Nokia播放音乐时发生MediaException的解决办法
查看>>
【转】CSS 与 HTML5 响应式图片
查看>>
代码重构(五):继承关系重构规则
查看>>
redis.conf 配置档详解
查看>>
Windows App开发之集合控件与数据绑定
查看>>
五分钟创建一个自己的NPM包
查看>>
iOS多线程编程:线程同步总结 NSCondtion
查看>>
Flutter开发环境安装
查看>>
QQ登录的那些坑(如何开发qq登陆功能)
查看>>
中大型网站技术架构演变过程
查看>>
深入剖析OkHttp系列(五) 来自官方的事件机制
查看>>
Java 9 CompletableFuture 进化小脚步
查看>>