一、Servlet简介

Java Servlet 是运行在 Web 服务器或应用服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层。(B-S开发的基础)

Servlet 能做些什么

  • 1.读取客户端(浏览器)发送的显式的数据。这包括网页上的 HTML 表单,或者也可以是来自 applet 或自定义的 HTTP 客户端程序的表单。
  • 2.读取客户端(浏览器)发送的隐式的 HTTP 请求数据。这包括 cookies、媒体类型和浏览器能理解的压缩格式等等。
  • 3.处理数据并生成结果。这个过程可能需要访问数据库,执行 RMI 或 CORBA 调用,调用 Web 服务,或者直接计算得出对应的响应。
  • 4.发送显式的数据(即文档)到客户端(浏览器)。该文档的格式可以是多种多样的,包括文本文件(HTML 或 XML)、二进制文件(GIF 图像)、Excel 等。
  • 5.发送隐式的 HTTP 响应到客户端(浏览器)。这包括告诉浏览器或其他客户端被返回的文档类型(例如 HTML),设置 cookies 和缓存参数,以及其他类似的任务。

Servlet 生命周期

Servlet 生命周期可被定义为从创建直到毁灭的整个过程。以下是 Servlet 遵循的过程:

  • Servlet 通过调用 init () 方法进行初始化。
  • Servlet 调用 service() 方法来处理客户端的请求。
  • Servlet 通过调用 destroy() 方法终止(结束)。
  • 最后,Servlet 是由 JVM 的垃圾回收器进行垃圾回收的。

二、遇到的问题

1.@WebServlet("/路径")

很多时候我们会在许多代码中出现 @WebServlet("/CheckBox")注释内容,我在学习Servlet时,就在思考这句代码有什么作用,为什么要放在这里。 查阅了许多博客之后,大致搞清了缘由。
以下代码建立小型模型(假定已经配置Web项目)

<!DOCTYPE html>
<html>
<head><meta charset="utf-8"><title>Servlet</title>
</head>
<body>
<form action="CheckBox" method="POST" target="_blank"><input type="checkbox" name="baidu" checked="checked" /> 百度<input type="checkbox" name="google"  /> Google<input type="checkbox" name="taobao" checked="checked" /> 淘宝<input type="submit" value="选择站点" />
</form>
</body>
</html>import java.io.IOException;
import java.io.PrintWriter;import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/CheckBox")
public class CheckBox extends HttpServlet {private static final long serialVersionUID = 1L;protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// 设置响应内容类型response.setContentType("text/html;charset=UTF-8");PrintWriter out = response.getWriter();String title = "读取复选框数据";String docType = "<!DOCTYPE html> \n";out.println(docType +"<html>\n" +"<head><title>" + title + "</title></head>\n" +"<body bgcolor=\"#f0f0f0\">\n" +"<h1 align=\"center\">" + title + "</h1>\n" +"<ul>\n" +"  <li><b>百度标识:</b> "+ request.getParameter("baidu") + "\n" +"  <li><b>Google 标识:</b> "+ request.getParameter("google") + "\n" +"  <li><b>淘宝标识:</b> "+ request.getParameter("taobao") + "\n" +"</ul>\n" +"</body></html>");}// 处理 POST 方法请求的方法public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doGet(request, response);}}

首次启动Tomcat后,服务器由于没有Servlet实例,Tomcat会自动实例化一个容器。在这个容器中,我们有一个简单的H5页面表单

表单采用POST方式提交, 点击按钮发起HTTP请求,通过action属性提交到Servlet 程序。
此时就涉及上面提到的问题,收到HTTP请求后Servle会如何处理?

一般,我们通过Web.xml配置文件指定

<servlet><!--类名--><servlet-name>CheckBox</servlet-name><!--所在的包--><servlet-class>CheckBox</servlet-class></servlet><servlet-mapping><servlet-name>CheckBox</servlet-name><!--访问基于项目的路径--><url-pattern>/CheckBox</url-pattern></servlet-mapping>

其中/CheckBox表示访问该servlet的 url 映射(路径)(此处为相对路径,即 “项目名称/CheckBox” )。

注释@WebServlet("/CheckBox") 同样可以起到上述配置文件的作用,等价于 在web.xml中配置的该servlet的元素中的配置。

经过测试,web.xml与@Webservlet(‘/路径’)作用大致相同。

@WebServlet相关推荐

