servlet:小服务程序

servlet是JavaWeb体系中的三大核心(servlet/Filter/Listener)之一,而且是最主要的那个.

作用:接受请求,处理请求,做出响应

继承体系:servlet(接口)-->GenericServlet(抽象类)-->HttpServlet(抽象类)

servlet(接口):

init:初始化:servlet是第一次被访问时初始化的,在服务器运行期间,servlet都只有一个对象
多个访客使用的是多条线程.

destroy:销毁:只有正常关闭服务器时才会调用此方法.

servlet:服务:被访问时调用此方法

在运行过程中某一个类的对象永远只有一个,叫单例模式

service( ServletRequest , ServletResponse ):服务,接收请求

Request对象代表的是浏览器发送到服务器的请求*
Response对象代表的是服务器向浏览器发送的响应*

getServletConfig:取得servletConfig

getServletinfo:取得servletinfo

【Servlet的生命周期】

创建:
第一次被访问(默认),只初始化一次
通过修改web.xml配置文件把servlet的创建改为项目启动即初始化
web.xml的servlet标签中添加一个 load-on-startup 标签,值为整数,一般设置为2(0-4,是一个优先级),
其中0和1是系统使用的,所以尽量不要用.
销毁:项目关闭(并不是服务器的启动和停止)

【servlet的路劲设置】 : url-pattern(过滤器也使用)

完全匹配:不含通配符的
/aaa/bbb 访问目标为/aaa/bbb的请求,运行此servlet

