servlet是什么

Servlet 是一种独立的 web 开发标准,用来接受、处理、返回浏览器的访问请求,它不应和服务器耦合在一起,servlet和servlet容器之间相互独立又相互依存,自我感觉,servlet有了容器才得以实现自己的价值,容器也因有了servlet而变得更加强大,servlet更像是一种规范和一种机制。Servlet 是 Java Web 技术的核心基础,通常我们说的Servlet一般指HttpServlet。

servlet的生命周期

servlet的生命周期有三个阶段:

1、初始化阶段 :在代码中的体现就是调用init方法实现servlet的初始化
      public void init(ServletConfig config) throws ServletException
2、相应客户请求阶段:在代码中的体现就是调用service方法
      public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException
3、终止阶段:在代码中的体现就是调用destroy方法进行注销操作
      public void destroy()

servlet的工作原理

servlet的基本工作就是接受客户端传来的请求,然后处理请求,最终将处理结果返回给客户端。这里使用HttpServlet来解释,其大致工作原理如下:

1、 当客户端往服务器发送一个请求时,服务器经过解析将请求交给servlet的service方法,请求最终发送到HttpServlet的service方法
2、 在Service方法,先通过请求对象,也就是HttpServletRequest来获取请求方式,然后根据请求方式来匹配决定调用get方法还是post方法来进行业务的处理
3、 请求将在get方法或者post方法中进行具体的逻辑和数据的处理,但是不管get方法还是post方法在HttpServlet中都没有具体的逻辑代码,所以继承HttpServlet之后,需要我们自己重写这两个方法
4、 经过一系列具体的处理后返回处理信息,再通过HttpServletResponse对象将处理信息逐级返回,信息是通过ServletResponse对象返回给客户端的
5、 信息返回给客户端之后,Servlet容器会调用Servlet的destroy()方法,用来释放掉Servlet所占用的资源,一些情况下也可能导致调用此方法:WEB应用被终止、Servlet容器终止运行、Servlet容器重新装载Servlet新实例等

servlet的执行流程

1、 服务器获取客户端传来的http请求
2、 服务器解析请求
3、 创建servlet实例
4、 调用init方法初始化servlet
5、 调用service方法进行请求的处理
6、 将处理后的数据返回,输出相应信息
7、 服务器响应客户端
8、 执行servlet的destroy方法销毁servlet

java中servlet的实现方式

java中实现servlet有三种方式:

1、 实现servlet接口
2、 继承Genericservlet抽象类
3、 继承httpservlet抽象类

一般使用第三种继承HttpServlet方式

一次完整访问的实例

/*** 1、创建一个web项目* 2、创建一个类,继承HttpServlet* 3、重写doGet或doPost方法* 4、servlet 3.0及以后使用 注解@WebServlet("/testServlet")来标记类为servlet,/testServlet为访问的servlet名* 5、添加web容器,启动服务,访问测试*/
@WebServlet("/testServlet")
public class TestServlet extends HttpServlet {private static final long serialVersionUID = 1L;protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// getAttribute方法用于获取请求中的属性值Object name = request.getAttribute("name");// getParameter方法用于获取请求中的参数String namestring = request.getParameter("name");response.getWriter().write(namestring.toString());}
}

注意:这里用的是servlet 3.0标准,如果是之前的2.0及其之前标准是不存在WebServlet注解的,需要手动在web.xml文件中配置Servlet映射,建议使用3.0。

