Java Web面试题整理(思维导图)

 

 1,动态网站技术有哪些?

2,一般的Web架构是指BS 还是CS,BS架构是什么咚咚?

3,Web应用程序的流程,即把一个URL串输入地址栏后发生写什么?

4,说一说Servlet生命周期?

5,在Web应用中,客户端向服务器请求数据的方式通常有啥?

6,讲一讲你对重定向与请求转发的认识?

7,ServletConfig对象有何作用,在Servlet中如何使用?

8,关于ServletContext对象你了解多少?

9,你知道HttpServletRequest,HTTPServletResponse对象吗?

10,ServletContext对象和ServletConfig对象的getInitParameter()方法有何区别?

11,ServletContext对象如何存取自定义属性,属性的访问范围是什么?

12,HttpServletRequest对象如何自定义属性,属性的访问范围是什么?

13,Servlet如何向页面输出数据?

 

1,CGA,ASP,ASP.NET,PHP,servlet,JSP等

2,是BS,即浏览器服务器的形式,是基于特定HTTP通信协议的CS架构,对CS的一种变化或者改进,

 

3,浏览器请求-服务器处理请求-响应结果返回浏览器

客户通过URL地址发送的请求转换为标准的HTTP请求,Web服务器首先需要检查请求的文件地址是否正确,若错误,返回错误信息,若正确,服务器将根据请求的GET或POST方法及文件的类型进行相应的处理,将结果以HTML或XML或着二进制文件等数据形式表示。并按照HTTP协议的响应消息格式反馈给浏览器,浏览器会根据消息附带的信息查看并显示该信息。

 

4,

Servlet生命周期是由Servlet容器负责管理的,Servlet 本身并不是直接运行的虚拟机上,Servlet生命周期是指Servlet实例从创建到响应客户端请求,直至销毁的过程,会经过创建,初始化,服务可用,服务不可用,处理请求,终止服务和销毁服务7种状态。

涉及到三个方法:init(),Service(),destory()。

加载和实例化:

Servlet创建,在服务器运行中,客户机首次向Servlet发送请求,重新装入Servlet时,在为Servlet配置了自动装入选项(load-on-startup)时。

初始化:

Servlet容器调用Servlet的init(ServletConfig config)方法来对Servlet实例进行初始化。读取固定数据,初始化JDBC连接等资源连接,init()方法的参数ServletConfig对象由Servlet容器创建并传递给Servlet,一直存在,直到销毁。

处理请求:

服务器接受到客户端请求后,会为该请求创建一个请求对象和响应对象,并调用service()方法,service()方法在调用其他方法。

销毁:

当Servlet容器需要终止Servlet,它会先调用Servlet的destroy()方法.

 

5,

四种,

其一,通过超链接形式查询数据;语法链接文本

//即Web中以GET方式提交数据。数据部分和地址部分由?隔开,参数之间由&隔开,但安全性差,以明文方式显示。在发送的请求的URI地址可以是绝对地址,也可以是相对地址,开发中一般使用相对地址,便于开发移植。

其二,通过Form表单形式更新数据;

语法:

其三,通过Ajax实现异步访问。

$.ajax({

url:’/ExampleServlet’,

type:‘post’,

dataType:‘json’,

success:function(data){alert(‘成功!’);alert(data);},

error:function(){alert(‘内部错误’);}

});

 

其四,通过JS语句实现

 

6,

重定性和请求转发是Servlet中对新的URL地址的转向的两种主要方式:

1,重定向:指由原请求地址重新定位到某个新地址,原有的请求失效,客户端看到的是新的请求返回的响应结果,客户端浏览器地址栏变成了新的请求地址,在重定性过程中客户端和服务器会经过两次请求和两次响应,其中第二次请求由客户端发起。第一次请求到服务器后,由服务器响应指定重定向的第二请求(返回3开头的状态码),客户端第二请求发出,最后经过服务器发返回响应。

重定向通过HttpServletResponse对象的sendRedirect()方法实现的,该方法会通知客户端去重新访问新指定的URL地址,

public void sendRedirect(string location)throws java.io.IOExcetion

//location为重定向的URL地址,可以是相对路劲或绝对路径,可以重定向到当前应用程序中的资源,还可以重定向到同一站点的其他资源,使用绝对URL可以定位到其他站点的资源。

