JAVA常见笔试面试总结(六)(Servlet和JSP)

Servlet

1.Servlet的基本概念
运行在JAVAWeb服务器上面的java类
2.什么是Servlet容器?
为JAVA应用程序提供运行时环境,管理Servlet和JSP的生命周期,也称为JAVAWeb应用容器,例如:Tomcat,可以创建Servlet,并调用Servlet的相关生命周期方法
3.Servlet生命周期的方法都有哪些?
这些方法都是由Servlet容器调用的
构造器:只被调用一次,只有第一次请求Servlet的时候,创建Servlet的实例,说明Servlet是单实例的
init方法:只被调用一次,在创建好实例后立刻被调用,用于初始化Servlet
service方法:被调用多次,用于响应请求
destroy方法:只被调用一次,用于释放当前Servlet所占有的资源
4.一些重要参数
load-on-startup参数(servlet标签中):配置在Servlet节点中,可以指定Servlet创建的时间,若是负数,则在第一次请求Servlet时被创建,若为正数或0,则在Servlet容器被启动时创建,而且数字越小越早创建
init-param参数(servlet标签中):主要用于配置Servlet初始化参数,可以在init()方法中通过ServletConfig参数获取
context-param(与servlet标签并列):主要用于配置WEB应用的初始化参数
5.ServletContext(代表WEB应用)的作用
可以获取WEB应用的初始化参数
可以获取WEB应用上面的一个文件在服务器上的绝对路径(文件在WEB-INF下)
可以获取当前WEB应用的名称
可以获取当前WEB应用的某一个文件对应的输入流(文件在src下)
6.简单描述HTTP协议
超文本传输协议,用于定义WEB浏览器和WEB服务器之间交换数据的过程以及数据本身的格式
请求信息的结构:请求行,消息头,实体内容
响应消息结构:状态行,消息头,实体内容
7.GenericServlet和HttpServlet
GenericServlet:是一个Servlet,是Servlet接口和ServletConfig接口的实现类,其中service方法是抽象方法,主要目的是让其他Servlet类继承GenericServlet抽象类简化开发
HttpServlet:是一个Servlet,继承自GenericServlet,针对HTTP协议定制,可以直接获得HttpServletRequest和HttpServletResponse
8.Cookie
完成会话跟踪的一种机制,在浏览器访问服务器时,由服务器在HTTP响应头中附带一个小的文本文件传递给浏览器,一旦浏览器保存啦Cookie,那么浏览器每次访问服务器时都会在HTTP请求头中将Cookie传递给服务器
9.会话Cookie和持久Cokkie
不设置过期时间,就是会话Cookie,保存在内存中,而持久Cookie存在于硬盘中,当浏览器关闭,会话Cookie消失,再次开启浏览器持久Cookie一直存在直到时间终止
10.Cookie的作用范围
当前目录和当前目录子目录,可以通过cookie.setPath(request.getContextPath)修改
11.Session
概念:在服务端保持HTTP状态信息的方案
使用Session的两种方式:使用Cookie来追踪Session,URL重写
需要注意的两点:
一.并不是客户端第一次访问服务端就一定会产生Session,有可能存在被访问JSP禁用Session,如果第一次访问的是Servlet必须调用getSession方法才会获取Seesion
二.并不是关闭浏览器就一定把Session销毁,存在持久化Cookie的可能
12.WEB应用中的过滤器(Filter)
可以对发送到Servlet的请求进行拦截,也可以对响应进行拦截
一般的应用:检验用户登录的过滤器
13.WEB应用中的Listener(监听器)
监听域对象自身(request,Httpsession,application)的创建和销毁的事件监听器(常用)
ServletContextListener,ServletRequestListener,HttpSessionListener

