1.说一说Servlet的生命周期 答:Servlet被服务器实例化后,容器运行其init方法,请求到达时运行其service方法,service方法自动派遣运行与请求对应的doXXX方法(doGet,doPost)等,当服务器决定将实例销毁的时候调用其destroy方法。

2.Servlet API中forward()与redirect()的区别?

a、浏览器显示 重定向会改变URL地址,请求转发不会改变URL地址。
b、资源共享 重定向不可以资源共享,请求转发可以。
c、功能 重定向可以用URL绝对路径访问其他Web服务器的资源,而请求转发只能在一个Web应用程序内进行资源转发,即服务器内部的一种操作。
d、效率 重定向效率低,相当于再一次请求;请求转发效率相对较高,跳转仅发生在服务器端。

3.什么情况下调用doGet()和doPost()?

默认情况是调用doGet()方法,JSP页面中的Form表单的method属性设置为post的时候,调用的为doPost()方法;为get的时候,调用deGet()方法。

4.request.getParameter()和request.getAttribute()的区别?

a、request.getParameter()获取的类型是String;
request.getAttribute()获取的类型是Object
b、request.getPrameter()获取的是POST/GET传递的参数值和URL中的参数;
request.getAttribute()获取的是对象容器中的数据值/对象
c、request.setAttribute()和request.getAttribute()可以发送、接收对象;
request.getParamter()只能接收字符串
setAttribute()和getAttribute()的传参原理:
setAttribute()是应用服务器把这个对象放在该页面所对应的一块内存中去,当你的页面服务器重定向到另外一个页面时, 应用服务器会把这块内存拷贝到另一个页面所对应的那块内存中。这个就可以通过getAttribute()获取到相应的参数值或者对象。

5.JSP有哪些内置对象?作用分别是什么?

JSP一共有9个内置对象:
1、 request:负责得到客户端请求的信息,对应类型:javax.servlet.http.HttpServletRequest
2、 response:负责向客户端发出响应,对应类型:javax.servlet.http.HttpServletResponse
3、session:负责保存同一客户端一次会话过程中的一些信息,对应类型:javax.servlet.http.httpsession
4、 out:负责管理对客户端的输出,对应类型:javax.serlvet.jsp.jspwriter
5、application:表示整个应用环境的信息,对应类型:javax.servlet.servletcontext
6、 config:表示ServletConfig,对应类型:javax.servlet.servletconfig
7、 exception:表示页面中发生的异常,可以通过它获得页面异常信息,对应类型:java.lang.exception
8、 pagecontext:表示这个JSP页面上下文,对应类型:javax.servlet.jsp.pagecontext
9、 page:表示当前JSP页面本身。

6.页面间对象传递的方法

request、session、application、cookie等

7.JSP和Servlet有哪些相同点和不同点

JSP是Servlet的扩展,本质上是Servlet的简易方式,更强调应用的外表表达。JSP编译后是”类Servlet”。
Servlet和JSP最主要的不同点在于,Servlet的应用逻辑是在java文件中,并且完全从表示层中的HTML里分离开来。而JSP的情况是java和HTML可以组合成一个扩展名为.jsp的文件。JSP偏重于视图,Servlet偏重于业务逻辑

8.详细描述MVC

java的web应用系统采用MVC设计模型,即用Model(模型)、View(视图)和Controller(控制)分离设计,这是目前web应用服务系统的主流设置方向。
Model:处理业务逻辑的模块。
View:负责页面显示,显示Model的处理结果给用户,主要实现数据到页面的转换过程。
Controller:负责每个请求的分发,把Form数据传递给Model进行处理,处理完成后,把处理结果返回给相应的View显示给用户。

9.MVC各个部分都有哪些技术实现?如何实现?

MVC是Model-View-Controller的简写。
Model代表应用的业务逻辑(通过JavaBean组件实现)
View是引用的表示面(由JSP产生)
Controller是提供应用的处理过程机制(一般是一个Servelt),通过这种设计模型把应用逻辑、处理过程和显示逻辑分成不同的组件来实现。这些组件可以交互和重用。

10.get和post的区别

a、get是用来从服务器上获取数据,而post是用来向服务器传递数据;
b、get将表单中数据按照key=value的形式,添加到action所指向的URL后面,并且两者用”?”连接,变量之间用”&”连接;而post是将表单中的数据放在form的数据体中,按照变量与值对应的方式,传递到action所指定的URL。
c、get是不安全的,因为在传输过程中,数据是被放在请求的URL中;而post的所有操作对用户来说都是不可见的。
d、get传输的数据量小,这主要应为受url长度限制;而post可以传输大量的数据,所有上传文件只能用post提交。
e、get限制form表单的数据集必须为ASCII字符;而post支持整个IS01 0646字符集。 f、get是form表单的默认方法。

11、Servlet/Filter/Listener对比

1、Servlect
是运行于服务器端的java应用程序,具有独立于平台和协议的特性,可以动态生成Web页面;主要用于控制器,负责解释和执行客户端请求。
2、Filter
与Servlet区别在于,Filter不能直接向用户生成响应,Servlet只要处理请求,而Filter负责拦截请求,对用户进行预处理,也可以对响应进行后处理;Filter是一个可以复用的代码片段
3、Listener
采用观察者模式,是web应用程序事件模型的一部分,当一个会话被创建或者被销毁、session作用域中添加或移出一个变量等这些状态改变会产生相应的事件,而Listener可以接收这些事件,以便事件发生时做出处理。主流框架技术经常采用Listener实现加载配置文件和框架初始化的工作