  1. Spring详解:WebServlet 中不能注入Bean对象

    1. 前言 最近在研究Spring IOC.AOP以及和Mybatis整合的时候发现在Spring中使用Servlet+Service+Dao(Mybatis)的时候,发现在Controller层也就 ...

  2. servlet类中@WebServlet 报错,不变色

    加上javax.servlet.annotation.WebServlet后依然是报错. 解决方法:到安装tomcat的目录下找到lib,里面有个servlet-api.jar复制到目录中,Build ...

  3. java web----servlet

    1.第一个servlet应用(可以直接创建maven项目,产生maven目录结构) 导入jar包 <dependency><groupId>javax.servlet</ ...

  4. WebServlet 4.0

    目录结构 package com.aaa.servlet;import javax.servlet.ServletException; import javax.servlet.annotation. ...

  5. eclipes创建一个web项目web.xml不能自动更新的原因(web.xml和@WebServlet的作用)

    在eclipse中创建一个Web项目的时候,虽然有web.xml生成,但是再添加Servlet类文件的时候总是看不见web.xml的更新,所以异常的郁闷!上网查了查,原来我们在创建Web项目的时候,会 ...

  6. 关于webservlet 请求异步处理,链接未关闭出现的bug

    webservlet  +redis 的消息发布订阅 ,挺好的 当请求到来,向redis server申请一个频道 ,然后等着另一端架设是B 处理完毕获得到处理信息调用redis ,使用redis 往 ...

  7. eclipse Filter web.xml 问题解决 异步请求@WebServlet

    eclipse Filter web.xml 问题解决 异步请求@WebServlet 参考文章: (1)eclipse Filter web.xml 问题解决 异步请求@WebServlet (2) ...

  8. Java中@WebServlet的使用方法

    在servlet3.0以后,我们可以不用再web.xml里面配置servlet,只需要加上@WebServlet注解就可以修改该servlet的属性了. 下面是@WebServlet的属性列表. 属性 ...

  9. 找不到“javax.servlet.annotation.WebServlet“解决方法

    找不到"javax.servlet.annotation.WebServlet"解决方法 参考文章: (1)找不到"javax.servlet.annotation.We ...

  10. HttpServlet使用@WebServlet注解

    /*** @author WH* @description 导出风控表* @date 2017/10/11 11:28*/ @WebServlet("/export/risk") ...

最新文章

  1. 创建 VXLAN - 每天5分钟玩转 OpenStack(111)
  2. mac连接群晖的服务器会自动断开_酷玩家庭数码-mac苹果笔记本电脑如何访问群晖NAS文件?...
  3. 刷magisk模块后不能开机_联想启天商用电脑刷BIOS或维修换主板后 开机叫两声处理办法...
  4. ae可围绕帧拖动放大插件:Drag Zoom Pro for AE mac(兼容M1)
  5. mysql脚本中如何写判断_mysql中如何写判断语句
  6. sql2005通用分页存储过程
  7. 解密阿里线上问题诊断工具Arthas和jvm-sandbox
  8. 最新kali之arping
  9. 无线路由器dns服务器是什么意思,无线路由器dns是什么
  10. 计算机网络体系结构各层中的网络设备
  11. iPhone X(10)屏幕分辨率与适配
  12. 绝对值信号的编码器有哪些信号输出(三、四)
  13. c 语言 如何设置串口波特率,串口自动波特率设置程序
  14. 你要相信没有到不了的明天
  15. LCA——JD 3055 Nearest Common Ancestors
  16. 安徽泾县:如诗似画的桃花潭
  17. python中的sum函数.sum(axis=1)
  18. 还存在过有键盘的kindle?
  19. iOS9 中关闭ATS的方法
  20. 程序猿之--基本素质

热门文章

  1. Android MediaProjection截屏与录屏(ScreenCapture Library 的使用)(二)
  2. NBSI2内部功能实现大揭谜 1
  3. 北京1954坐标系3度带和6度带及中央子午线对照表
  4. C Primer Plus 第四章 复习题编程练习 答案
  5. Ubuntu 的ADSL设置(转)
  6. 实时记录运动轨迹插件_浅谈 leaflet 地图插件的使用(制作飞机航线图)
  7. 简单实用的web打印方案-网页精准打印
  8. CSP -- 运营商内容劫持(广告)的终结者
  9. Windows server 2012 R2网卡驱动安装经历
  10. matlab导出高分辨率图片