目录

Servlet简介

Servlet的生命周期

获取请求行

获取请求头

获取请求数据

设置响应头

设置响应数据

request请求转发

request重定向

Cookie对象

session对象

ServletContext对象


Servlet简介

通过Servlet之第一个web项目后,我们已经知道了servlet的的大致流程,这里我进行servlet的详细讲解

Servlet是一个接口,HttpServlet实现了该接口,而我们写的MyServle是继承了HttpServlet,Servlet接口规范了服务器和浏览器的交互,使得我们只需重写service方法,不用写main方法Tomcat也能调用,这里Tomcat调用是用我们的包名加类名反射创建对象调用的,接下来我们进行讲解Servlet的其他常用方法。

Servlet的生命周期

  • 从第一次被调用到服务器关闭
  • 如果在web.xml文件中配置了<load-on-startup>1<load-on-startup>,1是执行顺序,其生命周期为从服务器启动到服务器关闭

init() servlet初始化方法,在servlet第一次被加载到内存的时候被调用,只执行一次

service() 真正处理请求的方法

destroy() servlet被销毁时被执行,也就是服务器关闭时

其实在这里不仅仅只有service方法,还有doget和dopost方法

service方法:是当你在浏览器发出请求时,不管是get请求还是post'请求,都能够执行

doget方法:只能接受get请求

dopost方法:只能接受post请求

好了,接下来讲解浏览器发送请求数据之后,服务器是如何处理的

request对象中封装了当前请求的所有信息,request对象是由服务器创建的,并作为实参传递给处理请求的servlet的service方法虽然我们也由doget和dopost方法,这里我们以service为例,主要是讲解request对象

获取请求行

String method = req.getMethod(); //获取请求方式

String url = req.getRequestURL(); //获取请求URL

String uri = req.getRequestURI(); //获取请求URI

String h = req.getScheme(); //获取协议

获取请求头

String value = req.getHeader(""); //获取指定请求头,这里是键值对的形式,传过去一个键会获取值,如果键不存在,返回null

Enumberation e = req.getHearderNames(); //返回所有键的名字,可以结合上面的方法,获取所有的值

获取请求数据

String name = req.getParameter("uname"); //这里的键值需要你的请求数据中的键值相对应,如果不存在,返回null

String[] favs = req.getParameterValues("fav"); //这里是对同键不同值的信息获取,同样的,如果fav不存在,返回null

通过上面的学习,服务器已经能够获取浏览器的请求信息了,那如何才能将处理后的信息,返回给浏览器呢,这里服务器创建了一个response对象,做此次请求的响应,其中在response中服务器已经为我们封装好了,请求信息是谁发过来的,以及响应信息发给谁,我们只需写响应信息即可

设置响应头

resp.setHeader("",""); //设置键值对的格式,会覆盖键

resp.addHeader("",""); //添加键值对,不会覆盖键

resp.sendError(404,"sorry"); //设置状态码

resp.setHeader("content-type", "text/html; charset = utf-8"); //设置响应编码格式,告诉浏览器是html文件

resp.setContentType("text/html; charset = utf-8"); //设置响应编码格式,等价于上面

设置响应数据

resp.getWriter().write("this is response"); //数据打印到浏览器中

resp.getWriter().write("<b>this is response</b>"); //数据打印到浏览器中,设置文本为html可执行html代码

request请求转发

req.getRequestDispatcher("page").forward(req,resp); //请求转发,实现多个servlet处理,这里是让page去处理

使用request对象实现不同的Servlet的数据流转,其作用域是一次请求内有效

String str = (String) req.getAttribute(Object value); //获取request作用域数据

req.setAttribute(Object name, Object value); // 设置request作用域数据

request重定向

对于请求转发每次刷新都会请求一次,所以当表单数据不允许重复提交时,也就是每提交一次,数据都会变化的情况下,就不能使用请求转发了,这里引入了重定向,重定向是两次请求,两个request对象

resp.sendRedirect(""); //引号里是你重定向的URL(网络资源)或URI(本地资源)

Cookie对象

使用了重定向,会发现浏览器发起的信息无法得到,也就是发送的不同请求的数据共享问题,为了解决此问题,引入了Cookie,存储在浏览器中,Cookie也是Session的基础,每一个浏览器中的Cookie会对应一个服务器中的session

Cookie c = new Cookie(String name, String value); //创建Cookie对象,一个Cookie对象只能存储一条信息

resp.addCookie(c); //响应Cookie信息给浏览器

c.setMaxAge(); //设置Cookie的存活时间,括号里面是秒,不设置默认是浏览器运行期间。

c.setPath(路径); //设置该Cookie对象的有效路径,不设置默认是所有路径都会带着该Cookie

Cookie[] cks = req.getCookies(); //获取Cookie信息,默认带一个JSESSIONID

cks[0].getName(); //获取Cookie的name值

cks[0].getValue(); //获取Cookie的value值

session对象

同一用户不同请求之间的数据共享问题,用户第一次访问服务器,服务器会给此用户创建一个session对象存储在服务器中,并将该session对象的JSESSIONID使用Cookie技术存储到浏览器中,保证用户的其他请求能够获取到同一个session对象,也保证了不同请求能获取到共享数据,作用域是一次对话

HttpSession hs = req.getSession() //获取session对象

hs.setAttribute(String name, Object value) //存储数据

hs.getAttribute(String name) //获取数据,返回类型是Object

hs.getId() //获取JSESSIONID

hs.setMaxInactiveinterval(秒数) //设置session的有效时间

hs.invalidate() //设置session强制失效