路径匹配:
/aaa/* /* /ab* ,前半段匹配即可

后缀匹配:
*.xxx 后半段匹配即可

默认: / 执行默认servlet(不用)

原则:
1.*要么开头,要么结尾,不能在中间.
2.路径如果不以*开头,则必须以/开头.(也就是说必须是绝对路径)
3.配置文件中的路径/aa/bb不带项目名的
4.页面中的超链接 表单提交的路径,绝对路径是要项目名的
原因:1.配置文件是属于某一个WEB项目的,所以不需要项目名
2.而对于页面来说,浏览器面对的WEB服务器,而服务器中是可以有多个项目的,所以
页面中的绝对路径的根代表的是服务器,所以以后要带项目名
例如:http://localhost:8080/day34/hello.servlet
程序 配置文件中的路径,服务端的WEB路径:
配置文件:<url/pattern> /hello.servlet</url-pattern>,开头的/代表的是当前项目的根
页面中的路径,客户端的WEB路径:
页面:<a href="day34/hello.servlet">aaa</a> 开头/代表的是服务器
特列:重定向

【servlet如何接受请求】

servlet的核心方法(servlet接口 servlet,HttpServlet : doGet doPost)接受两个参数:请求和响应对象,这两个对象是WEB服务器在接收到Http的请求
后,封装的两个JavaBean.请求和响应相关的信息都封装在这两个对象中
如果浏览器在发送请求是提交的表单的参数,则找Request对象来取得:
String getParameter(String name) <input type="" name="" value="">

【servlet如何发送响应:】

resp.getWriter().write("响应内容") 响应对象的输出流(向浏览器输出内容的流)

代码分层:
servlet:负责流程,接受请求,调用哪个service,响应什么信息
service:负责实现功能(业务逻辑),涉及底层的数据时,调用dao层
dao:只负责数据的操作(CURD),不参与业务

代码分层的总结:
1.为了让程序结构更加清楚
2.后续的维护和扩展工作中,变的更简单
3.工程性(后续的可维护性和可扩展性)

我的学习之路_第三十章_servlet的更多相关文章

  1. 我的学习之路_第三十四章_jsp

    jsp 在只有servlet时,输出页面内容比较麻烦(成本高,java代码中输出HTML标签),所以需要一种技术,主要是HTML页面的代码(HTML,css,js),可以嵌入java代码,来实现动态页 ...

  2. mysql学习之路_事物_存储过程_备份

    数据备份与还原 备份:将当前已有的数据保留. 还原:将已经保留的数据恢复到对应表中 为什么要做数据备份 1,防止数据丢失,被盗,误操作 2,保护数据记录 数据备份还原方式有多种:数据表备份 单表数据备 ...

  3. 我的学习之路_第五章_Data,正则

    Date 类 (时间类) 所属包:java.util.Date 构造方法: public Date() 返回的是当前时间 也就是1970-1-1到电脑目前的时间值,用毫秒来表示 public Date ...

  4. 我的学习之路_第二十章_JDBC

    JDBC 使用JDBC技术,通过mysql提供的驱动程序,操作数据库 ● 1. 注册驱动 告知jvm 使用的是什么驱动程序(mysql,oracle) 使用API中的类 DriverManager中的 ...

  5. 我的学习之路_第二十三章_HTML

    Html : 超级文本语言 ( Hyper text Markup Language ) HTML 文件扩展名是 * .html HTML 结构都是有标签组成 通常情况下标签有开始标签和结束标签组成 ...

  6. 我的学习之路_第二十五_javaScript

    Javascript 作用:可以对表单数据进行校验,可以对页面实现一些动态效果 定义: JavaScript一种直译式脚本语言,是一种动态类型.弱类型.基于原型的语言,内置支持类型. 它的解释器被称为 ...

  7. mysql学习之路_高级数据操作

    关系 将实体与实体的关系,反应到最终数据表的设计上来,将关系分为三种,一对多,多对多,多对多. 所有关系都是表与表之间的关系. 一对一: 一张表的一条记录一定只对应另外一张表的一条记录,反之亦然. 例 ...

  8. mysql学习之路_字段类型与属性2

    字段属性: 主键,唯一键,自增长. 主键: Primary key 主要的键,一张表只能有一个字段能使用对应的键,用来唯一约束该字段里面的数据不能重复,称之为主见. 一张表最多只有一个主键. 增加主键 ...

  9. mysql学习之路_字段类型与属性

    回顾 数据库基本知识:关系型数据库与非关系型数据库 关系型数据库:安全(磁盘) 非关系型数据库:高效(内存) 关系型数据库:建立在关系模型上的数据库, 数据结构:二维表(浪费空间) 数据库操作指令:s ...

随机推荐

  1. jquery deferred done then区别

    jquery deferred done then区别 deferred是jquery 对promise的实现. 以下内容基于jquery 1.8及以上版本 deferred具有then done等属 ...

  2. Java对字符串进行的操作

    本篇总结归纳对字符串或数组进行相关操作问题 数组倒序输出 查找字符串中第一次重复的字符 查找字符串中第一次没有重复的字符 删除字符串中重复的元素 倒序输出问题 第一种:对于数组 public int[ ...

  3. .net 利用Emit将object转为DbParameter,DataTable转为List<>

    先放测试结果图,测试的方法是拷贝了老赵的一个简单的性能计数器:CodeTimer.发现速度还是比利用反射来获取快了2倍左右的,将object转为DbParameter的反射方法我没写.         ...

  4. javascript代码的小小重构

    写js也有那么段时间了,也看过几本关于js的书,从最初的<锋利的jquery><高性能javasrcipt>到<javascript设计模式>等,虽然看了些书,看到 ...

  5. MAVEN总结,整合Eclipse以及配置私服

    对maven的理解 我们知道maven是一个项目管理工具,其核 心特点就是通过maven可以进行jar包的依赖管理,保证jar包版本的一致性,以及可以使多个项目共享jar包,从而能够 在开发大型jav ...

  6. POI使用:用poi接口不区分xls/xlsx格式解析Excel文档(41种日期格式解析方法,5种公式结果类型解析方法,3种常用数值类型精度控制办法)

    一.使用poi解析excel文档 注:全部采用poi接口进行解析,不需要区分xls.xlsx格式,不需要判断文档类型. poi中的日期格式判断仅支持欧美日期习惯,对国内的日期格式并不支持判断,怎么办? ...

  7. 在ROS中使用花生壳的域名服务

    ROS功能强大,也比较复杂,各个版本的脚本可能也大同小异,我现在使用的是6.37.3的版本. 添加Script 进入菜单System->Scripts. 点击加号,像图中这样,添加代码,我给这段 ...

  8. HTTP协议入门

    1.概述 (1)HTTP是应用层协议,是从Web服务器传输超文本到本地浏览器的传送协议,端口号为80.(2)默认情况下HTTP使用TCP,但是也可以基于以后存在的其他可靠传输协议.由于UDP无法提供可 ...

  9. 美丽的CSS图形和HTML5

    1.HTML5基础 文档类型 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "htt ...

  10. EJS模板引擎

    前面的话 nodejs的模板引擎有很多, EJS是比较简单和容易上手的.本文将详细介绍EJS 概述 EJS是一个简单高效的模板语言,通过数据和模板,可以生成HTML标记文本.可以说EJS是一个Java ...