Java面试经典之Servlet
来源:互联网 发布:大数据的数据库 编辑:程序博客网 时间:2024/05/05 14:15
回答要点:
1.只有一个Servlet对象(要点)
2.第一次请求的时候被初始化,只此一遍
3.初始化后先调用init方法,只此一遍
4.每个请求,调用一遍service -> service -> doGet/doPost。以多线程的方式运行
5.卸载前调用destroy方法
具体描述:
只存在一个Servlet对象,在有客户端请求时才进行初始化,也只初始化一次,在destroy之前,所有的请求不再初始化。初始化完成后调用init方法,同初始化一样,init方法也只调用一次。接下来对于每个请求先调用公有的service方法,然后公有的service方法再调用私有的service方法,私有的service方法根据客户端的请求方式调用doGet或者doPost方法。这个过程是通过多线程来实现的,也就是每一次请求就会执行一次这样的顺序。在卸载容器时会调用destroy方法销毁Servlet对象。
在Servlet中,转向到其它Servlet和JSP的时候,可以通过两种方式实现:
(1)使用response对象的sendRedirect()方法
(2)使用RequestDispatcher对象的forward()方法
{例:request.getRequestDispatcher("/a.jsp").forward(request, response);}
二者区别:
(1)跳转路径的区别
A、response.sendRedirect("/projectName/XXXX"):
转向web服务器的根路径如:http://localhost:8080/这里的最后“/”!!!,所以要带Web项目名称.
{例:/projectName/XXXXX-------->所以就是在跳转要加上web项目名称}
B、request.getDispatcher("/XXXX").forward(request,response);
转向web项目的根路径如:http://localhost:8080/projectName/这里的最后“/”!!!,所以不带Web项目名称.
{例:/XXXX--------------------->这个就不用加啦!!!}
(2)读取request.setAttribute()属性的区别
A、response.sendRedirect()
是重新定向前后页面不是一个request,不可以读取转向前request对象通过setAttribute()方法所设
定的属性值。就是用request.getAttribute得不到设进request的参数了。
B、rd.forward(request,response)
是请求转发,前后页面共享一个request ,可以读取转向前request对象通过setAttribute()方法所设
定的属性值。
(3)跳转后在Brower地址栏的地址的区别
A、response.sendRedirect()
地址栏显示的地址是所转向到的Servlet或者JSP的地址。(这个自己实验下,我不讲了,表达不清)
B、rd.forward(request,response)
转向后,地址栏显示的地址是转向前原Servlet的地址。(这个自己实验下,我不讲了,表达不清)
(4)跳转速度上的区别(但是平常这个好像也没有太大的区别)
response.sendRedirect()
可以转向到本Web应用之外的页面和网站,转向的速度相对要慢
rd.forward(request,reponse)
不可以转向到本Web应用之外的页面和网站,转向的速度相对要快,
- Java面试经典之Servlet
- Java面试经典:Servlet生命周期
- Java面试经典:Servlet生命周期
- Java面试经典:Servlet生命周期
- java面试之Servlet/JSP面试题
- Java Killer系列之Java经典面试套路讲解
- Java Killer系列之Java经典面试套路讲解
- java经典面试题目
- java经典面试题目
- Java面试经典题目
- JAVA经典面试题目
- JAVA面试经典问题
- Java面试经典总结
- 经典java面试
- 【JAVA经典面试题目】
- java面试经典题目
- java面试经典
- java经典面试知识点
- 程序员必定会爱上的十款软件
- Linux编程---一些系统相关的说明
- gradle编译出错:Execution failed for task ':app:compileTestDebugJava'.
- 程序员画画-猪鬼怪
- NOJ [1078] Wizards and Demonstration
- Java面试经典之Servlet
- ios开发icon图标
- lsmod
- 相关驾校吐槽
- jquery 里面toggle使用
- expect使用
- Unity读取Excel方法总结
- STM32红牛开发板非固件库控制LED(2010/05/23)
- 登录模块