Servlet是一个动态web资源
servlet是干什么的?
处理请求,生成响应我们如何创建一个servlet类
1>实现servlet接口即可
2>继承javax.servlet.GenericServlet
3>继承javax.servlet.http.HttpSeverlet写好servlet类之后需要给它配置路径, 在web.xml中进行配置
Servlet的生命周期方法
生命周期指的是: 必须要经历的过程
对于servlet来讲, 有3个生命周期方法
1> 出生 ==> init方法 在构造方法之后调用
2> 使命 ==> service方法, 当请求发来时,处理请求时
3> 销毁 ==> destroy方法, 当服务器关闭时 会销毁servlet 在销毁之前调用该方法来释放内存Servlet中的其他方法
getServletInfo ==> 获得servlet的信息(版本,作者,版权等) 总之没有大用
getServletConfig ==> 返回servletConfig对象ServletConfig对象是什么?
封装了Servlet在web.xml中的配置
方法:
1>getServletName ==> 获得配置文件中 servlet-name 元素的内容
2>getInitParameter ==> 根据 init-param 中的 param-name 获得 param-value
init-param
param-name name param-name
param-value tom param-value
init-param
3>getInitParameterNamespace 返回所有 param-name
4>getServletContext关于servlet中优化的问题(其他实现servlet的方式)
1>GenericServlet:
帮助我们妥善地保管ServletConfig对象
实现了ServletConfig的接口 ==> 为了去方便调用
注意: 不要去重写本身的init方法 需要自己先去创建一个空参的init方法, 然后再去子类中重写
2>HTTPServlet:
因为我们web项目都是基于HTTP协议,因此可以进行强制转换的优化, HTTPServletRequest HTTPServletResponse
重写doGet 和 doPost 方法 其余五种方式均不常用了Servlet中的其他细节
1>线程安全问题: singlethreadmodel 并不能够解决根本问题
在Servlet运行期间只有一个Servlet实例存在,可能会同时处理多个请求.那么我们在Servlet中声明成员变量来存储用户数据是有线程安全问题的.
使用局部变量保存用户数据来解决这个问题
2>关于Servlet随着项目的启动而创建
使用 load - on - startup 配置来实现 数值越小 优先级越高