Servlet1(2)

简介: Servlet1(2)

h) Servlet 类的继承体系


2. ServletConfig 类

ServletConfig 类从类名上来看,就知道是Servlet程序的配置信息类。

Servlet程序和ServletConfig 对象都是有Tomcat负责创建,我们负责使用。

Servlet程序默认是第一次访问的时候创建,ServletConfig 是每一个Servlet程序创建时,就创建一个对应的ServletConfig对象。

a) ServletConfig类的三大作用

1、可以获取Servlet程序的别名servlet-name 的值

2、获取初治化参数init-param

3、获取 ServletContext对象

web.xml中的配置

<!-- servlet标签给Tomcat配置Servlet程序   -->
    <servlet>
        <!-- servlet-name 标签 Servlet程序起一个别名(一般是类名)       -->
        <servlet-name>HelloServlet</servlet-name>
        <!-- servlet-class 标签 Servlet程序的全类名       -->
        <servlet-class>com.servlet.HelloServlet</servlet-class>
        <!--init-param是初始化参数        -->
        <init-param>
            <!--是参数名-->
            <param-name>username</param-name>
            <!--是参数值-->
            <param-value>root</param-value>
        </init-param>
        <init-param>
            <param-name>url</param-name>
            <param-value>jdbc:mysql://localhost:3306/test</param-value>
        </init-param>
    </servlet>

HelloServlet

 @Override
    public void init(ServletConfig servletConfig) throws ServletException {
        System.out.println("2 执行init 初始化");
//        1、可以获取Servlet程序的别名servlet-name 的值
        System.out.println("HelloServlet程序的别名是:"+servletConfig.getServletName());
//        2、获取初治化参数 init-param
        System.out.println("初始化参数username的值是:"+servletConfig.getInitParameter("username"));
        System.out.println("初始化参数url的值是:"+servletConfig.getInitParameter("url"));
//        3、获取 ServletContext对象
        System.out.println(servletConfig.getServletContext());
    }

输出结果


注意点:


否则



3. ServletContext 类

a)什么是ServletContext?

1、ServletContext是一个接口,它表示Servlet上下文对象

2、一个web工程,只有一个ServletContext对象实例。

3、ServetContext对象是一个域对象

4、ServletContext是在web工程部署启动的时候创建。在web工程停止的时候销毁。


什么是域对象?

域对象,是可以像Map一样存取数据的对象,叫域对象。

这里的域指的是存取数据的操作范围,整个web工程。


存数据
取数据 删除数据
Map put() get() remove()
域对象 setAttribute() getAtribute() removeAttribute();

b)ServletContext类的四个作用

1、获取web.xml中配置的上下文参数context-param

2、获取当前的工程路径,格式:工程路径

3、获取工程部署后在服务器硬盘上的绝对路径

4、像Map一样存取数据
ServletContext 演示代码

ContextServlet

package com.servlet;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.IOException;
public class ContextServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//        1、获取web.xml中配置的上下文参数context-param
        ServletContext context = getServletConfig().getServletContext();
        String username = context.getInitParameter("username");
        System.out.println("context-param参数username的值是:"+username);
        System.out.println("context-param参数username的值是:"+context.getInitParameter("password"));
        System.out.println("init-param参数url的值是:"+context.getInitParameter("url"));//null
//        2、获取当前的工程路径,格式:工程路径
        System.out.println("当前工程路径:"+context.getContextPath());
//        3、获取工程部署后在服务器硬盘上的绝对路径
        /**
         *   / 斜杠被服务器解析地址为:http://ip:prot/工程名/     映射到IDEA代码的web目录
         *
         */
        System.out.println("工程部署的路径是:"+context.getRealPath("/"));
        System.out.println("工程下css目录的绝对路径是:"+context.getRealPath("/css"));
        System.out.println("工程下imgs目录1.jpg的绝对路径是:"+context.getRealPath("/imgs/1.jpg"));
    }
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    }
}

web.xml中的配置

 <!--    Context-Param是上下文参数(它属于整个web工程)-->
    <context-param>
        <param-name>username</param-name>
        <param-value>context</param-value>
    </context-param>
    <context-param>
        <param-name>password</param-name>
        <param-value>root</param-value>
    </context-param>
   <servlet-mapping>
        <servlet-name>ContextServlet</servlet-name>
        <url-pattern>/contextServlet</url-pattern>
    </servlet-mapping>


ContextServlet1

