JavaWeb【Servlet】
概念
Servlet是在服务器上运行的小程序。一个Servlet请求对应一个Java类(对应一个Wrapper容器),可以通过请求-响应模式访问这个驻留在内存中的小程序。
Tomcat容器等级

上图表示各容器的包含关系(有底色的为容器等级)
Tomcat容器等级分为4级:Engine、Host(对应一个虚拟主机)、Context(对应一个Web工程)、Wrapper(对应一个Servlet)
Servlet编写步骤
1、继承HttpServlet
2、重写doGet或doPost方法
3、在web.xml中注册Servlet(和过滤器类似)

Servlet声明周期

上图为Get请求到返回的流程示意

上图为生命周期示意图
声明周期
1、初始化,加载到内存并创建实例,然后调用init(),只会调用一次。
2、响应客户端请求,调用service(),由service根据请求方式调用doGet或doPost
3、服务器关闭时销毁,destroy()
装载时的三种情况
1、随servlet容器启动时装载,需要在web.xml的servlet标签下配置loadon-startup等级,数字越小等级越高,最高1级。
2、在servlet容器启动后,在客户首次访问servlet时装载。
3、当servlet类被重新修改过后,所有随启动装载的servlet都会重新装载。
Servlet获取9大内置对象


Servlet路径跳转
相对路径
当超链接调转,或表单action时,/代表服务器根目录(没有工程名);不加/,如“servlet/HelloServlet”表示当前目录下的路径
当servlet中response.sendRedirect()时,使用/表示服务器根目录,如“/test.jsp”会访问失败
当servlet中request.getRequestDispatcher("/index.jsp").forward(request, response),使用/表示工程根目录,该例访问成功
当web.xml配置时,/代表工程根目录,一定要加
绝对路径
当超链接跳转,或表单action时,可以使用request.getContextPath获取工程根目录,拼接绝对路径如path+"/servlet/HelloServlet"
当servlet中response.sendRedirect()时,使用request.getContextPath获取工程根目录,拼接绝对路径如path+"/test.jsp"
当servlet中request.getRequestDispatcher(path+"index.jsp").forward(request, response),使用path会有两个根路径,该例访问失败
总结:
当从客户端访问时(如超链接、action、sendRedirect),默认路径为服务器根目录,最好加Path获取工程根目录拼接绝对路径
当在服务器上时(如getRequestDispatcher、web.xml),默认路径为工程根目录,可以直接使用/来拼接相对路径
获取初始化参数
1、在web.xml中配置servlet初始化参数(注意!!init-param一定要跟在servlet-class后面,否则会报错)
2、在servlet中使用this.getInitParameter获取



MVC模型

Model2(对应于Model1)

JavaWeb【Servlet】的更多相关文章
- 【Servlet】(1)Servlet简介、Servlet底层原理、Servlet实现方式、Servlet生命周期
一.Servlet简介 1.Servlet定义: Servlet(Server Applet)是Java Servlet的简称,是为小服务程序或服务连接器,用Java编写的服务器端程序,主要功能在于交 ...
- 【Servlet】把文件写到Respond输出流里面供用户下载
本文区分于<[Jsp]把Java写到Respond输出流里面供用户下载>(点击打开链接)把原本该打印到控制台的内容,直接打印到一个文本文件txt中给用户下载. 实际上是<[Strut ...
- 【Servlet】Servlet监听器
一.Servlet监听器的概念 Servlet监听器是Servlet规范中定义的一种特殊类,用于监听ServletContext.HttpSession和ServletRequest等域对象的创建与销 ...
- 【Servlet】JavaWeb应用的执行流程
Tomcat与Servlet简介 Tomcat Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache.S ...
- 【Servlet】doGet()与doPost()的区别
doGet与doPost的区别 .Servlet接口只定义了一个服务方法--service .当发出客户端请求时,调用service方法并传递一个请求和响应对象 .使用时经常在doPost()中调用d ...
- 【Servlet】Servlet应用的get、post访问及和JSP的配合使用
Servlet是一种服务器端的Java应用程序,具有独立于平台和协议的特性,可以生成动态的Web页面. 它担当客户请求(Web浏览器或其他HTTP客户程序)与服务器响应(HTTP服务器上的数据库或应用 ...
- 【Servlet】Filter过滤器的编写和配置
Servlet的Filter介绍 在Servlet作为过滤器使用时,它可以对客户的请求进行过滤处理,当它处理完成后,它会交给下一个过滤器处理,就这样,客户的请求在过滤链里一个个处理,直到请求发送到目标 ...
- 【servlet】客户端是否可以访问到WEB-INF下的jsp文件
一般情况下(不考虑出现安全问题被入侵,那样啥都能访问到),WEB-INF下的jsp文件单凭浏览器端请求时访问不到的. 想访问的话需要通过服务端servlet的转发. 下面通过转发和重定向的尝试来观察访 ...
- 【servlet】 过滤器模板
EncodingFilter.java package Filter; import java.io.IOException; import javax.servlet.Filter; import ...
随机推荐
- [Kerberos] Kerberos教程(二)
4 Kerberos操作 最后,在获得前面段落中描述的概念后,可以讨论Kerberos如何运作.我们将通过列出和描述在身份验证期间在客户端和KDC之间以及客户端和应用程序服务器之间的每个数据包来执行此 ...
- Delphi通过ADO读写数据库
ADO是一种程序对象,用于表示用户数据库中的数据结构和所包含的数据. ADO (ActiveX Data Objects,ActiveX数据对象)是Microsoft提出的应用程序接口(API)用以实 ...
- 一些php常用函数积累
本文链接 <?php // id: ecffe70d3af54df9bad97b61918ace7d global $ct_path, $ct_log_path; $log_path = &qu ...
- 一篇文章搞懂android存储目录结构
前言 前两天因为开发一个app更新的功能,我将从服务器下载的apk文件放在了内部存储目录(测试手机为小米,路径为:data/user/0/packagename/files)下面,然后安装的时候一直安 ...
- 3分钟Markdown快速入门与使用
Markdown是一种可以使用普通文本编辑器编写的标记语言,通过简单的标记语法,它可以使普通文本内容具有一定的格式. 注意:图片为效果图 1 标题 #开头代表标题,几个#号代表几级,最高支持六级标题 ...
- 配置cinder-volume服务使用ceph作为后端存储
在ceph监视器上执行 CINDER_PASSWD='cinder1234!'controllerHost='controller'RABBIT_PASSWD='0penstackRMQ' 1.创建p ...
- 数据结构与算法-stack
栈的本质是一种线性表,特殊的一种线性表 基本概念 概念 栈是一种特殊的线性表 栈仅能在线性表的一端进行操作 栈顶(Top):允许操作的一端 栈底(Bottom):不允许操作的一端 stack是一种线性 ...
- Linux配置文件的修改
在很多时候,我们需要对Linux的配置文件进行修改.此时就涉及到了不同Linux发行版的修改配置问题.下面就以主流的几个操作系统(Unix:Solaris,Linux:Ubuntu,Redhat)作为 ...
- python pip换源方法
以下资料来源于网络: pip国内的一些镜像 阿里云 http://mirrors.aliyun.com/pypi/simple/ 中国科技大学 https://pypi.mirrors.ust ...
- Linux文件属性之Linux文件删除重要原理详解
Linux下文件删除的原理 只要dongdaxiafile(源文件).服务进程.dongdaxiaflie_hard_link(硬链接文件)三个中的任意一个存在文件不会被删除.