本文主要是介绍javaee基础之serlvet(二)---面试常见问题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
---------------------------------------------------------从网络上找的-----------感谢网友------------------------------------------------------
1、说一说Servlet生命周期
Servlet生命周期包括三部分:
初始化:Web容器加载servlet,调用init()方法
处理请求:当请求到达时,运行其service()方法。service()自动派遣运行与请求相对应的doXXX(doGet或者doPost)方法。
销毁:服务结束,web容器会调用servlet的distroy()方法销毁servlet。
2、get提交和post提交有何区别
(1)get一般用于从服务器上获取数据,post一般用于向服务器传送数据
(2)请求的时候参数的位置有区别,get的参数是拼接在url后面,用户在浏览器地址栏可以看到。post是放在http包的包体中。
比如说用户注册,你不能把用户提交的注册信息用get的方式吧,那不是说把用户的注册信息都显示在Url上了吗,是不安全的。
(3)能提交的数据有区别,get方式能提交的数据只能是文本,且大小不超过1024个字节,而post不仅可以提交文本还有二进制文件。
所以说想上传文件的话,那我们就需要使用post请求方式
(4)servlet在处理请求的时候分别对应使用doGet和doPost方式进行处理请求
3、JSP与Servlet有什么区别
Servlet是服务器端的程序,动态生成html页面发送到客户端,但是这样程序里会有很多out.println(),Java与html语言混在一起
很乱,所以后来sun公司推出了JSP.其实JSP就是Servlet,每次运行的时候JSP都首先被编译成servlet文件,然后再被编译成
.class文件运行。有了jsp,在MVC项目中servlet不再负责动态生成页面,转而去负责控制程序逻辑的作用,控制jsp与javabean
之间的流转。
4、doGet与doPost方法的两个参数是什么
HttpServletRequest:封装了与请求相关的信息
HttpServletResponse:封装了与响应相关的信息
5、request.getAttribute()和request.getParameter
(1)有setAttribute,没有setParameter方法
(2)getParameter获取到的值只能是字符串,不可以是对象,而getAttribute获取到的值是Object类型的。
(3)通过form表单或者url来向另一个页面或者servlet传递参数的时候需要用getParameter获取值;getAttribute只能获取setAttribute的值
(4)setAttribute是应用服务器把这个对象放到该页面所对应的一块内存当中,当你的页面服务器重定向到另一个页面的时候,应用服务器
会把这块内存拷贝到另一个页面对应的内存当中。通过getAttribute可以取得你存下的值,当然这种方法可以用来传对象。
用session也是一样的道理,这是说request和session的生命周期不一样而已。
6、JSP有哪些内置对象,作用是什么?
JSP内置对象
名称 | 作用 |
request | 包含用户端请求的信息 |
response | 包含服务器传回客户端的响应信息 |
session | 与请求有关的会话期 |
pageContext | 管理网页属性 |
application | 服务器启动时创建,服务器关闭时停止,为多个应用程序保存信息 |
out | 向客户端输出数据 |
config | servlet的架构部件 |
page | 指网页本身 |
exception | 针对错误页面才可使用 |
7、四种会话跟踪技术作用域
(1)page:一个页面
(2)request::一次请求
(3)session:一次会话
(4)application:服务器从启动到停止。
7、JSP中动态INCLUDE和静态INCLUDE有什么区别
include指令用于把另一个页面包含到当前页面中,在什么时候包含的?再转换成servlet的时候包含进去的。
动态INCLUDE用jsp:include动作实现 <jsp:include page="included.jsp" flush="true" />它总是会检查所含文件中的变化,适合用于包含动态页面,
并且可以带参数.
静态INCLUDE用include伪码实现,定不会检查所含文件的变化,适用于包含静态页面<%@ include file="included.htm" %>
8、forward和redirect的区别
转发与重定向
(1)从地址栏显示来说
forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器.浏览器根本不知道服务器发送
的内容从哪里来的,所以它的地址栏还是原来的地址.redirect是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址.所以地址栏显示的是
新的URL.
(2)从数据共享来说
forward:转发页面和转发到的页面可以共享request里面的数据.
redirect:不能共享数据.
(3)从运用地方来说
forward:一般用于用户登陆的时候,根据角色转发到相应的模块.
redirect:一般用于用户注销登陆时返回主页面和跳转到其它的网站等.
(4)从效率来说
forward:高.
redirect:低.
-----------------------------------------------------------------------分割线-------------------------------------------------------------------------------
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 中值变化等事件进行监听。
这篇关于javaee基础之serlvet(二)---面试常见问题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!