Servlet、ServletConfig、ServletContext
1.Servlet技术
1.1 Servlet概述:
什么是servlet:它是运行在web服务器端的一个java小程序,简单来说,它就是一个java类
在使用servlet时,需要导入javax.servlet下的jar包。比如:tomcat服务器提供了
servlet的servlet-api.jar包,所以在开发时用tomcat服务器就不需要再导入servlet的jar包。
Servlet它是一个资源,是用来被用户访问的资源,同时是一个动态资源,它是由sun指定的servlet规范。
Servlet的作用:它是基于Http协议的,主要是用来接收客户端发送的请求,处理请求,把数据响应给客户端。
1.2 Servlet的入门
1.Servlet的接口和实现类:
>>>Servlet它是一个接口,在javax.servlet 包下面。
五个方法:
* destroy():执行这个方法,销毁了servlet对象
* init(ServletConfig config):在web服务器创建servlet对象以后,执行这个初始化方法。
* service(ServletRequest req, ServletResponse res) :服务方法,用来接收客户端发送的请求,并且响应数据到客户端
* getServletConfig():现在不讲
* getServletInfo():servlet 的信息,比如作者、版本和版权,这个方法在开发中不用。
>>>GenericServlet,它是一个类,实现了Servlet接口
>>>HttpServlet,它是一个类,实现了Servlet接口,同时继承了GenerciServlet
创建servlet三种方式
>>>直接实现Servlet接口。
>>>继承GenericServlet类
>>>继承HttpServlet类。
一般在开发中,创建servlet,通常去继承这个HttpServlet.
比如:class MyServlet extends HttpServlet{ 重写咱们所需要的方法}

 1.3.实现第一个Servlet程序>>> 1.自己手动创建Servlet,通过Dos命令窗口编译Servlet,把编译好的class文件部署到tomcat服务器运行。>>> 2.通过Eclipse创建Servlet,部署到tomcat服务器,然后就可以访问咱们所需要的Servlet。步骤:1.创建HelloWordServlet,继承GenericServlet2.重写父类GenerciServlet的service方法。3.在服务方法里面,处理客户端的请求后,把数据响应给客户端。比如:public class HelloWordServlet extends GenericServlet{@Overridepublic void service(ServletRequest arg0, ServletResponse response)throws ServletException, IOException {// 处理客户端发送的请求,并且把数据响应给客户端System.out.println("接收了客户端的请求-------------------");//把数据响应给客户端,与浏览器绑定的输出流,作用向浏览器输出数据PrintWriter pw = response.getWriter();pw.print("Hello World");}}访问Servlet,提供servlet的访问路径:比如:<!-- 配置访问/hello路径,对应的servlet --><servlet><servlet-name> helloWorld</servlet-name><servlet-class>cn.itcast.firstmyapp.servlet.HelloWordServlet</servlet-class></servlet><!-- 配置浏览器访问servlet的路径 --><servlet-mapping><servlet-name> helloWorld</servlet-name><url-pattern>/hello</url-pattern></servlet-mapping>通过浏览器访问:http://localhost:8080/webFirst/hello就找到对应的HelloWorldServlet,把数据响应给浏览器。导入jar包:先拷贝对应的jar包,放到WebContent下面的WEB-INF下面的lib文件夹下面。jar的图标就变成小奶瓶。
1.3.Servlet的生命周期:生命周期:自然界人从出生到最终走向西方极乐世界,这个周期过程就是人的生命周期,其实servlet的生命周期和人的一样,从servlet对象被创建,经过使用servlet对象,到最终servlet对象被销毁,整个过程就是servlet的生命周期。与生命周期相关的三个方法:>>> 初始化阶段:init(ServletConfig config) 初始化方法:首次访问这个Servlet,servlet对象会被创建,执行初始化方法,执行一次。>>> 运行阶段:service(ServletRequest req, ServletResponse res) 服务方法:每次访问servlet时,服务方法都会被执行,执行多次。。>>> 销毁阶段:destroy()销毁方法:在服务器正常关闭时。会执行销毁方法,执行一次。比如:public class LifeServlet extends GenericServlet {/*** 初始化方法*/@Overridepublic void init(ServletConfig config) throws ServletException {System.out.println("首次访问LifeServlet时,会执行这个初始化方法-------------");}/*** servlet的服务方法*/@Overridepublic void service(ServletRequest arg0, ServletResponse arg1)throws ServletException, IOException {System.out.println("每次访问lifeservlet,都会执行这个服务方法--------");}/*** 销毁方法*/@Overridepublic void destroy() {System.out.println("在服务器关闭时,会执行销毁方法----------");}}在web.xml文件上面配置访问路径:<servlet><servlet-name>lifeServlet</servlet-name><servlet-class>cn.itcast.firstmyapp.servlet.LifeServlet</servlet-class></servlet><servlet-mapping><servlet-name>lifeServlet</servlet-name><url-pattern>/life</url-pattern></servlet-mapping>1.4 Servlet应用-HttpServlet在开发中,通常浏览器访问web服务器端的资源,是带有协议的访问,比如说http协议、https协议等,所以说在创建servlet时。需要使用带有协议的servlet,那么咱们程序员在创建servlet时,通常用继承HttpServlet的方式来实现。1.查看HttpServlet源码得到的结论:在HttpServlet里面重写service方法时,因为在service方法里面,最终调用doGet或者doPost方法,所以说在重写服务方法时,一般情况下不会重写service方法,而是直接重写doGet和doPost方法在客户端发送get请求,在服务器端就用doGet方法接收、在客户端发送Post请求,在服务器端就用doPost方法来接收代码如下:public class MyHttpServlet extends HttpServlet{/*** 接收客户端发送的get请求*/public void doGet(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {String method = req.getMethod();System.out.println(method);System.out.println("这是发送的get请求");}/*** 接收客户端发送的post请求*/public void doPost(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {String method = req.getMethod();System.out.println(method);System.out.println("这是发送的Post请求");}}在开发中,注意的细节:>>>1.在使用对象时,使用带有协议的请求和响应对象HttpServletRequset和HttpServletResponse>>>2.在开发时,继承HttpServlet是,直接重写doGet和doPost方法,而不是重写service方法访问servlet的具体执行过程:见图分析。1.5 使用Eclipse工具开发servlet通过开发工具创建servlet有两种方式:>>> 1.先创建一个普通的java类,需要去实现Servlet接口,或者继承对应的HttpServlet(GenericServlet)类,咱们普通的java类就具有了servlet功能,所以需要手动在web.xml配置文件中添加访问servlet的路径信息。>>> 2.直接创建servlet,会自动在web.xml文件中添加访问servlet的路径信息。步骤:1.新建web项目:比如说:创建一个web项目名称:chapter032.创建一个servlet程序:比如说:先创建一个包,名称cn.itcast.servlet ,servlet的名称:TestServlet013.部署和访问servlet:通过开发工具部署web项目,如chapter03,访问它下面的servlet资源:访问的地址:http://localhost:8080/chapter03/testServlet01


输入wed名字


    注意:一般情况下,为了简化开发,咱们会在doPost方法里面调用doGet方法。具体见下代码:/***  doGet方法,用来接收浏览器发送的get请求*/protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// TODO Auto-generated method stubPrintWriter out = response.getWriter();out.print("this servlet is created by eclipse");}/*** doPost方法,用来接收浏览器发送的post请求*/protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {this.doGet(request, response);}需求: 可以发送get请求和post请求得到1到100之间的和protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {int sum=0;for(int i=0;i<=100;i++){sum=sum+i;}------}/*** doPost方法,用来接收浏览器发送的post请求*/protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {this.doGet(request,response);}1.6 实现Servlet的虚拟路径映射1.Servlet的多重映射:一个Servlet,可以对应多个访问路径。比如:一个servlet对应的访问路径:/test02 或者 /test03</servlet-mapping><servlet-mapping><servlet-name>TestServlet01</servlet-name><url-pattern>/test02</url-pattern></servlet-mapping><servlet-mapping><servlet-name>TestServlet01</servlet-name><url-pattern>/test03</url-pattern></servlet-mapping>2.Servlet的映射路径可以使用通配符servlet的映射路径有三种方式:、>>> 完全目录匹配: 比如 /hello >>> 目录匹配: 比如 /abc/* 或者 /*>>> 扩展名匹配: *.do ,*.action 注意 /*.do这种写法是错误的。优先级:完全目录匹配>目录匹配>扩展名匹配3.缺省Servlet什么是缺省Servlet:它的映射路径 “/” ,代表这是一个缺省的servlet.缺省的servelt作用:处理请求的资源找不到的问题(404 代表请求的资源找不到)

2.ServletConfig接口
什么是ServletConfig: 它是servlet的配置对象,作用就是获取与servlet的初始化参数。
它的子类是GenericServlet和HttpServlet.
它被实列化是通过web服务器实现的。
得到servletConfig对象:getServletConfig()
ServletConfig常用的方法:
>>>> 1. 获取servlet的初始化参数的值:getInitParameter(String name):根据encoding获取utf-8
>>>> 2. 获取servlet初始化参数的名称:getInitParameterNames() :获取encoding和username等名称
>>>> 3. 得到servletContext对象:getServletContext()
>>>> 4. 获取servlet的名称:getServletName():对应web.xml里面TestServlet02
初始化参数的配置:

encoding
utf-8

username
x

3.ServletContext接口
ServletContext对象是在web服务器启动时就创建了,是web服务器创建的servletContext对象,
每一个web项目只有一个ServletContext对象。
ServletContext对象的作用:获取web应用程序的初始化参数,在web应用程序能共享数据,获取web项目下的资源文件。
得到ServletContext对象:
>>>>1.通过ServletConfig对象: config.getServletContext()
>>>>2.直接得到: getServletContext();

1.获取web应用程序的初始化参数(web应用程序就是web项目)>>>> 1. 获取全局初始化参数的值:getInitParameter(String name)>>>> 2. 获取全局初始化参数的名称:getInitParameterNames() 比如:<!-- 配置全局的初始化参数 --><context-param><param-name>AAA</param-name><param-value>aaa</param-value></context-param><context-param><param-name>BBB</param-name><param-value>bbb</param-value></context-param>2.实现多个servlet对象之间共享数据:因为一个web项目只有一个ServletContext对象。ServletContext对象就是域对象:域对象在一定范围内能存值和取值。域对象相关的方法:* 存值:void setAttribute(String key,Object obj);*  取值:Object obj = getAttribute(key);*  删除值:void removeAttribute(key);比如:在TestServlet04里面存值://1.得到ServletContext对象ServletContext context = this.getServletContext();//2.存值context.setAttribute("key", "servlet04里面存的值----");在TestServletO5里面获取值://1.得到servletContext对象ServletContext context = this.getServletContext();//2.从ServletContext取值Object obj =context.getAttribute("key");String value=obj.toString();response.setContentType("text/html;charset=utf-8");response.getWriter().print(value);3.获取Web下面的资源文件通过ServletContext对象能够获取Web项目下面文件的字节输入流,或者文件的绝对路径。路径问题:普通java项目:直接使用jdk编译java文件,所以说文件的路径是相对于工作空间。比如:Properties por = new Properties();InputStream inStream = new FileInputStream("src/config.properties");por.load(inStream);String value =por.getProperty("key");System.out.println(value);web项目:运行在tomcat服务器上面的,所有说文件的路径是相对于tomcat服务器。服务器端是没有src这个目录,写路径不能写src,必须相对于tomcat服务器端的路经。1.获取文件的自己输入流:路径是相对于tomcat服务器的路径InputStream  in =getResourceAsStream(String path)  比如:// 获取文件的字节输入流ServletContext context = this.getServletContext();String path="/WEB-INF/classes/config.properties";InputStream in = context.getResourceAsStream(path);Properties pro= new Properties();pro.load(in);//获取配置文件的值String v1 = pro.getProperty("Company");String v2= pro.getProperty("Address");response.getWriter().print("company name :"+v1+" company address :"+v2);2.获取文件的绝对路径:路径是相对于服务器端的路径String realPath = getRealPath(path);比如://1.得到ServletContext对象ServletContext context = this.getServletContext();//2.获取文件的绝对路径String path="/WEB-INF/classes/config.properties";//3.调用getRealPath//E:\soft\apache-tomcat-7.0.55\webapps\chapter03\WEB-INF\classes\config.propertiesString realPath = context.getRealPath(path);System.out.println(realPath);InputStream in = new FileInputStream(realPath);

Servlet、ServletConfig、ServletContext相关推荐

  1. 大数据WEB阶段 (十)Response、ServletConfig、ServletContext、资源跳转三种方式

    Response.ServletConfig.ServletContext.资源跳转三种方式 - (一)Response 一.Response概述 在doGet和doPost方法的参数中,HttpSe ...

  2. Servlet第二篇【Servlet调用图、Servlet细节、ServletConfig、ServletContext】

    Servlet的调用图 前面我们已经学过了Servlet的生命周期了,我们根据Servlet的生命周期画出Servlet的调用图加深理解 Servlet的细节 一个已经注册的Servlet可以被多次映 ...

  3. servlet 返回可访问文件_Servlet第二篇「Servlet细节、ServletConfig、ServletContext」

    Servlet的调用图 前面我们已经学过了Servlet的生命周期了,我们根据Servlet的生命周期画出Servlet的调用图加深理解 Servlet的细节 一个已经注册的Servlet可以被多次映 ...

  4. Servlet功能实现和执行过程、servlet的生命周期、Servlet线程安全问题、Servlet的三种映射方式、ServletConfig、ServletContext

    1. 什么是Servlet? Servlet是SUN公司提供的一套规范,名称就叫Servlet规范,它也是JavaEE规范之一. 第一:Servlet是一个运行在web服务端的java小程序 第二:它 ...

  5. 【Servlet】ServletContext、ServletConfig对象学习、用户登录系统完善

    总结:request.cookie.session.context的区别 这四个对象有不同级别的作用域和生命周期. (1)request:解决了一次请求内的数据共享问题(作用域:一次请求) req.s ...

  6. Java Web 项目入门指南(http、Servlet、Request、Response、ServletContext、会话技术[cookie、session]、Filter、Listener)

    概述 web 服务器.项目.资源概述 web 服务器:可以被浏览器访问到的服务器 常见的 web 服务器: tomcat:中小型的服务器软件,免费开源,支持 JSP 和 Servlet apache ...

  7. Servlet中(Session、Cookies、Servletcontext)的基本用法

    //req: 用于获得客户端(浏览器)的信息 //res: 用于向客户端(浏览器)返回信息 1.session的设置:              //得到和req相关联的session,如果没有就创建 ...

  8. ServletContext对象、ServletConfig对象

    通过前面知识点的学习,我们对于请求的处理已经可以说比较灵 活了,但是还不够.我们再介绍两个重要的对象 ServletContext 对象 和 ServletConfig 对象 ServletConte ...

  9. Servlet 重定向,请求转发,多个Servlet间的数据共享(ServletContext、Cookie、HttpSession和HttpServletRequest)

    请求数据包格式: 响应数据包格式: 多个servlet之间的调用规则 重定向解决方案 关于重定向的缺点:对用户来说虽然只需要手动访问一次服务端,剩下的由浏览器自动完成挺好的,但如果浏览器距离服务器很远 ...

  10. Servlet基础:接口、类、请求响应、配置、会话追踪、上下文、协作、异常

    10.1 Servlet介绍 ​ Servlet技术是Sun公司提供的一种实现动态网页的解决方案,它是基于Java编程语言的Web服务器端编程技术,主要用于在Web服务器端获得客户端的访问请求信息和动 ...

最新文章

  1. 互联网技术的技术名词
  2. 初识OSGI.NET插件框架
  3. HDU 2047 阿牛的EOF牛肉串
  4. 计算属性的setter和getter
  5. c# 执行程序 未捕获的异常 处理;软件闪退 处理方式 工程启动不报错,执行程序报错
  6. n1盒子救砖_新手教程教你N1盒子纯净刷机教程,实现OMV、HomeAssistant功能
  7. 在 WindowMobile 上的模拟LED 显示屏插件(转)
  8. 银联支付之在线网关支付
  9. 普通话测试软件字体怎么调整,普通话测试方案
  10. 阿里巴巴使命、愿景、价值观、绩效管理中的六大价值观、TAE 与 TOP、聚石塔、阿里云的差异化服务
  11. python输出时间差_利用python计算时间差(返回天数)
  12. 小学期云效能训练营-Day04
  13. 拨打上述范围的电话或手机免费
  14. 计算机中录音机的使用方法,教你win10系统电脑录音机功能录音的使用教程
  15. 计算机专业教务工作总结,计算机系阶段工作总结
  16. screen工具使用
  17. python和汇编_python – 你对这些汇编助记符有什么建议吗?
  18. 关于checkbox的全选/全不选的处理
  19. 「越南小鸟」被迫下架,「反人类」小游戏成游戏业「嘲笑鸟」
  20. 百汇BCR:为什么要使用外汇模拟交易软件?有什么好处?

热门文章

  1. Ubuntu系统下载及安装教程
  2. VGA驱动之-显示例程(最简单)
  3. windows桌面动态主题_学习Windows 7:桌面主题和背景
  4. MTK平台TP驱动详解
  5. 马未都说收藏:陶瓷篇(2)三国两晋南北朝唐代时期的瓷器
  6. 计算机应用类,计算机应用领域分为几大类
  7. 国内外有名的计算机视觉团队汇总
  8. 阴阳日历转换 公历日期转农历 八字排日柱算法
  9. 计算机病毒片头制作,怎么用格式工厂做gif_格式工厂怎么制作片头_格式工厂能做什么...
  10. 成功解决FAT32 No GRLDR问题