Servlet的生命周期 AND forward和redirect区别

Servlet生命周期:Servlet程序加载 --> 初始化 --> 服务 -->销毁

init():负责对Servlet程序进行初始化,当服务器执行Servlet程序时,读取web.xml配置文件中的信息,构造指定的Servlet对象,创建ServletConfig对象,同时将创建的ServletConfig对象作为init方法的参数,完成对Servlet对象的初始化。init方法只会执行一次。

service():是Servlet的核心,负责响应用户的请求,当用户请求一个HttpServlet对象,该对象的service()方法就要进行调用,传递给方法一个请求对象ServletRequest和响应对象ServletResponse作为参数,HttpServlet中实现了service()方法,并将请求ServletRequest、ServletResponse 强转为HttpServletRequest和HttpServletResponse。默认的服务功能是调用与HTTP请求的相应的doGet或doPost方法。

destroy():销毁方法只在web工程停止时调用,只执行一次。当Servlet对象退出执行周期时,负责释放资源。

forward和redirect区别

forward:请求转发,requerst 调用 getRequestDispatcher("url网址").forward(req,resp);

redirect:重定向,response.sendRedirect("新地址");

1. 浏览器地址栏的显示

forward 是在服务器内部进行转发,服务器直接访问目标地址的url网址,读取里面的内容,然后把内容转发给浏览器,对于浏览器而言并不知道数据从何而来,最终浏览器的网址并不会发生变化。

redirect 是客户端给服务器发请求,然后服务器告诉客户端说。我给你一些地址。你去新地址访问。最终浏览器的网址更新为新地址。

2. 请求次数

forward 只进行一次请求,redirect进行了两次请求。

3. 共享数据

forward 在转发过程进行一次请求,使用同一个request,将request中的信息带到新的程序中使用,数据是共享的。

redirect 数据不能共享。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章