JAVAWed第三章Servlet

本文详细介绍了Java Servlet,强调了其相对于CGI的性能优势,并探讨了Servlet在Web服务器中的运行方式。此外,重点讲解了ServletContext接口,包括获取初始化参数、实现servlet间数据共享以及访问Web项目资源文件的方法。

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

1.Servlet简述:
Java Servlet 是运行在 Web 服务器或应用服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层。
使用 Servlet,您可以收集来自网页表单的用户输入,呈现来自数据库或者其他源的记录,还可以动态创建网页。
Java Servlet 通常情况下与使用 CGI(Common Gateway Interface,公共网关接口)实现的程序可以达到异曲同工的效果。但是相比于 CGI,Servlet 有以下几点优势:
性能明显更好。
Servlet 在 Web 服务器的地址空间内执行。这样它就没有必要再创建一个单独的进程来处理每个客户端请求。
Servlet 是独立于平台的,因为它们是用 Java 编写的。
服务器上的 Java 安全管理器执行了一系列限制,以保护服务器计算机上的资源。因此,Servlet 是可信的。
Java 类库的全部功能对 Servlet 来说都是可用的。它可以通过 sockets 和 RMI 机制与 applets、数据库或其他软件进行交互。
2.Servlet 架构
在这里插入图片描述
3.ServletContext接口
ServletContext对象是在web服务器启动时就创建了,是web服务器创建的servletContext对象,
每一个web项目只有一个ServletContext对象。
ServletContext对象的作用:获取web应用程序的初始化参数,在web应用程序能共享数据,获取web项目下的资源文件。
得到ServletContext对象:
1.获取web应用程序的初始化参数(web应用程序就是web项目)
>>>> 1. 获取全局初始化参数的值:getInitParameter(String name)
>>>> 2. 获取全局初始化参数的名称:getInitParameterNames()
比如:


AAA
aaa


BBB
bbb

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.properties
	String realPath = context.getRealPath(path);
	System.out.println(realPath);
	InputStream in = new FileInputStream(realPath);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值