1、 静态Web和动态Web的区别?
静态Web与动态Web最本质的区别是静态Web是无法进行数据库操作,而动态Web是可以进行数据库操作的。
动态Web的最大特点就是具有交互性,所谓交互性就是服务器端会自动根据用户请求的不同而显示不同的结果。
2、 说一说你了解的动态Web技术有哪些?
CGI、PHP、ASP、ASP.NET JSP
3、 什么是Servlet?
Servlet是运行于服务器端的,按照其自身规范编写的Java应用程序。
小编是一个有着5年工作经验的java程序员,对于java,自己有做资料的整合,一个完整学习java的路线,学习资料和工具,相信这里有很多学习java的小伙伴,我创立了一个2000人学习扣群,479121291。每晚都有java的直播课程。无论是初级还是进阶的小伙伴小编我都欢迎!
1、Servlet是用Java语言编写的,它是一个Java类。因而Servelet遵守所有Java语言的语法规则,并且它可以调用一般Java程序可以调用的JDK类库。
2、Servlet是在服务器端运行的。它编译后的".class"文件被服务器端调用和执行。Web服务器使用该class文件去处理浏览器请求,并将处理的结果返回到客户端。
3、由于Servlet特殊的应用特点,它有自身特殊的规则。一般来说,它必须调用Java Servlet API,必须是对特定类或接口的继承和实现。并且,它必须重写特定的方法去处理客户端请求。
4、 Servlet的主要功能有哪些?
Servlet的主要功能是用来接受、处理客户端请求,并把处理结果返回到客户端显示。其过程如下:
1、客户端把请求送到Servlet处理
2、Servlet处理请求。这时Servlet相应的方法被Web服务器调用去处理请求。这个过程中,Servlet可以和服务器端的其他资源(文件、数据库等)交互。
3、Servlet把请求的结果返回。在这个过程中,Servlet返回的并不仅仅是数据结果,而是整个HTML文件。
5、Servet的生命周期?
生命周期包括加载(创建)程序、初始化、服务、终止(销毁)、卸载5个部分。
6、谈一谈请求转发和重定向的区别?
7、什么是HTTP协议?
HTTP(Hypertext Transfer Protocol)中文 “超文本传输协议”,是一种为分布式,合作式,多媒体信息系统服务,面向应用层的协议,是Internet上目前使用最广泛的应用层协议,它基于传输层的TCP协议进行通信,HTTP协议是通用的、无状态的协议。
8、HTTP协议的主要特点有哪些?
遵循请求/响应模型、无连接、无状态、简单快速、灵活
9、HTTP协议请求由哪几部分组成?
请求行、消息报头、请求正文
10、HTTP协议响应由哪几部分组成?
状态行、消息报头、响应正文
11、HTTP协议中请求方法的GET和POST的区别?
12、CGI(通用网关接口)的缺陷是什么?
一个请求创建一个进程,并发处理性能极低。
13、什么是Web容器?说一说你知道的Web容器?
Web容器负责管理和运行Servlet
Tomcat、Jboss、WebLogic、WebSphere、Oracle9i AS
14、Servlet中哪个类的实例负责处理请求,哪个类实例负责处理响应?
HttpServletRequest、HttpServletResponse
15、Servlet中如何获取提交的表单数据?二进制数据呢?
HttpServletRequest的getParameterValues方法
16、什么是session?Session的原理是什么?
17、什么是Cookie?有什么作用?
18、Web状态管理有哪些解决方案?
表单隐藏字段、Cookie、Session、URL重写
19、HttpSession接口常用的方法有哪些?说出至少三个?
setAttribute、getAttribute、removeAttribute、getId
20、说一说Session的生命周期?
21、说一说HttpServletRequest对象作用域?
HttpServletRequest用于一次客户端请求过程。对于每一个请求,由一个工作线程来执行,都会创建有一个新的HttpServletRequest对象,所以HttpServletRequest对象只能在一个线程中被访问,它是线程安全的。
22、说一说HttpSession对象作用域?
HttpSession对象用于维护与一个客户的会话状态。在HttpSession对象中设置的属性不能被Web应用中所有地方访问。HttpSession对象在用户会话期间存在,只能在处理属于同一个HttpSession的请求的线程中被访问,因此Session对象的属性访问理论上是线程安全的。 但当用户打开多个同属于一个进程的浏览器窗口,在这些窗口的访问属于同一个HttpSession对象,会出现多次请求,需要多个工作线程来处理请求,可能造成同时多线程读写属性。 这时我们需要对属性的读写进行同步处理,一般使用同步块Synchronized来解决。当会话被销毁,HttpSession中的设置的属性也会被销毁。
23、说一说ServletContext对象作用域?
对于整个Web应用,只有一个ServletContext对象,而且在Web应用中的所有地方都可以访问它。Servlet对象由Web容器创建并实例化,它可以多线程同时读/写属性,是线程不安全的。所以需要对属性的读写进行同步处理或者进行深度Clone。当Web容器关闭,会销毁ServletContext对象。
建议:在ServletContext对象中尽可能少量保存会被修改的数据,可以采取其他方式在多个Servlet中共享,常用的方法是使用单例模式来处理共享数据。
24、说一说ServletContext对象、HttpSession对象以及HttpServletRequest对象的区别?
三个对象的共同点:都可以用于存取属性(或对象),拥有相同的属性操作方法。
三个对象作用域大小的比较(从大到小)
ServletContext对象 > HttpSession对象 > HttpServletRequest对象
三个对象存活时间长短的比较(从长到短)
ServletContext对象 > HttpSession对象 > HttpServletRequest对象
三个对象对资源消耗的比较(从多到少)
ServletContext对象 > HttpSession对象 > HttpServletRequest对象
三个对象的线程安全性比较
ServletContext对象线程不安全;
HttpSession对象线程较安全;
HttpServletRequest对象线程安全
25、说一说Servlet监听器的事件类型有哪些?
ServletContext事件、HttpSession事件、ServletRequest事件
26、ServletContext事件的监听器有哪些?
27、HttpSession事件的监听器有哪些?
28、ServletRequest事件的监听器有哪些?
29、如何统计Web在线人数?
HttpSessionListener接口
30、什么是Servlet的过滤器?说一说过滤器原理?
31、Servlet过滤器有哪些常见应用?说出至少三个
1:认证过滤:对用户请求进行统一的认证。
2:登录和审核过滤:对用户的访问请求进行记录和审核。
3:图像转换过滤:转换图像格式。
4:数据压缩过滤 :对用户发生的数据进行压缩,从而减少传输量。
5:加密过滤:对请求和响应进行加密解密处理。
6:令牌过滤
7:资源访问触发事件过滤
8:XSLT过滤
9:MIME-type过滤
32、说一说Servlet的缺陷?
一个动态网页中,其实大部分的内容都是HTML代码等固定不变的内容,只有局部内容需要动态产生及改变。而在Servlet中,所有的HTML语句都需要通过print或println一句一句输出,编写和修改HTML非常不方便,繁琐而令人厌恶。
部署Servlet也是繁琐而容易出错的任务。Servlet3.0规范新特性中使用annotation(注释标识)进行部署描述,简化流程。
Web项目开发中,如果一个项目全部用Servlet编写,那么很难区分前端开发和后端开发,而要求开发人员掌握更多的技能,不利于项目分工。
33、什么是JSP?
JSP全名为Java Server Pages,中文名叫java服务器页面,其本质是一个简化的Servlet设计。它是在传统的网页HTML文件中插入Java程序段(Scriptlet)和JSP标记(tag),从而形成JSP文件,后缀名为(*.jsp)。
34、JSP的生命周期?
1)由JSP引擎将JSP页面翻译成JAVA代码(翻译)
2)将JAVA代码编译成class字节码文件(编译)
3)加载到Web容器(类装载)
4)由容器实例化成对象(类实例化)
5)初始化阶段相关的方法是jspInit(初始化)
6)请求到达,调用服务阶段相关的方法是_jspService(服务)
7)销毁阶段相关的方法是jspDestroy (销毁)
35、JSP页面主要由哪两部分组成?
JSP网页主要由元素(Element)和模板数据(Template Data)两个部分组成 。
36、JSP元素有哪些类别?
元素是必须Web容器处理的部分。可以分成三种不同的类别:脚本元素、指令、动作。
37、脚本元素由哪些部分组成?
声明、Scriptlet和脚本表达式
38、JSP程序中有3种指令,分别是什么?
分别page(页面)指令、include指令和taglib指令
39、说一说include指令与include动作的区别?
使用include指令,被包含的文件为原封不动的插入到包含页中使用该指令的位置,然后JSP编译器再对这个合成的文件进行编译,所以在一个JSP页面中使用include指令来包含另外一个JSP页面,最终编译后的文件只有一个。
使用include 动作标识包含文件时,当该标识执行时,程序会将请求转发到(注意是转发而不是重定向)被包含的页,并将执行结果输出到浏览器中,然后返回包含页继续执行后面的代码,因为服务器执行的是两个文件。所以JSP编译器会分别对这两个文件进行编译。
40、说一说JSP三种注释的区别?
41、说一说JSP的生命周期?
1)由JSP引擎将JSP页面翻译成JAVA代码
2)将JAVA代码编译成class字节码文件
3)加载到容器
4)由容器实例化成对象
5)初始化阶段相关的方法是jspInit
6)请求到达,调用服务阶段相关的方法是_jspService
7)销毁阶段相关的方法是jspDestroy
42、说出JSP的隐式对象有哪些?至少说出5个?
request、response、pageContext、session、application、out、config、page、exception
43、什么是JavaBean?标准的JavaBean需要具备哪些特征?
JavaBean类必须是一个公共类,将其访问属性为public
JavaBean 类必须有一个空的构造函数
JavaBean类的成员变量都为private。要访问这些成员变量,应该通过一组存取方法(getXxx 和 setXxx)来访问,不能以大写字母开始命名成员变量,前两个字母都不能是大写
JavaBean应该是可序列化(serializable)的,即实现java.io.Serializable 接口
44、结合JavaWeb谈一谈你对MVC设计模式的理解?
45、说一说EL表达式和脚本表达式的区别?
46、说一说JSTL标准标签库中5个常用标签,其中重定向标签是什么?
47、说一说什么是AJAX?它是一门新的语言或技术吗?
48、AJAX包含的7种技术是什么?
AJAX技术包含了JavaScript、XML、CSS、XSTL、DOM、HTML/XHTML和XMLHttpRequest七种技术,所以AJAX就像是粘合剂把七种技术整合到一起,从而发挥各个技术的优势。
49、AJAX的有哪些特点?
1)不需刷新页面就可改变页面内容,减少用户等待时间 (最大特点)
2)改善表单验证方式,不再需要打开新页面,也不再需要将整个页面数据提交
3)按需获取数据,每次只从服务器端获取需要的数据
4)读取外部数据,进行数据处理整合
5)异步与服务器进行交互,在交互过程中用户无需等待,仍可继续操作
50、AJAX的工作原理?它与传统Web的区别?
51、AJAX开发的步骤是什么?
建立XMLHttpRequest对象
设置回调函数
使用open方法与服务器建立链接
向服务器端发送数据
在回调函数针对不同响应状态进行处理
52、说一说XMLHttpRequest有哪些常用属性和方法?
属性:readyState、status、responseText
方法:open send
53、说一说jQuery AJAX封装了哪些方法?哪个方法是封装的最底层的方法?
ajax、get、post、load、getScript、getJSON
54、JSP页面出现中文乱码问题如何解决?