servlet及编程规范

servlet规范

一 servlet简介

servlet是运行在服务器中的动态资源,能接收用户的请求,发出响应。

二 servlet的执行过程

1.在地址栏输入访问的路径

2.tomcat解析路径找到要访问的APP文件夹,找到web.xml文件

3.根据访问的url查找文件映射 找到配置的sevlet名称

4.根据sevelet名称找到对应的类名

5.运用反射机制 实例化servlet类

6.创建request 和 response 对象

7.调用service方法

三 servlet的生命周期

1.调用init方法初始化servlet, 第一次用户访问servlet时

2.用户每次访问都调用servlet的service方法

3.应用被卸载时才会调用servlet的destory方法

四、编写sevlet的方式

方式一:直接实现javax.sevlet.Servlet接口

方式二:继承javax.servlet.GenericServlet 实现service接口

方式三: 继承javax.servlet.http.HttpServlet抽象类 覆盖(doGet或doPost请求 不要覆盖service方法)

推荐第三种方式:原因是服务器端编程都是基于HTTP协议的

五、Servlet细节

一个sevlet类可以被映射到多个URL位置上

servlet的URL可以使用通配符*

方式一: 以*开头,以某些扩展名结尾

方式二: 以 / 开头 以*结尾 比如 /action/*

如果用户的访问路径在web.xml中有多个匹配的情况下, 按照如下优先级

绝对匹配  > 以斜线开头的带通配符的 > 以*开头的

用户的所有访问都经过sevlet

tomcat\conf\web.xml中有一个路径为/的servlet,他是一个缺省的sevlet

六、在应用启动时启动sevlet初始化

配置启动时就初始化的配置,取值为一个自然整数

<load-on-startup> 2 </load-on-startup>

七、sevlet线程安全

请不要在sevlet中使用实体变量,而应该尽量使用局部变量

八、servletConfig详解

1、对当前servlet进行配置用的,主要用来配置一些参数

2、servletConfig 是由服务器产生的

3、获取servletConfig,getServletConfig 函数;

4、在web.xml中配置sevlet映射时就同时配置一些参数

5、 获取指定参数的值

getServletContext().getInitParameter("encoing")

九、servletContext详解

1、代表整个javaWeb应用,每个应用都会有一个唯一的ServletContext应用

2、 生命周期

在应用被服务器加载时由容器完成创建

只要应用没有关闭,它就一直存在,和应用的生命周期完全一直

3、怎么得到ServletContext的实例

方式一:getServletConfig().getServletContext()

方式二:getServletContext()

十、利用servletContext实现过个servlet的共享,内部有一个Map结构

servletContext.setAttribute( "p", "p1" )

servletContext.getAttribute( "p","p1"  )

servletContext.removeAttribute(String key)

servletContext.getAttributeNames()

十一、域对象的概念:(非常重要)

域是表示范围。servletContext是一个域对象,表示的是应用范围(与应用的生命周期有关)

时间: 2024-10-22 11:33:24

servlet及编程规范的相关文章

华为C语言编程规范

DKBA华为技术有限公司内部技术规范DKBA 2826-2011.5C语言编程规范2011年5月9日发布 2011年5月9日实施华为技术有限公司Huawei Technologies Co., Ltd.版权所有 侵权必究All rights reserved密级:confidentiality levelDKBA 2826-2011.52011-06-02 华为机密,未经许可不得扩散 Huawei Confidential 第2页,共61页Page 2 , Total61修订声明Revision

Windows客户端C/C++编程规范“建议”——函数

1 函数 1.1 代码行数控制在80行及以内 等级:[要求] 说明:每个函数的代码行数控制应该控制在80行以内.如果超过这个限制函数内部逻辑一般可以拆分.如果试图超过这个标准,请列出理由.但理由不包含如下: 无法拆分. 流程内部逻辑复杂,无需拆分,即使拆分了,拆分的函数也不会被其他地方用到.(解释:拆分可以减少代码行数,提炼后的函数可以方便读者快速理解函数逻辑并定位问题.) 1.2 代码列数控制在100字符及以内 等级:[要求] 说明:每行代码不可以超过100字符.如果超过这个字符数,代码的美观

Windows客户端C/C++编程规范“建议”——指针

2 指针 2.1 尽量使用智能指针 等级:[推荐] 说明:正确使用智能指针可以省去指针管理的工作. 2.2 类成员变量指针释放后一定要置空 等级:[必须] 说明:如果类成员变量指针在释放后没有置空,将出现如下问题: a) 无法判断指针是否已经是野指针 b) Dump分析很难发现是野指针函数调用导致崩溃 2.3 正确使用delete和delete[] 等级:[必须] 说明:delete[]用于释放动态分配的数组,而delete用于释放对象.两者不可以混用. 2.4 使用指针前要判空 等级:[必须]

Windows客户端C/C++编程规范“建议”——函数调用

3 函数调用 3.1 谨慎使用递归方法 等级:[推荐] 说明:递归方式控制不当,可能会导致栈空间不够而崩溃.一般的递归都可以使用循环代替. 3.2 不要使用using namespace 等级:[必须] 说明:这是曾经教科书上的一种写法,但是该方法存在严重的缺陷.因为如果多个不同的namespace里定义了相同名字的变量或者函数.将导致无法预知和理解编译器最终使用的是哪个命名空间中的数据. 例子: //file1 namespace Space1{ int g_Private = 0; }; /

Servlet 2.4 规范之第四篇:Servlet上下文

SRV.3.1    ServletContext接口说明 ServletContext接口定义了运行servlet的web应用中和servlet相关的视图信息.容器提供者负责提供ServletContext的一套具体实现.通过ServletContext对象,servlet能记录事件.获得资源引用,以及设置和保存当前context上其他servlet的一些属性信息. ServletContext以web应用的某一路径为根节点,例如,servlet上下文能写成http://www.mycorp.

基于servlet网络编程

1.我们知道了基于http协议的网络编程模型和基于套接字的网路编程模型(相对于我的博客上写的),那么我们将使用更加便捷的servlet网络编程. 基于http协议的网络编程,我的博客上面需要我们自己写客户端,基于套接字的网络编程我的博客上面需要我们自己写客户端和服务器端,现在我们用servlet编程,不需要我们写客户端和服务器端,我们只需要在tomcat容器里写我们的处理程序就行,响应请求由tomcat来完成. 2.如何在tomcat上部署项目.打开tomcat文件,找到webapp文件里面的例

[转载]通达信插件选股(基于通达信插件编程规范的简单分析)

[转载]通达信插件选股(基于通达信插件编程规范的简单分析) 原文地址:通达信插件选股(基于通达信插件编程规范的简单分析)作者:哈尔滨猫猫 首先声明,鄙人是编程人员,不是股民.对选股概念了解甚少.本文仅作编程人员学习借鉴之用.不对选股理论进行探讨和解释. 以前有客户找我做过通达信插件选股的小任务,当时第一次接触面向接口(此类“接口”)编程,也是第一次接触到股票里相关的概念.最近由于接手一个任务,与上次开发相类似,故旧事重提,仔细研究一番.将个人学习研究所得知识与大家分享.在网上搜相关资料,可用的.

最佳11个PHP编程规范

个人原创网址:http://www.phpthinking.com/archives/375 从设计之初,PHP被广泛用于开发基于Web的应用程序. 由于PHP是一种脚本语言,开发的时候必须遵守一些规范. 本文将讨论常用的良好的代码习惯,或者称为代码规范,在PHP领域. 1,错误报告开启 错误报告是在PHP中一个非常有用的功能,应同时在开发阶段启用. 这可以帮助我们确定我们的代码中的问题. 最常用的功能是"E_ALL",这有助于我们发现所有的警告和严重错误. 必须指出的是,我们把我们的

对Google C++编程规范的理解和实践

1. #define保护 所有头文件都应该使用#define 防止头文件被多重包含(multiple  inclusion),命名格式为: <PROJECT>_<PATH>_<FILE>_H_ 为保证唯一性,头文件的命名应基于其所在项目源代码树的全路径.例如,项目foo 中的头文件 foo/src/bar/baz.h按如下方式保护: #ifndef FOO_BAR_BAZ_H_ #define FOO_BAR_BAZ_H_ ... #endif // FOO_BAR_B