2,请求转发:指将请求转发到其他地址,使用同一个请求,转发后的浏览器地址内容不变,即经过一次请求响应,转发过程发生在服务器内部,服务器只能从当前应用内部查找相应的转发资源,而不能转发其他资源,

使用RequesDispatcher接口中的forward()方法来实现,该方法可以把请求转发给另外一个资源,并让该资源对此请求进行响应RequestDispatcher接口还有一个include()//将其他资源并入到当前请求中。RequestDispatcher是一个接口,需要通过使用HttpResquest对象的getrequesDispatcher()方法获得该接口的实例对象。

RequestDispatcher dispatcher =request

.getrequestDispatcher(String path)

.forward(ServletRequeste request,Servletresponse response);

请求转发与重定向的区别;

 

转发只能将请求转发给同一个Web应用中的组件,重定向可以重定向到当前资源,同一个站点的其他资源,以及其他站点资源。

重定向访问后的URL会发生改变,请求转发URL地址保持不变。

重定向是由服务器告诉浏览器去重新请求一个URL,是客户端行为,请求转发是服务器程序内部发生转发行为,

请求转发服务器之间共享请求对象和响应对象,属于同一个访问请求过程,重定向调用者与被调用者使用各自的请求和转发对象。属于两个独立的访问请求和响应过程。

7,

容器在初始化一个Servlet时,会为这个Servlet创建一个ServletConfig对象,并将这个对象通过init(ServletConfig config)方法传递并保存在此Servlet对象中,

使用ServletConfig接口中的方法主要可以访问两项内容:

Servlet初始化参数和ServletContext对象,

前者通过由容器从Servlet的配置属性中读取(在Servlet的init()方法中调用ServletConfig参数getInitParameter()方法来获取初始化参数的值,)

后者为Servlet提供有关的容器信息(调用ServletConfig对象的getServletContext()方法来获取ServletContext对象。)

8,ServletContext对象代表当前Servlet运行环境,Servlet容器在启动一个Web应用时,会为该应用创建一个唯一 的ServletContext对象供该应用中的所有Servlet对象共享,Servlet对象可以通过ServletContext来访问容器中的各种资源。

ServletContext对象可以获得应用范围的初始化参数,在应用范围内存取共享数据,访问当前Web应用的信息,访问当前容器的信息和输出日志和访问服务器端的文件系统资源。

9,

HttpServletRequest接口用于封装HTTP请求信息,对象用于获取请求报文信息,获取网络连接信息和存取请求域属性。ServletContext对象,HttpServletRequest对象具有相同的存取域的方法。

HttpServletResponse接口用于封装HTTP响应信息,创建响应报文。

10,

ServletContext对象的getInitParameter()方法用来访问整个应用范围内的初始化参数,参数通过web.xml的元素来指定,所有的servlet都可访问,ServletConfig对象对象的getInitParameter()方法用来访问当前Servlet的初始化参数,参数通过web.xml的来指定。仅当前配置的Servlet可访问。

11,

ServletContext对象通过setAttribute(name,value)方法来存取自定义属性,通过getAttribute(name)来取自定义属性值。ServletContext对象的自定义属性也被称为应用域属性,表示在web应用的整个生命周期内,可以被web应用范围内的所有组件所共享

12,

HttpServletrequest对象通过setAttribute(name,value)方法来自定义一个域属性,HttpServletRequest对象自定义属性也被称为请求域属性,表示在本次请求和响应的生命周期内供本次请求对象所访问,

13,

通过HttpServletResponse对象调用getOutputStream()方法获取字节输出流对象ServletOutputStream,用于创建包含二进制数据的响应正文,通过调用getWriter()方法获取字符输出流对象PrintWriter,用于创建包含字符数据的响应正文。

 

14,你知道Session和Cookie吗?说说它们的区别和联系?

15,你还知道哪些会话跟踪技术?

16,session的生命周期?

17,简述一下JSP执行原理:

18,JSP元素有哪些?

19,include指令元素与动作元素有啥区别?

20,JSP内置对象有哪些?

 

14,