监听绑定到HttpSession域中的某个对象的状态的事件监听器
HttpSessionBindingListener:监听实现啦该接口的java类的对象被绑定到session或者从session解除绑定的事件
HttpSessionActivationListener:监听实现啦该接口和Serializable接口的java类的对象随session钝化(向磁盘写入session对象)和活化事件
14.WEB应用中的过滤器(Filter)和拦截器(interceptor)
①拦截器是基于动态代理的,而过滤器是基于函数回调。
②拦截器不依赖于servlet容器,通过动态代理实现,过滤器依赖于servlet容器。
③拦截器可以在方法前后,异常前后等调用,而过滤器只能在请求前和请求后各调用一次。
④拦截器可以利用依赖注入,因此在Spring框架程序中,优先拦截器。
15.session 和 cookie 有什么区别?
一.存储位置不同:session 存储在服务器端;cookie 存储在浏览器端。
二.安全性不同:cookie 安全性一般,在浏览器存储,可以被伪造和修改。
三.容量和个数限制:cookie 有容量限制,每个站点下的 cookie 也有个数限制。
四.存储的多样性:session 可以存储在 Redis 中、数据库中、应用程序中;而 cookie 只能存储在浏览器中。
16.说一下 session 的工作原理?
session 的工作原理是客户端登录完成之后,服务器会创建对应的 session,session 创建完之后,会把 session 的 id 发送给客户端,客户端再存储到浏览器中。这样客户端每次访问服务器时,都会带着 sessionid,服务器拿到 sessionid 之后,在内存找到与之对应的 session 这样就可以正常工作了。

JSP

1.基本概念
JSP就是一个Servlet,与html结合的Servlet
2.九大内置对象及其作用
request:该对象代表啦客户端的请求信息,主要接受通过HTTP协议传送到服务器的数据,request对象的作用域是一次请求
response:response 代表的是对客户端的响应,主要是将JSP容器处理过的对象传回到客户端。response对象也具有作用域,它只在JSP页面内有效
session:session对象是由服务器自动创建与用户请求相关的对象。服务器会为每一个用户创建一个session对象用来保存用户信息,跟踪用户操作。该对象内部使用Map类来保存数据,因此它的数据类型是key-value形式。
out:out 对象用于在Web浏览器内输出信息,并且管理应用服务器上的输出缓冲区。在使用 out 对象输出数据时,可以对数据缓冲区进行操作,及时清除缓冲区中的残余数据,为其他的输出让出缓冲空间。待数据输出完毕后,要及时关闭输出流。
config:config 对象的主要作用是取得服务器的配置信息,就是ServletConfig
exception:exception 对象的作用是显示异常信息
application:application 对象可将信息保存在服务器中,直到服务器关闭,否则application对象中保存的信息会在整个应用中都有效。与session对象相比,application对象生命周期更长,类似于系统的“全局变量”。就是ServletContext
page:page 对象代表JSP本身,只有在JSP页面内才是合法的
pageContext:pageContext 对象的作用是取得任何范围的参数,通过它可以获取 JSP页面的out、request、reponse、session、application 等对象。pageContext对象的创建和初始化都是由容器来完成的,在JSP页面中可以直接使用 pageContext对象。
3.四大作用域
page作用域:page作用域表示只在当前页面有效
request作用域:request表示一次客户端的请求。一次请求的生命周期从客户端发起到服务器接收并响应该请求,或者将该请求forward到另一个页面或者Servlet进行处理而结束。
session作用域:当我们向服务器发送第一个请求开始,只要页面不关闭,或者会话未过期(默认30分钟),或者未调用HttpSession的invalidate()方法,接下来的操作都属于同一次会话的范畴。
application作用域:application的作用域是最广的,它代表着整个Web应用的全局变量,对每一个页面,每一个Servlet都是有效的。
4.转发与重定向
本质区别:转发是一次请求,重定向是两次请求
转发:地址栏未改变,可以获取到用户请求中发送的数据,只能转发到当前WEB应用的资源,/代表当前WEB应用的根目录
重定向:地址栏发生改变,不可以获取到用户请求中发送的数据,可以重定向到任何资源,/代表当前WEB站点的根目录
5.JSP指令
并不直接产生任何可见的输出,只是告诉引擎如何处理JSP页面的其他部分
重要的指令:page(用于定义JSP页面的各种属性),include(通知JSP引擎在翻译当前JSP页面时,将其他文件内容合并进入当前的JSP中,并转换成一个Servlet,又叫静态引入),taglib(导入第三包)
6.EL表达式
一种为啦简化JSP代码而存在的表达式语言,${}
其中有一些常用的隐式对象:
与范围有关的:pageScope,requestScope,sessionScope,applicationScope
与输入有关:param,paramValues
其他的:cookie,header,herderValues,initParam,pageContext

你可能感兴趣的:(面试)