servlet 相关内容 续一

本文详细介绍了Servlet的生命周期,包括加载和实例化、初始化、请求处理和服务终止四个阶段,并讲解了Servlet上下文及其接口方法。

Servlet 相关内容  续一

 

Serlvet生命周期:

 

Servlet运行在Servlet容器中,其生命周期由容器管理。Servlet的生命周期通过

javax.servlet.Servlet接口中的init()、service()和destroy()方法来表示。

 

包含了四个阶段:

 

1、加载和实例化
   Servlet容器负责加载和实例化Servlet。当Servlet容器启动时,或者在容器检测到

需要这个Servlet来响应到一个请求时,创建Servlet实例。当Servlet容器启动后,它

必须要知道所需的Servlet类在什么位置,Servlet容器可以从本地文件系统、远程文件

系统或者其他的网络服务中通过类加载器加载Servlet类,成功加载后,容器创建

Servlet的实例。因为容器是通过Java的反射API来创建Servlet实例,调用的是Servlet

的默认构造函数,也就是不带参数的构造函数,所以我们在编写Servlet类的时候,不

应该提供带参数的构造函数。

 

2、初始化

   在Servlet实例化之后,容器必须调用Servlet的init()方法初始化这个对象。对于

一个Servlet实例,init()方法只能调用一次。在初始化期间,Servlet实例可以使用容

器为它准备的ServletConfig对象从Web应用程序的配置信息(web.xml)中获取初始化参

数信息。如果初始化失败(数据库连接失败、没有找到初始化参数)将抛出异常。

 

3、请求处理   
   Servlet容器调用Servlet的service()方法对请求进行处理。要注意的是,在

service()方法调用之前,init()方法必须成功执行。

 

4、服务终止

   当容器检测到一个Servlet实例应该从服务中被移出的时候,容器就会调用实例的

destroy()方法,以便让该实例可以释放它所使用的资源,保存数据到持久设备中。如

果再次需要这个Servlet请求,Servlet容器会创建一个新的Servlet实例。


注:如果需要让Servlet容器在启动时自动加载servlet,可以在web.xml文件中配置

<load-on-startup>元素。


Servlet上下文:

运行在Java虚拟机中的每一个Web应用程序都有一个与之相关的Servlet上下文。Java

Servlet API 提供了一个ServletConext接口用来表示上下文。在这个接口中定义了一

组方法,Servlet可以使用这些方法与它的Servlet容器进行通信。

ServletContext对象是Web服务器中的一个已知路径的根。例如:一个Web程序:

TServlt,Servlet上下文被定位于http://localhost:8080/TServlet。以/TServlet请

求路径(称为上下文路径)开始的所有请求被发送到与此ServletContext关联的Web应

用程序。

 

 

ServletContext接口:

 

 

一个ServletContext对象表示了一个Web应用程序的上下文。Servlet容器在Servlet初

始化期间,向其传递ServletContext对象,也可以通过ServletContext对象的

getServletContext()方法来得到ServletContext对象。也可以通过GenericServlet类

的getServletContext()方法得到ServletContext对象,不过GenericServlet类的

getServletContext()也是调用ServletConfig对象的getServletContext方法来得到这

个对象的。

 

 

ServletContext接口定义了下面的这些方法,Servlet容器提供了这个接口的实现。

 

·public java.lang.Object getAttribute(java.lang.String.name)

 

·public java.util.Enumeration getAttributeNames()

 

·public void removeAttribute(java.lang.String.name)

 

·public void setAttribute(java.lang.String.name,java.lang.Object object)

 

用于读取、移出和设置共享属性,任何一个Servlet都可以设置某个属性,而同一个Web

应用程序的另一个Servlet可以读取这个属性,不管这些Servlet是否为同一个客户进行

服务。

 

·public ServletContext getContext(java.lang.String uripath)

 

该方法返回服务器上与指定的URL相对应的ServletContext对象。给出的uripath参数必

须以斜扛(/)开始,被解释为相对于服务器文档根的路径。处于安全方法的考虑,如果

调用该方法访问的一个受限制的ServletContext对象,那么该方法将返回null。

 

·public java.lang.String getInitParameter(java.lang.String name)

 

·public java.util.Enumeration getInitParameterNames()

 

可以为Servlet上下文定义初始化参数,这些参数被整个Web应用程序所使用。可以部署

描述符(web.xml)中使用<context-param>元素定义上下文的初始化参数,上面两个方法

用于方法这些参数。

 

·public int getMajorVersion()

 

·public int getMinorVersion()

 

上面两种方法用于返回Servlet容器支持的Java Servlet API的主版本和此版本号。

 

·public java.lang.String getMimeType(java.lang.String file)

 

 该方法返回指定文件的MIME类型,如果未知,返回null。

 

·public RequestDispatcher getRequestDispatcher(java.lang.String path)

 

 该方法返回一个RequestDispatcher对象,作为给定路径上的资源的封装。可以使用