Session和Cookie是两种会话跟踪技术,HTTP是一种无状态协议,利用Session和Cookie可以实现多次请求之间的数据共享。

Cookie 是由 Web 服务器保存在用户浏览器(客户端)上的小文本文件,cookie本身有一定的大小限制,,每个cookie所存放的数据不能超过4KB。cookie由一些键值对(cookieName–value)构成,根据cookieName来检索的cookie中的信息,它可以包含有关用户的信息。当cookie到达过期时间时,cookie就会被删除,默认情况下,当浏览器关闭时cookie立即失效,对于长期的Cookie,会保存在磁盘中,无论何时用户链接到服务器,Web 站点都可以访问 Cookie 信息。

Session技术是指使用HttpSession会话实现会话跟踪技术,HttpSession对象是Javax.servlet.http.HttpSession接口的实例,也称会话对象,该对象用来保存单个用户访问时的 一些信息,是服务器在无状态的Http协议下用来识别和维护具体某个用户的重要方式。

HttpSession对象会在用户第一次访问服务器时由容器创建(在访问JSP,Servlet,等程序才会创建,只访问HTML,IMAGE等静态资源并不会创建),当用户调用其失效方法(invalidate())或超过其最大不活动时间时会失效,在此期间,用户与服务器之间的多次请求都属于同一个会话。服务器在创建会话时,会分配一个唯一的会话标识:SessionId,以“JSESSIONID”的属性名保存在客户端Cookie中,在用户随后的请求的中,通过JSESSIONID属性来识别不同的用户。实现每个用户的会话跟踪。

联系:

session是通过cookie来工作的,session依赖于Cookie,服务器在创建会话时,会分配一个唯一的会话标识:SessionId,以“JSESSIONID”的属性名保存在客户端Cookie中,在用户随后的请求的中,通过Cookie中的JSESSIONID属性来识别不同的用户。实现每个用户的会话跟踪。

区别:

1、cookie数据存放在客户的浏览器上,session数据放在服务器上。

2、cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗

考虑到安全应当使用session。

3、session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能

考虑到减轻服务器性能方面,应当使用COOKIE。

4、单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie。

5,对于Java Web来说,Cookie只能保存Sting类型的KV对,Session可以存放Object类型的KV。

6,Session不区分访问路径,同一个用户在访问一个网站期间,所有的请求地址都可以访问到Session,而Cookie如果设置参数路径,那么同一网站中不同路径下的Cookie是相互访问不到的。

 

15,

URL重写技术:在客户端浏览起完全禁用了Cookie后,通过在请求地址后附加会话标识的URL重写技术任可实现会话的跟踪技术。

隐藏表单域:利用Form表单的隐藏表单域,可以在完全脱离浏览器对Cookie的使用权限以及在用户无法显示页面看到的隐藏标识的情况下,将标识随请求一起穿送给服务器处理。实现会话跟踪。

 

16,

HttpSession对象会在用户第一次访问服务器有容器创建,在用户调用其失效方法或超过最大不活动时间时失效。

 

17,

1,客户端向服务器发送JSP页面请求。

2,容器检索请求的JSP页面,第一次请求,则将静态数据和动态数据转换为Java代码,将JSP文件翻译为一个Java文件。

3,容器将翻译后的Servlet源代码编译为字节码文件,对于Tomcat而言,生成的字节码文件默认存放在<Tomcat安装目录>work目录下。

4,编译后的字节码文件被加载到容器内存中执行,并根据用户的请求生成HTML格式的响应内容

5,容器将响应内容返回客户端

当同一个JSP页面再次被请求时,只要该JSP文件没有发生过改变,容器将直接调用已加载的字节码文件,而不会再执行翻译和编译的过程

 

18,

脚本元素:脚本<%%>,表达式<%=%>,声明<%!%>注释<%-- --%>

指令元素:<%@page%>,<%@include%>,<%@taglib%>

动作元素:< jsp:include>,< jsp:forward>,< jsp:param>,< jsp:userBean>’

 

19,

include指令元素和动作元素都是实现包含文件代码复用。

