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. springboot 1.5.2 thymeleaf 添加templates 静态资源访问路径

    从velocity 模板切换到thymeleaf 后, 默认模板位置为templates , 有时候静态资源方在该目录下会出现访问404错误 解决办法: application.properties ...

  2. 简单bmp图片处理工具——python实现

    预备实现功能: 1.读取bmp文件 2.保存bmp文件 3.对bmp图片进行放大.缩小 4.对bmp图片进行灰度化 5.对bmp图片进行旋转 bmp文件格式非常简单,对于我这种初学者来说减少了不少不必 ...

  3. 微信小程序 获取OpenId

    微信小程序 官方API:https://mp.weixin.qq.com/debug/wxadoc/dev/api/ 首先 以下代码是 页面加载请求用户 是否同意授权 同意之后 用code 访问 微信 ...

  4. Python+requests库 POST接口图片上传

    捕获到POST接口的请求参数,如下: 包括data.file两个部分,上传代码如下: 比较简单,直接发送files参数即可 heads中 content-type 折腾了1个小时,呵呵

  5. DOUAudioStreamer 中kqueue的应用

    DOUAudioStreamer是一个基于Core Audio的流式音频播放器,其中的DOUAudioEventLoop通过kqueue来控制音频的各种状态. kqueue简介(详情请看官方manua ...

  6. cpp(第七章)

    1.c++提供了3种表示c—风格字符串方法:字符数组,字符串常量,字符串指针.其中字符数组并不一定是字符串,以空值字符'\0'来结束的字符数组时字符串. 2.函数参数为数组时,虽然减少了时间和内存的使 ...

  7. dedecms列表页调用子栏目列表,织梦首页调用栏目的子栏目标签代码

    dedecms列表页调用子栏目列表,织梦首页调用栏目的子栏目标签代码. dedecms列表页调用子栏目列表标签: {dede:channelartlist type='sun' }<a href ...

  8. 最全面的Java字节byte操作,处理Java基本数据的转换及进制转换操作工具,流媒体及java底层开发项目常用工具类

    前言:用于处理Java基本数据的转换及进制转换操作工具 一.实现功能 1.int与byte互转 2.int与byte[]互转 3.short与byte互转 4.short与byte[]互转 5.16位 ...

  9. Java开发中的23+2种设计模式学习个人笔记(未完待续)

    注:个人笔记 一.设计模式分三大类: 创建型模式,共五种:工厂方法模式.抽象工厂模式.单例模式.建造者模式.原型模式. 结构型模式,共七种:适配器模式.装饰器模式.代理模式.外观模式.桥接模式.组合模 ...

  10. Eclipse中SVN设置文件为ignore后重新添加至版本控制

    先前把需要版本控制的文件夹ignore了,用了很长时间找解决方法,结果发现竟如此简单,对eclipse的功能不熟悉啊. 方法如下: 在Window->Show View -> Naviga ...