ServletContext对象

该对象解决了不同用户之间的数据共享问题

三种方式获得的对象一样

ServletContext sc = this.getServletContext(); //获取ServletContext对象

ServletContext sc2 = this.getServletConfig.getServletContext(); //获取ServletContext对象

ServletContext sc = req.getSession.getServletContext(); //获取ServletContext对象

sc.setAttribute(String name,Object value);  //数据存储

sc.getAttribute(""); //获取数据,返回Object类型,如果不存在返回null

获取web.xml文件全局配置

sc.getInitParameter(String name); //根据名字返回web.xml文件中全局配置的值,返回String,如果不存在返回null

sc.getInitParameterName(); //返回键名的枚举

获取web下的全局项目下的全局路径

String path = sc.getRealPath(String p); //p为web下的路径

Servlet详细讲解相关推荐

  1. Android webservice的用法详细讲解

    Android webservice的用法详细讲解 看到有很多朋友对WebService还不是很了解,在此就详细的讲讲WebService,争取说得明白吧.此文章采用的项目是我毕业设计的webserv ...

  2. 2.5万字详细讲解个人网站的开发过程和项目的部署

    目录 简介 1 技术介绍 1.1 个人博客功能 1.2 技术组合 1.3 工具与坏境 2 项目的环境配置 2.1 vue的环境配置 2.2 解决跨域问题 2.3 关于图标的获取 3 前端技术 3.1 ...

  3. WebService详细讲解

    1   学习目标 2   webservice 基本概念 2.1 什么是web服务 2.2  简介 2.3  术语 2.3.1  webservice开发规范 2.3.2  SOAP 协议 2.3.3 ...

  4. 适合新手练手,用Python爬取OPGG里英雄联盟英雄胜率及选取率,详细讲解加注释(建议收藏练手)

    今天来个简单的小项目,适合新手拿来练手,在OPGG上爬取英雄联盟里的法师,ADC,打野,辅助所有英雄的胜率及选取率,是不是感觉很高大上,但是却很简单,只要用三十多行代码就能实现,详细讲解每一行代码加注 ...

  5. Python的零基础超详细讲解(第十三天)-Python的类与对象

    基础篇往期文章如下: Python的零基础超详细讲解(第一天)-Python简介以及下载 Python的零基础超详细讲解(第二天)-Python的基础语法1 Python的零基础超详细讲解(第三天)- ...

  6. Python的零基础超详细讲解(第十二天)-Python函数及使用

    基础篇往期文章: Python的零基础超详细讲解(第一天)-Python简介以及下载_编程简单学的博客-CSDN博客 Python的零基础超详细讲解(第二天)-Python的基础语法1_编程简单学的博 ...

  7. Python的零基础超详细讲解(第七天)-Python的数据的应用

    往期文章 Python的零基础超详细讲解(第一天)-Python简介以及下载_编程简单学的博客-CSDN博客 Python的零基础超详细讲解(第二天)-Python的基础语法1_编程简单学的博客-CS ...

  8. Python的零基础超详细讲解(第五天)-Python的运算符

    往期文章 Python的零基础超详细讲解(第一天)-Python简介以及下载_编程简单学的博客-CSDN博客 Python的零基础超详细讲解(第二天)-Python的基础语法1_编程简单学的博客-CS ...

  9. java异常详细讲解_Java异常处理机制的详细讲解和使用技巧

    一起学习 1. 异常机制 1.1 异常机制是指当程序出现错误后,程序如何处理.具体来说,异常机制提供了程序退出的安全通道.当出现错误后,程序执行的流程发生改变,程序的控制权转移到异常处理器. 1.2 ...

最新文章

  1. Linux服务器上监控网络带宽的18个常用命令
  2. go标准库的学习-crypto/sha1
  3. OpenCV霍夫直线检测的实例(附完整代码)
  4. 阿里云容器服务cni网络插件terway非官方网络性能测试
  5. select 和epoll模型区别
  6. ipad鼠标圆圈变成箭头_下一代 macOS 或将支持 Mac「投屏」到 iPad
  7. 计算机键盘练习,电脑键盘指法练习经验分享
  8. android辅助点击软件吗,自动点击器安卓7.0版本粒可辛点击上线了
  9. vant实现Select效果--单选和多选
  10. Android项目中调用第三方app
  11. 携程机票数据仓库建设之路
  12. Python学习手册(笔记)
  13. 关于 css 中的转换属性,CSS3中的transform转换属性
  14. 期货交易怎么买空(期货怎么买做空)
  15. SVN客户端使用教程
  16. HashMap源代码详解
  17. Linux-CentOS7-防火墙开启、关闭、以及查看防火墙状态命令
  18. 西班牙馅饼 ECNU3528 java
  19. Levinson-Durbin算法原理推导(Hermitian Toeplitz矩阵,包括实数和复数情况)
  20. 《计算机图形学》学习笔记(二)

热门文章

  1. 安全平台基于ArcGIS构建安全的移动端App
  2. DataGridView 禁用自动生成列
  3. 201671030107 胡文艳 实验十四 团队项目评审课程项目总结
  4. C# Unity依赖注入
  5. Linux中许多常用命令是必须掌握的,这里将我学linux入门时学的一些常用的基本命令分享给大家一下,希望可以帮助你们。...
  6. MongoDB学习笔记(二)
  7. 前端mvc与mvvm
  8. GCD 和 NSOperationQueue 的差别
  9. SDUT 1149 勾股定理第一弹 勾股数
  10. 题目:[NOIP 2011]计算系数