Java Web常见面试题整理
Servlet1.什么是servlet?servlet是⽤Java编写的服务器端程序,其主要功能在于交互式地浏览和修改数据,⽣成动态Web内容。 Servlet是java中的一个接口,通过实现servlet,可以实现客户端与服务器的交互。Servlet⼯作模式:① 客户端发送请求⾄服务器 ② 服务器启动并调⽤Servlet,Servlet根据客户端请求⽣成响应内容并将其传给服务器 ③ 服务器将响应
Servlet
1.什么是servlet?
servlet是⽤Java编写的服务器端程序,其主要功能在于交互式地浏览和修改数据,⽣成动态Web内容。 Servlet是java中的一个接口,通过实现servlet,可以实现客户端与服务器的交互。
Servlet⼯作模式:
① 客户端发送请求⾄服务器 ② 服务器启动并调⽤Servlet,Servlet根据客户端请求⽣成响应内容并将其传给服务器 ③ 服务器将响应返回客户端。
2.Servlet⼯作原理
(1) Servlet接⼝定义了Servlet与servlet容器之间的契约。这个契约是:Servlet容器将Servlet类载⼊内存,并产⽣Servlet实例和调⽤它具体的⽅法。但是要注意的是,在⼀个应⽤程序中,每种Servlet类型只能有⼀个实例。
(2)⽤户请求致使Servlet容器调⽤Servlet的Service()⽅法,并传⼊⼀个ServletRequest对象和⼀个ServletResponse对象。ServletRequest对象和ServletResponse对象都是由Servlet容器(例如 TomCat)封装好的,并不需要程序员去实现,程序员可以直接使⽤这两个对象。
(3)ServletRequest中封装了当前的Http请求,因此,开发⼈员不必解析和操作原始的Http数据。
ServletResponse表示当前⽤户的Http响应,程序员只需直接操作ServletResponse对象就能把响应轻松的发回给⽤户。
(4)对于每⼀个应⽤程序,Servlet容器还会创建⼀个ServletContext对象。这个对象中封装了上下⽂(应⽤程序)的环境详情。每个应⽤程序只有⼀个ServletContext。每个Servlet对象也都有⼀个封装Servlet配置的ServletConfig对象。
3.Servlet的⽣命周期
当客户端⾸次发送第⼀次请求后,由容器(web服务器(tomcat))去解析请求, 根据请求找到对应的servlet, 判断该类的对象是否存在,不存在则创建servlet实例,调取init()⽅法 进⾏初始化操作,初始化完成后调取 service()⽅法,由service()判断客户端的请求⽅式,如果是get,则执⾏doGet(),如果是post则执⾏doPost().处理⽅法完成后,作出相应结果给客户端.单次请求处理完毕。
当⽤户发送第⼆次以后的请求时,会判断对象是否存在,但是不再执⾏init(),⽽直接执⾏service⽅法,调取 doGet()/doPost()⽅法。
当服务器关闭时调取destroy()⽅法进⾏销毁。
四个过程:
(1)实例化 --先创建servlet实例
(2)初始化 --init()
(3)处理请求 —service()
(4)服务终⽌ --destory()
4:客户端发送数据给服务器方法有哪些
⽅式1: 通过表单 get/post提交
⽅式2: 通过a标签发送数据(get提交)
⽅式3: 通过地址栏直接拼接-get请求
⽅式4: js提交数据-get请求
5.转发和重定向区别
转发:request.getRequestDispatcher("…/xx.jsp").forward(request,response);
重定向:response.sendRedirect()
相同点: 都⽤来跳转⻚⾯
不同点:
a.重定向时地址栏会改变,request中存储的数据会丢失.转发时地址栏显示的是请求⻚⾯的地 址,request数据可以保存。
b.转发属于⼀次请求⼀次响应,重定向属于两次请求(地址栏修改了两次)两次响应
6.实现 servlet 的三种方式,及区别?
- 实现javax.servlet.Servlet接口
Servlet并不是专门用于处理Http请求的。原生Servlet接口 - 继承javax.servet.GenericServlet类
直接通过实现Servlet接口来编写一个Servlet类,就需要实现Servlet接口中定义的5种方法,为了简化Servlet的编写,在javax.servlet包中,给我们提供了一个抽象的类GenericServlet,它提供了除service()方法外的其他4种方法的简单实现。GenericServlet类定义了一个通用的,不依赖具体协议的Servlet - 继承javax.servlet.http.HttpServlet类
由于大多数网络应用中,都是浏览器通过HTTP协议去访问服务器资源,而通常编写的Servlet也主要是应用于HTTP协议的请求和响应,为了快速开发应用于HTTP协议的Servlet,Sun公司在javax.servlet.http包中给我们提供了一个抽象的类HttpServlet,他继承自GenericServlet类,用于创建适合Web站点的HTTP Servlet。
7.写出 Servlet 中的三大作用域,并分别说明各自的特点?
- request 请求对象
特点:同一次请求中,共享数据可以获取(请求一旦结束,请求共享清除站)(请求转发能共享参数,重定向不行) - session会话对象
同一次会话,共享参数可以获取(会话:从共享数据开始,到浏览器关闭/主动清除。不受请求转发和重定向的影响。) - ServletContext 上下文对象
特点:从存储开始到tomcat关闭都有
8.filter 和 servlet 在生命周期上的区别
servlet:
(1)装入:启动服务器时加载Servlet的实例;
(2)初始化:web服务器启动时或web服务器接收到请求时,或者两者之间的某个时刻启动。初始化工作有init()方法负责执行完成;
(3)调用:从第一次到以后的多次访问,都是只调用doGet()或doPost()方法;
(4)销毁:停止服务器时调用destroy()方法,销毁实例。
filter:(一定要实现javax.servlet包的Filter接口的三个方法init()、doFilter()、destroy(),空实现也行)
(1)、启动服务器时加载过滤器的实例,并调用init()方法来初始化实例;
(2)、每一次请求时都只调用方法doFilter()进行处理;
(3)、停止服务器时调用destroy()方法,销毁实例。
1,servlet 流程是短的,url传来之后,就对其进行处理,之后返回或转向到某一自己指定的页面。它主要用来在 业务处理之前进行控制.
2,filter 流程是线性的, url传来之后,检查之后,可保持原来的流程继续向下执行,被下一个filter, servlet接收等,而servlet 处理之后,不会继续向下传递。filter功能可用来保持流程继续按照原来的方式进行下去,或者主导流程,而servlet的功能主要用来主导流程。
filter可用来进行字符编码的过滤,检测用户是否登陆的过滤,禁止页面缓存等。
9.表单提交的 2 种方式?及区别
表单提交的2种方法: get 和post
1.get请求会将数据暴露在url地址栏中,post不会
2.get提交对数据的长度有限制,post提交无长度限制
3.安全性。post提交更加安全
JSP
1.JSP的原理
当浏览器访问jsp文件时,服务器发现后缀为.jsp,它会根据路径找到 .jsp ⽂件,会将index.jsp翻译成index_jsp.java⽂件,对这个java⽂件进⾏编译,产⽣⼀个 index_jsp.class⽂件,将class⽂件加载运⾏。将JSP翻译成java⽂件,它是将JSP中的所有的HTML代码通过流进⾏输出,也就是说最终翻译成class,被虚拟机加载,它本质是servlet,它就会往回响应,响应回去就是把JSP中的HTML代码以流的⽅式写回浏览器。所以在JSP中展示出了HTML代码。
2.JSP的内置对象
JSP中⼀共预先定义了9个这样的对象,分别为:request、response、session、application、out、pagecontext、config、page、exception
3.JSP的指令
指令名称 | 描述 |
---|---|
page | 定义⽹⻚依赖属性,⽐如脚本语⾔、error⻚⾯、缓存需求等等 |
include | 包含其他⽂件 |
taglib | 引⼊标签库的定义 |
4.JSP中的四种作用域
- page代表与一个页面相关的对象和属性。
- request代表与Web客户机发出的一个请求相关的对象和属性。一个请求可能跨越多个页面,涉及多个Web组件;需要在页面显示的临时数据可以置于此作用域。
- session代表与某个用户与服务器建立的一次会话相关的对象和属性。跟某个用户相关的数据应该放在用户自己的session中。
- application代表与整个Web应用程序相关的对象和属性,它实质上是跨越整个Web应用程序,包括多个页面、请求和会话的一个全局作用域。
会话跟踪
1.什么是cookie
Cookie是客户端(⼀般指浏览器)请求服务器后,服务器发给客户端的⼀个辨认标识,保存在客户端,当客
户端再次向服务器发送请求时,会携带着这个辨认标识,服务器就可以通过这个标识来识别客户端的身份或
状态等
2.什么是Session
Session是另⼀种记录客户状态的机制,不同的是Cookie保存在客户端浏览器中,⽽Session保存在服务器上。客户端浏览器访问服务器的时候,服务器把客户端信息以某种形式记录在服务器上。这就是Session。客户端浏览器再次访问时只需要从该Session中查找该客户的状态就可以了。
3.Session的⽣命周期
Session在⽤户第⼀次访问服务器的时候⾃动创建。需要注意只有访问JSP、Servlet等程序时才会创建Session,只访问HTML、IMAGE等静态资源并不会创建Session。如果尚未⽣成Session,也可以使 request.getSession(true)强制⽣成Session。
Session⽣成后,只要⽤户继续访问,服务器就会更新Session的最后访问时间,并维护该Session。⽤户每访问服务器⼀次,⽆论是否读写Session,服务器都认为该⽤户的Session“活跃(active)”了⼀次。
由于会有越来越多的⽤户访问服务器,因此Session也会越来越多。为防⽌内存溢出,服务器会把⻓时间内没有活跃的Session从内存删除。这个时间就是Session的超时时间。如果超过了超时时间没访问过服务器,Session就⾃动失效了。
4.Session和Cookie的区别
(1) Cookie数据保存在客户端,Session数据保存在服务器端。
(2) Session是由应⽤服务器维持的⼀个服务器端的存储空间,⽤户在连接服务器时,会由服务器⽣成⼀个唯⼀的SessionID,⽤该SessionID 为标识符来存取服务器端的Session存储空间。⽽SessionID这⼀数据则是保存到客户端,⽤Cookie保存的,⽤户提交⻚⾯时,会将这⼀SessionID提交到服务器端,来存取Session数据。这⼀过程,是不⽤开发⼈员⼲预的。所以⼀旦客户端禁⽤Cookie,那么Session也会失效。
(3) Cookies是属于Session对象的⼀种。但有不同,Cookies不会占服务器资源,是存在客服端内存或者⼀个Cookie的⽂本⽂件中;⽽Session则会占⽤服务器资源。我们⼀般认为Cookie是不可靠的,Cookies是保存在本机上的,但是其信息的完全可⻅性且易于本地编辑性,往往可以引起很多的安全问题Session是可靠地。但是⽬前很多著名的站点也都⽤Cookie。
MVC
1.谈谈你对 MVC 的理解
M:(Model) 模型 : 应⽤程序的核⼼功能,管理这个模块中⽤的数据和值(bean,dao);
V(View )视图: 视图提供模型的展示,管理模型如何显示给⽤户,它是应⽤程序的外观;(jsp/html)
C(Controller)控制器: 对⽤户的输⼊做出反应,管理⽤户和视图的交互,是连接模型和视图的枢纽。
MVC⽤于将web(UI)层进⾏职责解耦
更多推荐
所有评论(0)