Java-Http和Servlet

本文详细介绍了HTTP协议的工作原理,包括请求与响应的过程,并深入探讨了Servlet的基本概念、生命周期及其实现方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1:http协议:

<1>超文本传输协议:规定数据的格式

浏览器--->服务器:请求

String  name = config.getInitParameter("username");
    Enumeration<String> names = config.getInitParameterNames();
		while (names.hasMoreElements()) {
			String key = names.nextElement();
			System.out.println(key);
			System.out.println(config.getInitParameter(key));
}

 

 

 

服务器--->浏览器:响应

<2>请求的组成:请求头,请求体,请求行

请求行:请求信息的第一行:

格式:请求方式  访问的资源   协议/版本

例如:GET /day0801/1.html HTTP/1.

请求方式:GET:请求参数放在URL后面,参数有大小,没有请求体

POST:参数没有大小限制,有请求体,请求参数放在请求体中.

常见的请求头:

Accept: text/html,image/bmp --支持数据类型    

text/html text/css text/javascript    大类型/小类型 mime类型

Accept-Charset: ISO-8859-1 --字符集

Accept-Encoding: gzip --支持压缩

Accept-Language:zh-cn --语言环境

Host: www.click369.cn:80 --访问主机

If-Modified-Since: Tue, 11 Jul 2000 18:23:51 GMT   --缓存文件的最后修改时间

Referer: http://www.click369.com/index.jsp  --来自哪个页面、防盗链

User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)

Cookie

Connection:Keep-Alive    --链接状态

2.Servlet:运行在服务器端的小程序,定义了一个能被浏览器访问的规则,是一个接口.

作用:接受请求,处理请求,响应请求.

实现Servlet接口的三种方法:

1) 自定义一个类直接implements  Servlet,并且实现里面的5个方法.

<1>:配置Servlet:web.xml文件中:

<!-- 配置Servlet,为了配置Servlet的访问路径 -->

 

<servlet>
<servlet-name>demo1</servlet-name>
<servlet-class>cn.itcast.servlet.ServletDemo1</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>demo1</servlet-name>

 

<!-- 设置访问路径,以/开头  -->

<url-pattern>/demo</url-pattern>

</servlet-mapping>

 

<2>:实现5个方法,并且发布项目,客户端访问,服务器端接收.

<3>:Servlet的生命周期:被创建(init())----->对外提供服务(service())---->关闭服务器(destroy())

init():做一些初始化的事.第一次被访问时,调用该方法,只调用一次.servlet是单例的,可能存在线程安全问题,尽量不要定义变量.,可以配置servlet的创建时机.

<!-- 修改servlet的创建时机:

负整数:默认值 -1,在第一次被访问时创建

非负整数:在服务器启动时创建

数字越小,优先级越高

-->

<load-on-startup>0</load-on-startup>

Service():提供服务,每一次访问都会调用该方法.

Destroy():服务器正常关闭时,调用该方法.

<4>:ServletConfig:配置对象.ServletConfig是一个接口,对象由服务器创建,当服务器调用init()方法时,作为参数传递给servlet.

作用一:获取初始化参数://获取全局域对象

String  name = config.getInitParameter("username");
    Enumeration<String> names = config.getInitParameterNames();
		while (names.hasMoreElements()) {
			String key = names.nextElement();
			System.out.println(key);
			System.out.println(config.getInitParameter(key));
}

作用二:获取全局域对象:因为ServletContext对象由服务器创建,若要获取其对象,要通过ServletConfig获取.

ServletContext   context  = config.getServletContext();

作用三:获取xml文件的配置的servlet名字.

String n = config.getServletName();

<5>.Servletcontext对象:

i:特点:由服务器创建;单例的.

ii:作用一:域对象:存储用户共享的数据

context.setAttribute("username", "lisi");

  Object a = context.getAttribute("username");

  context.removeAttribute("username");

作用二:获取文件mime类型:getMimeType(文件名称):

作用三:获取文件运行的真实路径:

真实路径:指服务器路径

getRealPath():

1.webRoot下:项目根目录下

2.WEB-INF下: 项目根目录下/WEB-INF

3.src下: 项目根目录下/WEB-INF/classes

注意:如果getRealPath("/"),获取的路径是项目的根目录

//根目录
ServletContext context = this.getServletContext();
String rootpath = context.getRealPath("/");
//System.out.println(rootpath);
//1.webRoot
String b = context.getRealPath("/b.txt");
System.out.println(b);
//2.WEB-INF
String c = context.getRealPath("/WEB-INF/c.txt");
System.out.println(c);
//3.src
String a = context.getRealPath("/WEB-INF/classes/a.txt");
System.out.println(a);

ServletContext只能用于web环境。如果是非web环境,则使用ClassLoader来获取真实路,比如我web项目里有一个普通的java工具类 我想获取文件的真实路径,那我就不用ServletContext,具体的步骤:

//1.获取该类对应的类加载器对象

ClassLoader loader = this.getClass().getClassLoader();

//2.获取文件运行的真实路径

URL url = loader.getResource("a.txt");

String path = url.getPath();

//注意类加载器来获取路径也有局限性 只能获取src目录下的文件

2)适配器模式:自定义一个类继承自GenericServlet类,(其中GenericServlet实现了Servlet的5个方法),只需要在自定义类中重写GenericServlet的service()方法.

1).适配器

2).对ServletConfig进行优化。提升config对象的作用域

3).实现了ServletConfig接口,简化对config对象的使用方式

3)自定义一个类继承HttpServlet类(其中HttpServlet继承自GenericServlet类)

   重写doGet()和doPost()...方法      注意去掉super.doGet(); 和 super.doPost();

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值