RequestDispatcher对象将一个请求转发(forward)给其他资源进行处理,或者在响应

中包含资源。要注意的是,传入的参数path必须以斜扛(/)开始,被解释为相对于当

前上下文根(context root)的路径。

 

·public RequestDispatcher getNameDispatcher(java.lang.String name)

 

 该方法与getRequestDispatcher()方法类似。不同之处在于,该方法接受一个在部署

描述符中以<servlet-name>元素给出的Servlet(jsp)的名字作为参数。

 

·public java.lang.String getRealPath(java.lang.String path)

 

 在一个Web应用程序中,资源用相对于上下文路径的路径来引用,这个方法就可以返

回资源在服务器文件系统上的真实路径(文件的绝对路径)。返回的真实路径的格式应

该适合于运行这个Servlet容器的计算机和操作系统。

 

·public java.net.URL getResource(java.lang.String path)throws

java.net.MalformedURLException

该方法返回被映射到指定路径上的资源的URL。

 

·public java.io.InputStream getResourceAsStream(java.lang.String path)

 

 与getResource方法类似,不同之处在于,该方法返回资源的输入流对象。另外,使用

getResourceAsStream方法,元信息(如内容长度和内容类型)将丢失,而使用

getResource()方法,元信息是可用的.

 

·public java.util.Set getResourcePaths(java.lang.String path)

该方法返回资源的路径列表,参数path必须以斜扛开始,指定用于匹配资源的部分路径

 

·public java.lang.String getServerInfo()

该方法返回运行Servlet的容器的名称和版本。

 

·public java.lang.String getServletContextName()

该方法返回在部署描述符中是<display-name>元素指定的对应于当前ServletContext

的web应用程序的名称。

 

·public void log(java.lang.String msg)

 

·public void log(java.lang.String message,java.lang.Throwable throwable)

ServletContext接口提供了上面两个记录日志的方法,第一个方法用于记录一般的日

志,第二个方法用于记录指定异常的栈跟踪信息。

 

 

 

 

实例: 页面访问统计。

 

servlet中的代码:

public void doGet(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException
	{
		ServletContext context = this.getServletContext();
		Integer count = (Integer) context.getAttribute("counter");
		if (count == null)
		{
			count = new Integer(1);
		}
		else
		{
			count = new Integer(count.intValue()+1);
		}
		resp.setContentType("text/html;charset=gb2312");
		PrintWriter out = resp.getWriter();
		
		out.println("<html><head><title>");
		out.println("counter");
		out.println("</title></head><body>");
		String st = "页面访问量为:"+count;
		out.println(st);
		out.println("</body></html>");
		context.setAttribute("counter", count);
		out.close();
	}

 

在web.xml文件中配置即可。

代码下载地址: https://pan.quark.cn/s/b4a8e0160cfc 齿轮与轴系零件在机械设备中扮演着至关重要的角色,它们负责实现动力传输、调整运动形态以及承受工作载荷等核心功能。 在机械工程的设计实践中,齿轮和轴系的设计是项关键的技术任务,其内容涵盖了材料选用、构造规划、承载能力分析等多个技术层面。 下面将系统性地介绍《齿轮及轴系零件结构设计指导书》中的核心知识点。 、齿轮设计1. 齿轮种类:依据齿廓轮廓的不同,齿轮可划分为直齿齿轮、斜齿轮以及人字齿轮等类别,各类齿轮均具有特定的性能特点与适用工况,能够满足多样化的工作环境与载荷需求。 2. 齿轮规格参数:模数大小、压力角数值、齿数数量、分度圆尺寸等是齿轮设计的基础数据,这些参数直接决定了齿轮的物理尺寸与运行性能。 3. 齿轮材质选用:齿轮材料的确定需综合评估其耐磨损性能、硬度水平以及韧性表现,常用的材料包括铸铁、钢材、铝合金等。 4. 齿轮强度验证:需进行齿面接触应力分析与齿根弯曲应力分析,以确保齿轮在实际运行过程中不会出现过度磨损或结构破坏。 5. 齿轮加工工艺:涉及切削加工、滚齿加工、剃齿加工、淬火处理等工艺流程,工艺方案的选择将直接影响齿轮的加工精度与使用寿命。 二、轴设计1. 轴的分类方式:依据轴在机械装置中的功能定位与受力特点,可将轴划分为心轴、转轴以及传动轴等类型。 2. 轴的材料选择:通常采用钢材作为轴的材料,例如碳素结构钢或合金结构钢,特殊需求时可选用不锈钢材料或轻质合金材料。 3. 轴的构造规划:需详细考虑轴的轴向长度、截面直径、键槽布置、轴承安装位置等要素,以满足轴的强度要求、刚度要求以及稳定性要求。 4. 轴的强度验证:需进行轴的扭转强度分析与弯曲强度分析,以防止轴在运行过程中发生塑性变形...
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值