对于包含文件的处理指令和方式不同,include指令元素在翻译阶段就引入所包含的文件,被处理的文件在逻辑上和语法上依赖于当前的JSP页面,优点是执行速度快。include动作元素是JSP页面在运行时才引入包含的文件所产生的应答文本,被包含的文件在逻辑和语法上独立于当前JSP页面,其优点是可以使用param子元素更加灵活的处理所需要的文件,缺点是执行速度慢一些。

 

20,

| request ||请求对象,提供客户端HTTP请求数据的访问|

|response||响应对象,用来向客户端输出响应|

|out||输出对象,提供对输出流的访问,由java.io.Writer类继承得|

|session||会话对象,用来保存服务器与每个客户端会话过程中的信息|

|application||应用程序对象,保存整个应用环境信息|

|pageContext||页面上下文对象,用于存储当前JSP页面的相关信息|

|config||页面配置对象,JSP页面的配置信息对象|

|page||当前JSP页面对象,即this|

|exception||异常对象,用于处理JSP页面中的错误|

 

21,你知道EL吗?EI的隐含对象有哪些?

22,你知道JSTL,日常开发哪里会用到呢?

23,你对Filter与Listener了解多少?

24,谈谈你对MVC模式的理解?

 

21,

EL即表达式语言,最大的优势是可以方便的访问JSP的隐含对象的JavaBean组件,

EL隐含对象:

与范围有关的隐含对象:pageScope,requestScope,sessionScope,applicationScope.

与请求参数有关的对象:param,paramValues。对post与Get请求都适用

其它的隐含对象:pageConrext,header,headerValues,cookie,initParam。

 

22,

JSTL主要提供给Java Web开发人员一个标准通用的标签函数库,标签库同时支持EL获取数据,Web开发人员能够利用此标签函数库取代直接在页面中嵌入Java程序的做法。

核心标签库:

通用标签,用于操作变量:<c:out/>,<c:set/>,<c:remove/>,<c:catch/>标签

条件标签,用于流程控制<c:if>,<c:choose>,<c:when>,<c:otherwise>;

迭代标签,用于循环遍历集合<c:forEach>,<c:forTokens>

函数标签库:是一些对String对象的操作。

 

23,

过滤器(Filter):也称之为拦截器,当用户的请求到达所请求的资源之前。可以借助过滤器来改变这些请求的内容,此过程也称之为“预处理”,当执行结果要响应到用户之前,可以经过过滤器修改响应输出的内容,此过程称为"后处理"

监听器(Listener):Servlet API 提供了大量监听器接口实现对Web应用内特定的事件进行监听,当Web应用中特定事件发生时,回调监听器内的事件监听方法。

 

24,MVC(Model-View-Controller):模式是一种体系结构,有三个组成部分,Model(模型),View(视图)和Controller(控制器)。MVC结构的每个部分具有各自的功能,作用,并以最少的耦合协同工作,提高可扩展性和可维护性。

MVC模式是交互式应用程序最广泛使用的一种体积结构,能够有效的将界面显示,流程控制,和业务处理相分离,

模型层(Model):

是应用系统的核心层,负责封装数据和业务操作。模型层可以分为数据模型和业务模型。数据模型用来对用户请求的数据和数据库查询的数据进行封装,业务模型用来对业务处理逻辑进行封装,控制器(Controller)将用户请求数据和业务处理逻辑交给相应的模型,视图(View)从模型中获取数据,模型改变时通知视图数据更新,维护具有弹性。

视图层(View):

视图层主要是指与用户交互的界面,即应用程序的外观。当做用户的操作接口,输入数据和显示数据处理后的结果,用户通过视图输入数据,转交给控制器,控制器根据用户的请求调用相应的数据模型和业务模型进行处理,选择合适的视图,视图调用模型对结果数据进行显示,同时当模型更新数据时,视图也随之更新。

控制层(Controller):

控制整个系统的处理流程,介于视图层和模型层之间。进行数据传递和流程转向,控制层接受用户的请求和数据,做出判断将请求和数据交由那个模型来处理,最后将结果交由视图来显示模型返回的数据。

 

  嗯,某些原因,整理了这份Java Web的面试知识点。感觉这些技术有些旧了,不太会考太多。加油生活!^_^.

                                                              2019.7.19

 

 

 
posted @ 2020-01-29 21:11  山河已无恙  阅读(1655)  评论(0编辑  收藏  举报