30、JAVA_WEB开发基础之servlet(1)

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。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/321688.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

jzoj4817-square【区间RMQ,二分答案】

正题 题目链接:https://jzoj.net/senior/#contest/show/2956/2 题目大意 n∗mn*mn∗m的010101矩阵,每次询问(x1,y1,x2,y2)(x1,y1,x2,y2)(x1,y1,x2,y2)里的最大全111正方形。 解题思路 我们用fi,jf_{i,j}fi,j​表示以(i,j)(i,j)(i,j)为右下角的全1正方形大小&#…

2017上海金马五校赛 丢史蒂芬妮 博弈问题

丢史蒂芬妮 发布时间: 2017年7月9日 18:17 最后更新: 2017年7月9日 21:05 时间限制: 1000ms 内存限制: 128M 描述 有一天,空和白很无聊,决定玩盛大游戏,考虑到两个人玩,他们随便掏了一个游戏出来:在一个n*m的棋盘…

2017上海金马五校 购买装备 贪心+二分Check

购买装备 发布时间: 2017年7月9日 18:17 最后更新: 2017年7月9日 21:05 时间限制: 1000ms 内存限制: 128M 描述 最近盛大的一款游戏传奇世界极其火爆。游戏玩家John,想购买游戏中的装备。已知游戏的商店里有n件装备,第i件装备具有属性值ai&#xf…

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

使用servlet需要依赖jar包:servlet-api.jar,下边介绍一下关于servlet的一些api Servlet接口 package javax.servlet;import java.io.IOException;public interface Servlet {//在servlet被载入后和实施服务前由servlet引擎调用。如果init()//产生溢出U…

力扣(leetcode)第1题两数之和(Python)

1.两数之和 题目链接:1.两数之和 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素…

jzoj3809-设备塔【并查集】

正题 题目链接:https://jzoj.net/senior/#contest/show/2955/2 题目大意 n∗mn*mn∗m的矩阵,最左边和最右边是联通的,然后每次加入一个墙求能否有一条路径从最上方到最下方。如果有就加入否则不加入。 求最后有多少个墙。 解题思路 我们对于每个墙往八…

32、JAVA_WEB开发基础之jsp

是什么 是简化servlet的一种技术,将html语句和java代码混合在一个文件中进行编写,只对网页中动态产生的内容用java代码编写,静 态内容仍用html语句编写 运行原理 jsp本质上是一个servlet ,每个jsp页面第一次被访问时&#xff…

上古时期(大雾)的数据结构pdf

分块点分治Treap byWYCby\ WYCby WYC Part1 分块 概念 就是将nnn个数分成若干个块,然后要处理的时候整块一起的加上局部的直接暴力。 如果将块的大小分配好一般每次都是O(n)O(\sqrt n)O(n​)的。 而且因为十分暴力,所以有很多优秀的性质。 实现方法 …

2017西安交大ACM小学期 刁钻的顾客[3进制+折半枚举]

刁钻的顾客 发布时间: 2017年7月3日 10:23 时间限制: 3000ms 内存限制: 128M 描述 XJTU校园内新开一家商店,可是来了一位刁钻的顾客要购买商品A和商品B。关于商品的质量,共有n个评分,每个评分即一个整数来表示该产品在某一方面的质量。商…

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

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

2017西安交大ACM小学期 刷墙[折半枚举+异或]

刷墙 发布时间: 2017年7月3日 12:17 最后更新: 2017年7月6日 22:29 时间限制: 3000ms 内存限制: 128M 描述 小明有一面黑白混搭的墙,他想给把墙重新粉刷一遍。他将任务分给了xx粉刷匠,但是xx粉刷匠提出要求,他要根据原来墙的颜色进行粉…

jzoj4216-[NOIP2015模拟9.12]平方和【Splay】

正题 题目链接:https://jzoj.net/senior/#main/show/4216 题目大意 一个序列要求支持操作 插入一个数区间加上一个数区间求平方和 解题思路 用线段树可以做到区间求平方和。 就是(ab)2a22abb2(ab)^2a^22abb^2(ab)2a22abb2也就是维护区间和平方和和区间个数即可。 但是因为…

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

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

2017西安交大ACM小学期 选择困难症[折半枚举+二分查找]

选择困难症 发布时间: 2017年7月4日 12:44 最后更新: 2017年7月4日 12:45 时间限制: 5000ms 内存限制: 128M 描述 GG有严重的选择困难症。 早上起床后,需要花很长时间决定今天穿什么出门。 假设一共有k类物品需要搭配选择,每类物品的个数为Ai&…

jzoj3798-[NOIP2014模拟8.22]临洮巨人【前缀和】

正题 题目链接:https://jzoj.net/senior/#main/show/3798 题目大意 长度为nnn的字符串,求有多少个子串中ABCABCABC数量相等。 解题思路 方法好像很巧妙,用Si,A/B/CS_{i,A/B/C}Si,A/B/C​表示到第iii个时A/B/CA/B/CA/B/C的数量。 然后Sr,A−Sl,ASr,B−…

35、JAVA_WEB开发基础之过滤器

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

2017西安交大ACM小学期 毁灭序列[倒跑并查集]

毁灭序列 发布时间: 2017年7月4日 20:58 最后更新: 2017年7月6日 22:23 时间限制: 1000ms 内存限制: 512M 描述 给出一个n(1≤n≤2105)个非负整数a1,a2,...,an的序列,你要按一定顺序毁灭序列的中的数,在每次毁灭一个数后,输出不包括已毁…

P4036-[JSOI2008]火星人【Splay,二分,hash】

正题 题目链接:https://www.luogu.com.cn/problem/P4036 题目大意 一个字符串要求支持 插入一个字符修改一个字符询问两个后缀的最长公共前缀。 解题思路 如果不考虑修改我们可以用二分hashhashhash解决该问题,但是涉及到修改和插入我们考虑用SplaySplaySplay维…

36、JAVA_WEB开发基础之监听器

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

2017西安交大ACM小学期 神器插座 KMP匹配

神奇插座 发布时间: 2017年7月3日 11:27 最后更新: 2017年7月5日 13:46 时间限制: 500ms 内存限制: 128M 描述 AA所在的国家有一项神奇的发明:插座。这里的插座不仅有两孔、三孔,而是有多种形态,下面用不同的小写字母表示不同的插座。插…