30、JAVA_WEB开发基础之servlet(1)相关推荐

  1. 31、JAVA_WEB开发基础之servlet(2)

    使用servlet需要依赖jar包:servlet-api.jar,下边介绍一下关于servlet的一些api Servlet接口 package javax.servlet;import java. ...

  2. 36、JAVA_WEB开发基础之监听器

    是什么 顾名思义就是监听器就是监听器,在开发中指的是一种机制,通过这种机制可以对应用中组件的创建.销毁.更改等动作进行监视,根据具体监听信息作出相应的处理 工作原理 就是预先给组件添加一个事件,当这个 ...

  3. 35、JAVA_WEB开发基础之过滤器

    是什么 过滤器javaweb的一个重要组件,一种规范,可以对发送到serlvet的请求进行拦截和响应进行过滤.实际开发中可以使用过滤器来对访问服务器的请求进行过滤,以提高安全性 过滤器的原理 可以配置 ...

  4. 34、JAVA_WEB开发基础之EL表达式和标签

    EL表达式是什么 一种从域对象中获取数值的简化写法,el表达式语法格式为:${域对象.参数名} 使用方式 取出request范围内的参数:{pageContext.request.username} ...

  5. 38、JAVA_WEB开发基础之下载功能

    是什么 下载指的是将服务器端的文件保存到客户端的磁盘中 基本实现原理 根据对应的要下载的文件在服务器端找到对应的文件,然后获取到文件流对象,将流对象发送到客户端,然后客户端通过对返回结果中文件流的解析 ...

  6. 37、JAVA_WEB开发基础之上传功能

    是什么 上传指的是将客户端的文件保存到服务器的磁盘中 基本实现原理 读取客户端的文件信息,将文件信息以流的形式发送到服务器,然后服务器将流中的信息保存到本地,以实现文件的上传 实例 注意:提交的表单类 ...

  7. 32、JAVA_WEB开发基础之jsp

    是什么 是简化servlet的一种技术,将html语句和java代码混合在一个文件中进行编写,只对网页中动态产生的内容用java代码编写,静 态内容仍用html语句编写 运行原理 jsp本质上是一个s ...

  8. 39、JAVA_WEB开发基础之ajax和json

    ajax是什么 首先要知道ajax并不是一种新的技术,而是几种技术的强强联合,全称是Asynchronous Javascript and xml,其精髓在于异步加载资源,因此可以实现局部加载效果(因 ...

  9. 33、JAVA_WEB开发基础之会话机制

    会话是什么 一个客户端浏览器与web服务器之间连续发生的一系列请求和响应过程就是会话,这些过程中产生的一系列信息就是会话信息,会话机制就是用于维护这些信息一致性的一种技术.通俗的说就是,一个A账号访问 ...

最新文章

  1. VS中添加命令行参数的方法
  2. Nginx 之一:编译安装nginx 1.8.1 及配置
  3. 计算机是如何诞生的?
  4. 安恒杯月赛 babypass getshell不用英文字母和数字
  5. Docker : Docker创建自定义网桥
  6. 快速批量一个半小时插入1亿条数据到mysql
  7. 绝大部分投资者没资格谈心态
  8. matlab 求极小值 一维优化,MATLABoptimization
  9. mysql使用存储过程循环修改数据
  10. 机器人开发--技术路线简介
  11. 2021年荷兰经济发展研究报告
  12. jQuery写登录弹窗并居中显示
  13. Adobe PS常用快捷键
  14. python 字符串前面加 u, r, b的含义
  15. c语言软件如何调字间距,sublime text2如何更改行间距和字符间距?
  16. Ubuntu IDEA返回上一次位置快捷键失效问题解决
  17. TP5.1自定义创建命令(php think make:controller app\index\User)
  18. centos7 下修改MySQL密码
  19. Mac下编程相关软件安装
  20. ITON - 2 论名字

热门文章

  1. 计算机基础知识教案1,计算机基础知识教案一
  2. 7-3 棋盘覆盖 (10 分)(思路加详解)Come baby
  3. 7-45 航空公司VIP客户查询 (25 分)(思路+详解+map用法解释+超时解决)兄弟们来呀冲压呀呀呀呀
  4. [SpringBoot2]文件上传_单文件与多文件上传的使用
  5. [C++11]decltype在泛型编程中的使用举例
  6. 对一组同构对象用单数组表示法实现(算法导论第十章10.3-2)
  7. Sumsets POJ - 2229(计数dp)
  8. ora-00923数据类型不一致_小白学 Python(2):基础数据类型(上)
  9. LeetCode贪心 最长回文串
  10. python查看CNN训练模型参数