Servlet(三):生命周期详解he常见错误

相关文章:
Servlet(一):Web项目的开发流程
Servlet(二):简介
Servlet(三):生命周期详解he常见错误
Servlet(四):request、response、Cookie、Session

Servlet生命周期详解

简介

Servlet生命周期,即阐述Servlet从产生到毁灭的整个过程。
在Servlet产生到消亡的过程中,有三个生命周期函数,初始化方法init( ),处理客户请求的方法service( ),终止方法destroy( )

init方法

在一个Servlet的生命周期中,init方法只会被执行一次,之后无论用户执行多少次请求,都不会在调用该方法。
关于init方法的执行时机,有两种方式可选,一般的是在服务器启动后第一个用户请求改Servlet是调用,你也可以设置该Servlet在服务器启动后自动执行。
init方法负责简单的创建或者加载一些数据,这些数据将用于该Servlet的整个生命周期中。

service方法

当一个客户请求改Servlet时,实际的处理工作全部有service方法来完成,service方法用来处理客户端的请求,并生成格式化数据返回给客户端。
每一次请求服务器都会开启一个新的线程并执行一次service方法,service根据客户端的请求类型,调用doGet、doPost等方法。
service是由web容器来调用的,我们无需对service具体内容做任何处理,service会自动的根据客户端的请求类型去调用doGet、doPost等方法,所以我们只需要做好doGet、doPost方法的实现就可以了。

doGet 方法:

在没有 service 方法的情况下如果是 get 方式的请求所调
用的处理请求的方法

doPost 方法:

在没有service方法的情况下如果是post方式的请求所调
用的处理请求的方法

destroy方法

该方法在整个生命周期中,也是只会被调用一次,在Servlet对象被销毁是调用,在servlet中,我们可以做一些资源的释放等操作,执行destory方法之后的servlet对象,会等待jvm虚拟机的垃圾回收机制择时回收。

public class ServletLife extends HttpServlet {
	//初始化方法,在servlet第一次加载内容的时候被调用
	@Override
	public void init() throws ServletException {
		System.out.println("servlet初始化完成");
	}
	
	//service方法,真正处理请求的方法
	@Override
	protected void service(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		resp.getWriter().write("servlet life");
		System.out.println("servlet life");
	}
	
	@Override
	public void destroy() {
		System.out.println("我被销毁了...");
	}
}

Servlet的常见错误

404错误:资源未找到
原因一:在 请求地址中的servlet的别名书写错误
原因二:虚拟项目名称拼写错误

500错误:内部服务器错误
错误一:
java.lang.ClassNotFoundException: com.bjsxt.servlet.ServletMothod
解决:
在web.xml中校验servlet类的全限定路径是否拼写错误

错误二:
因为service方法体的代码执行错误导致
解决:
根据错误提示对service方法体中的代码进行错误更改。

405错误:请求方式不支持
原因:
请求方式和servlet中的方法不匹配所造成的。
解决:
尽量使用 service 方法进行请求处理,并且不要再 service 方法中调用父类的service 。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值