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. 再谈PHP错误与异常处理

    博客好久没有更新了,实在惭愧,最近在忙人生大事,哈哈!这段时间没有看什么新的东西,结合项目中遇到的PHP异常处理问题,我又重新梳理了之前模糊的概念,希望对大家理解PHP异常处理有所帮助. 请一定要注意 ...

  2. js实现选项卡切换的效果

    效果图: css 代码: <style type="text/css"> *{margin: 0;padding: 0;list-style: none;} .demo ...

  3. 全景智慧掌上城,飞入寻常百姓家——VR全景智慧城市

    随着腾讯和阿里陆续将AR技术加入到新年抢红包大战之中,人们对于VR.AR未来的应用空间又多了一些想象.同传统的基于二维元素的抢红包不同,借助VR.AR的技术能够让用户获得一种更加真切的体验,这种体验相 ...

  4. 【Spark2.0源码学习】-10.Task执行与回馈

         通过上一节内容,DriverEndpoint最终生成多个可执行的TaskDescription对象,并向各个ExecutorEndpoint发送LaunchTask指令,本节内容将关注Exe ...

  5. Asp.Net页面传值的方法简单总结【原创】

    1.QueryString 当页面上form按照get的方式向页面发送请求数据的时候,web server会将请求数据放入 一个QEURY_STRING的环境变量中,然后通过QeueryString方 ...

  6. android蓝牙学习

    学习路线 1 蓝牙权限 <uses-permission android:name="android.permission.BLUETOOTH" /> <uses ...

  7. scrapy调试时出现 ImportError: No module named win32api

    windows下利用scrapy(python2.7)写爬虫,运行 scrapy crawl dmoz 命令时提示:exceptions.ImportError: No module named wi ...

  8. Mac下终端配置(item2 + oh-my-zsh + solarized配色方案)

    最近重装了系统,于是便重新配置了一下终端,使其更符合用户习惯. 效果如下: 拥有语法高亮,命令行tab补全,自动提示符,显示Git仓库状态等功能. 安装 首先我们下载的 iTem2 这个软件,比Mac ...

  9. C# DataGridView显示日期格式问题

    给DataGridView单元格绑定或者赋值DataTime数据后有时会发现不能显示完整的数据格式,怎么办呢?给出解决方案如下:1.指定整列的显示格式:m_dataGridView.Columns[c ...

  10. CYQ.Data V5 分布式自动化缓存设计介绍(二)

    前言: 最近一段时间,开始了<IT连>创业,所以精力和写的文章多数是在分享创业的过程. 而关于本人三大框架CYQ.Data.Aries.Taurus.MVC的相关文章,基本都很少写了. 但 ...