package com.servlet;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.IOException;
public class ContextServlet1 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //获取ServletContext对象
        ServletContext context = getServletContext();
        System.out.println(context);
        System.out.println("保存之前:Context1 中获取域数据key1的值是:"+context.getAttribute("key1"));
        context.setAttribute("key1","value1");
        System.out.println("Context1 中获取域数据key1的值是:"+context.getAttribute("key1"));
    }
}

ContextServlet2

package com.servlet;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.IOException;
public class ContextServlet2 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        ServletContext context=getServletContext();
        System.out.println(context);
        System.out.println("Context2 中获取域数据key1的值是:"+context.getAttribute("key1"));
    }
}





4. Http 协议

a) 什么是HTTP协议

什么是协议?

协议是指双方,或多方,相互约定好,大家都需要遵守的规则,叫协议。

所谓HTTP协议,就是指,客户端和服务器之间通信时,发送的数据,需要遵守的规则,叫HTTP协议。

HTTP协议中的数据又叫报文。

b)请求的HTTP协议格式

客户端给服务器发送数据叫请求。

服务器给客户端回传数据叫响应。

请求又分为GET请求,和POST请求两种

i.GET请求

1、请求行

(1)请求的方式 GET

(2)请求的资源路径[+?+请求参数]

(3)请求的协议的版本号 HTTP/1.1

2、请求头

key : value 组成 不同的键值对,表示不同的含义。



ii.POST请求

1、请求行

(1)请求的方式 POST

(2)请求的资源路径[+?+请求参数]

(3)请求的协议的版本号 HTTP/1.1

2、请求头

1)key:value 不同的请求头,有不同的含义

空行

3、请求体 ===>>> 就是发送给服务器的数据


iii.常用请求头的说明

Accept:表示客户端可以接收的数据类型

Accpet-Languege:表示客户端可以接收的语言类型 User-Agent:表示客户端浏览器的信息

Host:表示请求时的服务器ip和端口号

iv.哪些是GET请求,哪些是POST请求

GET请求有哪些:
1、form标签method=get

2、a标签

3、link标签引入css

4、Script标签引入js文件

5、img标签引入图片

6、ifame引入html页面

7、在浏览器地址栏中输入地址后敲回车

POST请求有哪些:

8、form标签method=post

c)响应的HTTP协议格式

1、响应行

(1)响应的协议和版本号

(2)响应状态码

(3)响应状态描述符

2、响应头

(1) key :value 不同的响应头,有其不同含义
空行

3、响应体 —>>> 就是回传给客户端的数据



d)常用的响应码说明

200 表示请求成功

302 表示请求重定向

404 表示请求服务器已经收到了,但是你要的数据不存在(请求地址错误)

500 表示服务器已经收到请求,但是服务器内部错误(代码错误)

e)MIME类型说明

MIME是HTTP协议中数据类型。 I
MIME的英文全称是"Multipurpose Internet MailExtensions"”多功能Internet邮件扩充服务。MIME类型的格式是“大类型/小 类型”,并与某一种文件的扩展名相对应。

常见的MIME类型:

浏览器如何查看HTTP协议




相关文章
|
XML Java 应用服务中间件
Servlet详解(上)
Servlet详解
86 0
|
IDE Java 应用服务中间件
Servlet3.0
Servlet3.0
|
6月前
|
Oracle Java 关系型数据库
浅谈Servlet
浅谈Servlet
30 0
|
小程序 Java 应用服务中间件
Servlet这些你可能还不知道
Servlet这些你可能还不知道
63 0
|
Java 应用服务中间件
Servlet2(1)
Servlet2(1)
67 0
|
XML JavaScript 前端开发
servlet详解
servlet详解
|
应用服务中间件
Servlet的详细使用(上)
Servlet的详细使用(上)
95 0
|
Java 应用服务中间件
Servlet详解
Servlet(Server Applet)是Java Servlet的简称,称为小服务程序或服务连接器,用Java编写的服务器端程序,具有独立于平台和协议的特性,主要功能在于交互式地浏览和生成数据,生成动态Web内容。 狭义的Servlet是指Java语言实现的一个接口,广义的Servlet是指任何实现了这个Servlet接口的类,一般情况下,人们将Servlet理解为后者。Servlet运行于支持Java的应用服务器中。从原理上讲,Servlet可以响应任何类型的请求,但绝大多数情况下Servlet只用来扩展基于HTTP协议的Web服务器。
155 1
Servlet(三)
关于Servlet的相关介绍
142 0
Servlet(三)
|
存储 应用服务中间件
Servlet(二)
关于Servlet的相关介绍
191 0
Servlet(二)