IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> Java第二阶段第3周 -> 正文阅读

[Java知识库]Java第二阶段第3周

1.使用Tomcat服务器的好处

tomcat是轻量级的web应用服务器, 他的好处主要有:

(1)处理servlet的映射路径,解析Servlet

(2)处理Servlet的生命周期

(3)Tomcat服务器是开源的,底层是一种针对ip监听的TCP,有"数据共享"功能

注意:Tomcat是web容器,内置了三大组件:<servlet: (重点)? filter:过滤器 (重点)? Listener:监听器>

2.Servlet

????????Servlet (Servler Applet),是使用 Java 语言编写的运行在服务器端的程序,用于处理服务器端应

用程序,具有独立于平台和协议的特性,主要功能在于交互式地浏览和生成数据,生成动态Web内

容.通常来说,Servlet 是指所有实现了 Servlet 接口的类,Servlet 主要用于处理客户端传来的 HTTP

请求,并返回一个响应,它能够处理的请求有 doGet () 和 doPost () 等,Servlet 由 Servlet 容器提

供,Servlet 容器是指提供了 Servlet 功能的服务器(如Tomcat).

Servlet本质: ?必须运行在web容器上(tomcat)

? ? ? ? <1>狭义上的Servlet就是接口---里面规定Servlet的生命周期

????????<2>广义上的servlet就是类,这个类(具体类)最终要实现接口Servlet

2.1使用步骤

1.导包? <servlet-api.jar(tomcat里面内置的) ---tomcat解压目录的lib中>

2.编写servlet程序

自定义一个类,继承自HttpServlet,重写 doGet()/doPost()

3.配置Servlet? <Web项目下的WEB-INF ,网站的配置文件 web.xml>

 //基本配置
<servlet>
    <servlet-name>MyServlet</servlet-name>   //serlvet的名称
    <servlet-class>包名.MyServlet</servlet-class>   //servlet的全限定名称
</servlet>

  //映射配置
 <servlet-mapping>
    <servlet-name>MyServlet</servlet-name> //serlvet的名称
     <url-pattern>/myServlet</url-pattern>  //映射路径
 </servlet-mapping>  

2.2servlet执行原理

1.解析当前项目下WEB-INF的配置文本web.xml

2.通过映射信息的名称获取他的配置信息名称

3.通过反射获取servlet字节码文件对象

4.创建当前类实例

5.调用方法

注意:servlet为单例.

2.3servlet生命周期

web容器--->tomcat服务器完了对象的创建,访问servlet的时候创建,就创建一次,所以是单例的.

1.init()方法:? 初始化方法只执行一次

2.service方法:? 业务方法的入口,由于不断的发送get/Post请求,需要调用service方法多次

3.destroy()方法:? servlet的销毁方法,servlet正常关闭时执行此方法

2.4servlet配置对象ServletConfig接口

Servlet的对象: ServletConfig代表每一个Servlet的配置对象,可以获取当前Servlet基本配置信息和

当前这个servlet里面配置的初始化参数等.

1.获取ServletConfig对象

public ServletConfig getServletConfig();? ?<this.getServletConfig()>

2.使用ServletConfig对象获取Servlet基本配置信息

(1)获取servlet配置名称:??config.getServletName();

(2)获取初始化参数<init-param>

<1>public String getInitParameter(String name):??一次只能获取一个初始化参数;通过初始化的参数

名称获取它的参数值

<2>public Enumeration<String> getInitParameterNames();??将所有的servlet的初始化参数名称都

可以获取

2.5Servlet全局对象ServletContext接口

注意:每个工程下只有一个全局对象

1.获取上下文路径

每一个web项目---web application都有自己的上下文(以/字符开头但不以/结尾);?web项目下书写路

径的时候,将上下文路径带上,永远不会出现找不到页面404错误.

方法1:

<1>获取ServletContext对象

this.getServletContext();

<2>获取?Web 应用程序的上下文路径

public String getContextPath()

方法2:

发送请求到服务器的时候,所有的请求参数都封装在了HttpServletRequest

利用HttpServletRequest对象的方法:? public String getContextPath()

request.getContextPath();

2.可以获取全局参数<context-param>

<1>获取ServletContext对象

this.getServletContext();

<2>获取全局参数

public String getInitParameter(String name):通过全局参数的名称获取参数值

?public java.util.Enumeration<E> getInitParameterNames():获取所有的全局参数名称

3.请求转发?(后台跳转前台页面 html/jsp....)

请求转发是一种在服务器内部的资源跳转方式

(1)使用步骤

<1>获取全局对象 ServletContext

<2>通过全局对象获取请求转发器对象

public RequestDispatcher getRequestDispatcher(String path)

<3>通过RequestDispatcher对象进行转发

public void forward(ServletRequest request, ServletResponse response):

简化格式:

request.getRequestDispatcher("/login.html").forward(request,response);

(2)请求转发的特点

<1>地址栏没有变化,始终访问后台地址

<2>整个请求转发的过程中,两次请求request是相等的

<3>WEB-INF下的资源文件直接访问不了,但是请求转发可以访问

<4>请求转发只能访问当前项目下资源文件,不能跨工程访问外部资源

4.作为 "域对象"共享数据,在不同的servlet之间进行数据共享

域对象:一个有作用范围的对象,可以在范围内共享数据

(1)四个域对象的范围

PageContext类? ? ?pagecontext对象? ??仅仅在某一个jsp页面中有效

HttpServletRequest接口? ? ? ??request对象? ??在一次请求中有效

HttpSession接口? ? ??session对象? ? ??在一次会话中有效

ServletContext接口? ? ?全局对象context对象/application? ? 整个web application中有效(整个工程下)

(2)通用方法

<1>给当前servletContext域对象中设置参数,将任何对象绑定在指定的属性上

public void setAttribute(String name, Object object)

<2>通过绑定的属性获取内容

public Object getAttribute(String name)

<3>将指定属性中绑定内容从域对象中删除

public void removeAttribute(String name)

(2)使用步骤

<1>访问当前Servlet,获取全局对象

<2>存储数据

public void setAttribute(String name, Object object)

<3>从当前全局对象中(域对象),通过绑定的属性获取内容

public Object getAttribute(String name)

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2021-11-16 18:41:57  更:2021-11-16 18:43:28 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 1:34:01-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码