javaWeb

javaWeb是指使用java技术实现所有web程序的技术的总称。我们称之为javaWeb。

1、请求和响应(成对出现)

2、Web资源的分类

web资源分为两大类,分别是静态资源和动态资源。

静态资源指的是:html,Js,CSS,img图片,视频文件,txt文件等等。都是静态资源。

动态资源指的是:Servlet程序,jsp动态页面。

手动编写servlet实现

  • 实现servlet接口(javax.servlet.Servlet)

  • 重写service方法(service方法每次请求都会调用一次)
  • 在WebContent/WEB-INF/web.xml中配置servlet的访问路径 。浏览器访问servlet的路径

    web.xml(新建web工程的时候,eclipse自动创建出来的)的位置:

  • 把项目部署到tomcat中,去启动tomcat。在地址栏中输入信息,访问servlet

<servlet>元素是配置Servlet所用的元素。

<servlet-mapping>元素在Servlet和URL样式之间定义一个映射,即servlet类提供一个url,在地址栏输入对应的映射路径就可以访问你的servlet。

<servlet>
<!-- 给Servlet 配置一个名字 -->
<servlet-name>Hello</servlet-name>
<!-- servlet的全类名 -->
<servlet-class>com.lmx.servlet.Hello</servlet-class>
</servlet>
<!-- mapping映射设置 -->
<servlet-mapping>
<servlet-name>Hello</servlet-name>
<!--url-pattern(访问路径) 是给 servlet 程序配置一个访问地址
/hello 表示 http://ip地址:端口号/工程名/配置的地址
实际地址:http://127.0.0.1:8080/day06/hello -->
<url-pattern>/hello</url-pattern>
</servlet-mapping>

修改web.xml后必须重启服务器才会生效

Servlet的生命周期

1)构造 servlet,然后使用 init 方法将其初始化。

2)处理来自客户端的对 service 方法的所有调用。

3)从服务中取出 servlet,然后使用 destroy 方法销毁它,最后进行垃圾回收并终止它。

HTTP中Get与Post的区别

Http定义了与服务器交互的不同方法,最基本的方法有4种,分别是GET,POST,PUT,DELETE。URL全称是资源描述符,我们可以这样认为:一个URL地址,它用于描述一个网络上的资源,而HTTP中的GET,POST,PUT,DELETE就对应着对这个资源的查,改,增,删4个操作。到这里,大家应该有个大概的了解了,GET一般用于获取/查询资源信息,而POST一般用于更新资源信息。

Get是向服务器发索取数据的一种请求,而Post是向服务器提交数据的一种请求,在FORM(表单)中,Method默认为"GET",实质上,GET和POST只是发送机制不同,并不是一个取一个发!

模拟Get请求和Post请求的分发

public void service(ServletRequest req, ServletResponse res)throws ServletException, IOException {// 将servletRequest对象强转成为 HttpServletRequest对象HttpServletRequest httpRequest =  (HttpServletRequest) req;// 获取请求的方式String method = httpRequest.getMethod();// get请求获取到"GET" ,post请求获取到"POST"字符串System.out.println("请求的方式:" + method);// 根据请求的方式 执行不同的方法去做不同的处理if ("GET".equals(method)) {doGet();} else if ("POST".equals(method)) {doPost();}}public void doPost() {System.out.println("这是POST请求的处理方法");}public void doGet() {System.out.println("这是GET请求的处理方法");}

继承HttpServlet类实现我们自己的Servlet程序

1)首先创建一个Class,去继承HttpServlet类

2)重写httpServlet 中的 doGet方法和doPost方法实现具体的业务逻辑操作

3)需要在web.xml文件中配置Servlet的请求地址。

ps:tomcat关联源码下载的包如下图所示。

 为什么我们继承HttpServlet,就可以实现了Servlet程序呢?

因为HttpServlet继承了GenericServlet,而在GenericServlet类中它又实现了Servlet接口。

