Servlet 简介(1)

什么是Servlet?

   Servlet 是一个单实例多线程的普通的 java 类——校验多线程的安全问题的标准
    	Servlet 的两个重要对象
        	- servletConfig:servlet 的配置对象
        	- servletContext:全局管理者对象(一个web application 只有一个ServletContext)
            	1)获取上下文路径
          		2)可以请求转发
            	3)可以作为域对象使用:request  servletContext
            	4)获取某个文件的真是路径
            	5)如果不借助于 servletContext 对象,要获取 classes 目录文件路径只能使用类加载器 classLoader
1、Server + let

(1)Servlet 就是运行在服务器端的小程序。
          Servlet实际上就是一个接口。
                 - 狭义上的Servlet,指的就是Servlet接口
                 - 广义上的我们认为凡是实现Servlet接口的类,我们都称他是一个Servlet
(2)Servlet 的作用:
          a.接收用户发送的请求
          b.调用其他的java程序来处理请求
          c.根据处理结果,返回给用户一个页面

(3)Servlet的HelloWorld
          a.创建一个类并实现Servlet接口
          b.在web.xml文件中对Servlet进行配置

<servlet>
	<servlet-name>别名</servlet-name>
	<servlet-class>全类名</servlet-class>
</servlet>
<servlet-mapping>
	<servlet-name>别名</servlet-name>
	<url-pattern>需要servlet处理的请求地址</url-pattern>
</servlet-mapping>

(3)Servlet的三个名字:

            <servlet-name>
                //Servlet的别名,程序员通过别名对Servlet进行配置
            <servlet-class>
                //Servlet的全类名,服务器通过全类名来创建Servlet的实例
            <url-pattern>
                //Servlet映射的请求地址,用户通过该地址访问Servlet    
2、Servlet 的生命周期(重点)
    Servlet 的创建过程----Tomcat 服务器
    	1)Servlet 初始化:init()   init(SetvletConfig config)
    	2)Servlet 的服务方法:业务方法
    	3)Servlet 销毁过程

(1)Servlet 的生命周期,指 Servlet 的对象从被创建到被销毁的过程。<?b>

(2)Servlet 的生命周期方法:

a.构造器:
       - Servlet第一次处理请求时,会调用构造器,来创建Servlet实例。
       - 只会调用一次,Servlet是单例模式,他是以多线程的方式调用service()方法.
       - Servlet不是线程安全,所以尽量不要再service()方法中操作全局变量。
	
b.init()方法:
       - 构造器调用之后马上被调用,用来初始化Servlet,只会调用一次。
c.service()方法:
       - Servlet每次处理请求时都会调用service()方法,用来处理请求,会调用多次。
d.destroy()方法:
       - Servlet对象销毁前(WEB项目卸载时)调用,用来做一些收尾工作,释放资源。
3、接口
①ServletConfig

          (1)定义:当前Servlet的配置信息,每一个Servlet都有其唯一对应的ServletConfig。

<servlet>
	<servlet-name>AServlet</servlet-name>
	<servlet-class>com.atguigu.servlet.AServlet</servlet-class>
	<init-param>
		<param-name>user</param-name>
		<param-value>root</param-value>
	</init-param>
	<init-param>
		<param-name>password</param-name>
		<param-value>123123</param-value>
	</init-param>
</servlet>

(2)获取:由Tomcat服务器创建,最终作为参数传递到init()方法中,我们可以在init()方法直接使用。
          当我们通过继承HttpServlet创建Servlet时,由于父类已经实现ServletConfig接口,
          所以我们可以在Servlet中直接调用ServletConfig的方法。

(3)功能:
          【1】 获取Servlet的别名
          【2】 获取当前Servlet的初始化参数。

<init-param>
	<param-name>user</param-name>
	<param-value>root</param-value>
</init-param>
<init-param>
	<param-name>password</param-name>
	<param-value>123123</param-value>
</init-param>

          【3】 获取当前WEB应用的ServletContext对象。

②ServletContext

(1)定义:当前的WEB应用,一个WEB应用对应一个唯一的ServletContext对象,
                    ServletContext对象在项目启动时创建,在项目卸载时销毁。

(2)获取:通过ServletConfig的getServletContext()方法获取。

(3)功能:
          【1】 可以获取整个WEB应用的初始化参数

<context-param>
	<param-name>phone</param-name>
	<param-value>1388888888</param-value>
</context-param>

          【2】 可以获取资源的真实路径(物理路径),主要在文件的上传和下载时使用。
          【3】 可以作为一个域对象在不同的web资源之间共享数据。(下回分解)

ServletContext 的其他作用:
1)作为域对象使用
2)请求转发

请求转发和重定向的区别?

1)地址是否发生变化
    前者不会
    后者进一步请求会发生变化
2)是否需要用到域对象
    前者在业务中跳转页面,需要用域对象(request 域)
    后者在跳转页面后,无法从 request 域中获取数据
3)从内存角度的 request 对象
    前者始终只有一个 request 对象(还需要用到业务需求上)
    后者会产生两个 request 对象
转发重定向
请求的次数12
发生的位置服务器内部浏览器
浏览器地址栏不改变改变
浏览器的感知不知道知道
GenericServlet
        - 通用Servlet的父类
        - 相比Servlet接口GenericServlet更加简单一些,但是我们最终实际上使用的HttpServlet
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 、4下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。、可私 6信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 、4下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。、可 6私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 、4下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。、可私 6信博主看论文后选择购买源代码。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值