1、 Servlet
与JSP
有什么区别?
Servlet
和JSP
完成的功能是相同的,都可以接收用户的请求,可以对用户进行响应,可以调用业务方法。
不同点在于JSP
是在html
或者xml
中嵌入了Java
代码或者JSP
的标记,在制作页面方面具有优势,可以使用网页编辑工具来制作网页,然后嵌入Java
或者JSP
的标记。Servlet
是纯Java
代码,通常用于控制,不用于输出。在MVC
模式中,JSP
通常充当视图,Servlet
通常充当控制器。另外,JSP
在运行的时候还要转换成类似于Servlet
的Java
代码。
2、 Servelt
通常有哪些方法
init
方法,完成初始化
service
方法,包括doGet
和doPost
,用于接收用户的请求,调用后台的JavaBean
或者EJB
,选择界面对用户响应。
destroy
方法,用于释放资源
3、
谈谈Servlet
的生命周期
当接收到请求的时候,容器察看对应的Servlet
对象是否存在,如果不存在,需要加载Servetl
,实例化Servlet
,调用init
方法进行初始化。如果已经存在,根据用户的请求创建request
和response
对象,把这两个对象作为参数调用Servlet
对象的service
方法,Servlet
通过这个方法与用户进行交互,方法执行完之后,对请求的处理结束。Servelt
对象继续等待下一个请求。当应用卸载的时候,调用destroy
方法释放资源。多个请求共享Servelt
对象。
4、 Servlet API
的两个主要包
javax.servlet.*;
javax.servlet.http.*;
5、
编写Servlet
需要继承的类是什么?
HttpServlet
6、
编写Servlet
通常需要实现的两个方法是什么?
doGet
方法和doPost
方法
7、 doGet
方法和doPost
方法中的两个参数是什么?
HttpServletRequest
和HttpServletResponse
,前者封装了与请求相关的信息,后者封装了与响应相关的信息。要获取请求信息,从第一个参数获取,要对用户响应,通过第二个参数。
8、
要获取用户信息,如何获取
request
的getParameter
方法和getParameterValues
方法,前者用于获取单值表单元素的值,或者用于获取多值的情况,典型的复选框。前者返回的是一个字符串,后者返回的是字符串数组。如果参数指定的表单元素不存在,返回null
。
9、
要给用户响应信息,如何完成?
设置响应内容的类型:response.setContentType(“text/html;charset=gb2312”);
获取输出流对象:PrintWriter out = response.getWriter();
输出信息:通过out
的println
方法
10、
在Servlet
中选择接面对用户响应,如何实现
两种方式:使用RequestDispatcher
和response
的sendRedirect
方法
如果使用RequestDispatcher
:
RequestDispatcher rd = request,getRequestDispatcher(“
目标文件”);
rd.forward(request,response);
如果使用sendRedirect
方法
response.sendRedirect(“
目标文件”);
11、
上面的两种方式有什么区别?
RequestDispatcher
的forward
方法相当于<jsp:forward>
的作用。类似于方法调用,当执行到这行代码的时候,通过forward
方法转向执行目标文件,把request
和response
作为参数传递到下一个页面,这样当前页面(Servlet
或者JSP
)和目标页面共享了request
,可以通过request
对象传值。response
的sendRedirect
方法相当于向客户端浏览器发送了一个消息,让浏览器重新请求目标文件,从用户的角度来说,相当于发送了两次请求,每次请求有独立的request
和response
对象,不能通过request
在两个页面之间传值。从地址栏看,前一种方式在地址栏中显示的第一个文件的路径,后一种方式显示的第二个文件的路径。
12、
在Servlet
中如何获取Session
对象,如何获取Cookie
使用request
对象的getSession
方法获取session
,通过getCookies
获取Cookie
13、 Servlet
在哪个文件中进行配置?
在Web
应用的WEB-INF
下面的web.xml
中进行配置。
14、
如何配置Servlet
包括两步:Servlet
的声明和Servlet
访问方式的声明。
Servlet
的声明:
<servlet>
<servlet-name>servlet
的名字(自己定义的)</servlet-name>
<servlet-class>servlet
的完整类名</servlet-class>
</servlet>
Servlet
访问方式的声明
<servlet-mapping>
<servlet-name>Servlet
的名字(应该和声明的时候保持一致)</servlet>
<url-pattern>
访问路径</url-pattern>
</servlet-mapping>
15、
编译好的Servlet
类放在什么位置?
放在Web
应用WEB-INF
下面的classes
文件夹中。
16、
假设网站的IP
地址为1.2.3.4
,端口8878
,应用的名字hello
,servlet
的访问方式/hello
,现在要访问这个servlet
,如何访问?
http://1.2.3.4:8878/hello/hello
17、
谈谈Servlet
过滤器的作用?
Servlet过滤器
是特殊的Servlet
,能够对特定的请求路径进行过滤,在访问这个路径之前,先执行过滤器,过滤器进行预处理,过滤器决定是否继续执行后续的文件。典型的应用,可以把用户验证的代码写在过滤器中,然后把过滤的路径配制成需要验证的文件的路径。
18、
谈谈Servlet
监听器的作用
Servlet
监听器对特定的事件进行监听,当产生这些事件的时候,会执行监听器的代码。可以对应用的加载、卸载,对session
的初始化、销毁,对session
中值变化等事件进行监听。