所以我们在实现开发中,只需要继承HttpServlet类,并且根据你自己的业务需要重写doGet()请求和doPost()请求即可

通过Eclipse自动新建一个Servlet程序

 Servlet类的继承体系

ServletConfig类

  ServletConfig表示Servlet在web.xml文件中配置的配置信息。

a) ServletConfig类的三大作用

 

1.获取Servlet在web.xml文件中配置的Servlet名称(也就是servlet-name的值<servlet-name>ConfigServlet</servlet-name>)。

2.获取Servlet初始化信息。(web.xml文件中<Servlet>标签中 <init-param>的初始化信息 )

3.获取ServletContext域对象

由文档可知configuration 是在初始化中获取信息。由Tomcat创建,并传入

A servlet configuration object used by a servlet container to pass information to a servlet during initialization.

所以init()方法必须勾选上

ServletContext

什么是ServletContext

 

第一:ServletContext是一个接口。

第二:ServletContext是一个域对象!

第三:每个Web工程,都对应一个ServletContext对象!

ServletContext有什么作用?

 

第一:ServletContext可以获取web.xml文件中的配置上下文参数 -----------<context-param>:它可以配置整个web工程的上下文参数

第二:ServletContext可以获取web工程在服务器的工程名

第三:ServletContext可以获取web工程中文件夹或文件在服务器硬盘上的绝对路径

第四:ServletContext可以设置、获取web工程的全局属性

