Java面试题之Servlet&JSP篇

1.描述JSP和Servlet的区别、共同点、各自应用的范围。

   区别:简而言之,Servlet可以看作是HTML的Java代码,而JSP可看作是包含Java代码的HTML。

   共同点:JSP和Servlet实际上是一回事。JSP页面最终要转换成Servlet,并进行编译,在请求期间执行的实际上是编译后的Servlet。因此,JSP页面不过是编写Servlet的另一种方式。

   各自应用的范围:Servlet比较适合于做处理任务,如做业务逻辑;JSP适合于表示任务,如网页制作,生成动态网页。 

2.在Web开发中需要处理HTML标记时,应做什么样的处理,要筛选那些字符?

   要筛选:<  > & “”。>用& lt代替,<用& gt代替,“和”用& quot代替,&用& amp代替。

3.Servlet的生命周期? 

   Servlet运行在容器中,其生命周期由容器来管理。Servlet的生命周期通过javax.servlet.Servlet接口中的init,service和destroy方法来表示。Servlet的生命周期包含以下四个阶段:加载和实例化、初始化、处理请求以及服务结束。

4.forward() 与sendRedirect()的区别?

    前者仅是服务器端转发请求,在客户端浏览器地址栏中不会显示出转向后的地址;后者则是客户端重定向,浏览器将会得到重定向的地址,并重新发送请求。这样,从浏览器的地址栏中可以看到转向后的地址。后者对客户端来说完成了2次请求过程,所以,前者更加高效也有助于隐藏实际的链接。在有些情况下,比如,需要重定向到另一个服务器上的资源,则必须使用sendRedirect()方法。 

5.Jsp和Servlet中的请求转发分别如何实现?

    JSP的转发请求可通过<jsp:forward>标准动作来完成; Servlet转发请求可通过forward() 方法来实现。

6.Servlet和CGI的区别

   servlet处于服务器进程中,它通过多线程方式运行其service方法,一个实例可以服务于多个请求,并且其实例一般不会销毁,而CGI对每个请求都产生新的进程,服务完成后就销毁,所以效率上低于servlet。

7.jsp有哪些隐式对象?作用分别是什么? 

   request request表示HttpServletRequest对象。它包含了有关浏览器请求的信息,并且提供了几个用于获取cookie, header, 和session数据的有用的方法。 

response response表示HttpServletResponse对象,并提供了几个用于设置送回 浏览器的响应的方法(如cookies,头信息等) 

out out 对象是javax.jsp.JspWriter的一个实例,并提供了几个方法使你能用于向浏览器回送输出结果。 

pageContext pageContext表示一个javax.servlet.jsp.PageContext对象。它是用于方便存取各种范围的名字空间、servlet相关的对象的API,并且包装了通用的servlet相关功能的方法。 

session session表示一个请求的javax.servlet.http.HttpSession对象。Session可以存贮用户的状态信息 

application applicaton 表示一个javax.servle.ServletContext对象。这有助于查找有关servlet引擎和servlet环境的信息 

config config表示一个javax.servlet.ServletConfig对象。该对象用于存取servlet实例的初始化参数。 

page page表示从该页面产生的一个servlet实例
     exception 表示JSP页面运行时产生的异常

8.JSP中动态INCLUDE与静态INCLUDE的区别? 
  动态INCLUDE用jsp:include动作实现,<jsp:include page="included.jsp" flush="true" />它总是会检查所含文件中的变化,适合用于包含动态页面,并且可以带参数;静态INCLUDE用include伪码实现,定不会检查所含文件的变化,适用于包含静态页面 <%@ include file="included.htm" %> 。

9.两种跳转方式分别是什么?有什么区别? 
答:有两种,分别为: 
<jsp:include page="included.jsp" flush="true"> 
<jsp:forward page= "nextpage.jsp"/> 
前者页面不会转向include所指的页面,只是显示该页的结果,主页面还是原来的页面。执行完后还会回来,相当于函数调用。并且可以带参数.后者完全转向新页面,不会再回来。相当于go to 语句。

   

未完待续……

猜你喜欢

转载自blog.csdn.net/mojiezuo123/article/details/81128975