protected void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {// 获取ServletConfig对象ServletConfig config = getServletConfig();// 获取Servlet的上下文对象ServletContext context = config.getServletContext();// 获取web.xml文件中配置的参数的值// 正确。ServletContext只能获取context-param配置的参数String passwordValue = context.getInitParameter("password");System.out.println("获取context-param参数:" + passwordValue);// ServletContext无法获取Servlet中配置的init-param参数String usernameValue = context.getInitParameter("username");System.out.println("获取servlet配置的init-param参数:" + usernameValue);}

在eclipse中创建一个Web项目的时候,虽然有web.xml生成,但是再添加Servlet类文件的时候总是看不见web.xml的更新,所以异常的郁闷!上网查了查,原来我们在创建Web项目的时候,会弹出一个对话框,“Dynamic web module version”这个选项默认成了3.0,按照老规范,应该是在eclipse的WebContent \ WEB-INF \ 目录下创建web.xml的。而新规范是可以不用web.xml的,如tomcat 7.0就支持新规范,这样相关的servlet配置会以注解的形式直接写到代码里面了,比如@WebServlet。 当然如果你用老的项目导入,可以选择Dynamic web module version这个选项设成2.5,这样web.xml就会自动更新了。

1.接口作为参数和返回值,都是同样的作用,所有继承了这个接口的类,都可以使用。也就是说,你给这个方法传参数的时候,可以把继承了这个接口的类的实例传给这个方法,同样的道理,你可以把继承了这个接口的类返回。

2.接口做为参数传递,传递的是实现了接口的对象; 
接口作为类型返回,返回的是实现了接口的对象。

Servlet小结

转载于:https://www.cnblogs.com/limingxian537423/p/6947590.html

Tomcat Servlet相关推荐

  1. 一、Web服务器——Tomcat Servlet学习笔记

    今日内容 web相关概念回顾 web服务器软件:Tomcat Servlet入门学习 一.web相关概念回顾 软件架构 C/S:客户端/服务器端 B/S:浏览器/服务器端 资源分类 静态资源:所有用户 ...

  2. 张利国java pdf_Java Web开发与实战–Eclipse+Tomcat+Servlet+JSP整合应用 (刘伟张利国) PDF...

    资源名称:Java Web开发与实战–Eclipse+Tomcat+Servlet+JSP整合应用 (刘伟,张利国) PDF 第1章 web开发工具的安装与使用 第2章 web编程技术基础 第3章 s ...

  3. Tomcat Servlet Request

    Tomcat & Servlet Web相关概念回顾 软件架构 C/S:客户端/服务器端 B/S:浏览器/服务器端 资源分类 静态资源:所有用户访问后,得到的结果都是一样的,静态资源可以被浏览 ...

  4. Tomcat Servlet 工作原理

    文章目录 Tomcat Servlet 工作原理 Servlet Tomcat解析Context容器过程及如何构建Servlet Servlet容器启动过程 Web应用初始化工作 创建Servlet实 ...

  5. Intellij IDEA 2020.2.3 配置使用 tomcat+servlet

    Intellij IDEA 2020.2.3 配置使用 tomcat+servlet 创建项目 配置tomcat服务器 初步使用 执行jsp文件 执行servlet tomcat版本问题 手动导入se ...

  6. Tomcat servlet工作原理

    Java web 的基础就是servlet,其也是Java web的根. Tomcat 的容器等级中,Context 容器是直接管理 Servlet 在容器中的包装类 Wrapper,所以 Conte ...

  7. tomcat servlet 线程

    在服务器里,有一个servlet,当客户端第一次访问服务器时,tomcat会 帮我们建一个servlet的对象出来,(注意: tomcat里面可能部署了10个Servlet,如果某一个Servlet从 ...

  8. Tomcat+Servlet面试题都在这里(修订版)

    前言 只有光头才能变强. 文本已收录至我的GitHub仓库,欢迎Star:https://github.com/ZhongFuCheng3y/3y 下面是我整理下来的Servlet知识点:  图上的 ...

  9. 基于ZigBee+ESP32+MQTT+EMQX+TomCat+Servlet接口+MySQL+安卓app的物联网课设

    文章目录 一.写在前面 二.课设简介 三.不眠夜开始了 1.基于zigbee网络数据采集的底层实现 2.基于ESP32和mqtt协议的数据上传功能 3.使用EMQX作为MQTT服务器软件 4.使用Ja ...

最新文章

  1. 利用CodeBERT,这个VS Code扩展可以自动生成Python文档字符串
  2. [Python]再学 socket 之非阻塞 Server
  3. uva11111 Generalized Matrioshkas
  4. 专业设计师是哪里找到高质量素材的!
  5. angular2 学习二 directives - 使用组件
  6. 如何查看Dell服务器前面板LCD的报错资讯
  7. 无锁编程的原理和应用
  8. 实型变量的定义和应用
  9. yum 装包时,提示Peer cert cannot be verified or peer cert invalid
  10. 蓝海卓越无线运营方案简述
  11. P4043 [AHOI2014/JSOI2014] 上下界最小费用流
  12. 中国私有云向头部玩家集中,如何走出差异化竞争路线?
  13. 数据项、数据字典、模式等基本概念辨析 数据库系统结构
  14. 使用线程实现电子时钟
  15. 毕业设计-基于大数据的移动图书馆个性化推荐系统-python
  16. 信道容量的迭代算法实现
  17. UJN_c++_Contest4735
  18. wifi,zigbee,ble 比较分析
  19. Web前端面试指导(五):掌握面试技巧,让面试变得轻松
  20. 教你无脑式安装Xshell、Xftp,快速远程连接使用Linux服务器并且高效传输文件(保姆级教程)

热门文章

  1. 知乎高赞:OracleJDK和OpenJDK有什么区别?网友:不愧是大神的回答~
  2. 面试官问:数据库 delete 表数据,磁盘空间还是被一直占用,为什么?
  3. 一文搞懂 CountDownLatch 用法和源码!
  4. 谈谈 Java 中自定义注解及使用场景
  5. SpringBoot实现过滤器、拦截器与切片
  6. 机器学习训练中常见的问题和挑战!
  7. 算法分析赛:从数据中挖掘价值,72万奖金,DCIC 2020 大数据赛道来了!
  8. 斯坦福新书《决策算法》,694页PDF免费下载
  9. 这是我见过的GAN的最佳用法!
  10. Hinton再挖新坑:改进胶囊网络,融合Transformer神经场等研究