javaweb基础总结

说一说servlet的生命周期

1)构造函数:
只有第一次请求servlet 时,创建servlet 实例,调用构造器,这说明servlet 是单例的,所以又线程安全
问题,只被调用一次
2)init:
只被调用一次,在创建好实例后,立即被调用,用来初始化servlet
3)service:
被多次调用,每次请求都会调用service,实际响应请求。
4)destory:
只被调用一次,在当前servlet 所在的web 应用被卸载前调用,用于释放当前servlet 所占用的资源。

servlet API中forward()与redirect()区别

从地址栏显示来说:
forward是服务器请求的地址资源,通过内部转发方式最后只返回一次内容,而redirect是重新转发,也就是需要经过两次请求与响应
从数据共享来说
forward可以共享request里的数据,而redirect不行,forward是服务器内部的一种操作,而redirect是服务器通知客户端,然后客户端重新发起请求
从运用地方
forward一般用于用户登录的时候,根据角色转发到相应的模块
redirect一般用于用户注销登录时返回主页和跳转到其它的网站
从效率上
forward高,redirect低

request.getAttribute()和request.getParameter()有什么区别

后者取得通过容器的实现来取得通过类似post,get等方式传入的数据
前者返回对象,后者返回字符串

Http中get和post方法区别

1.get请求的数据会被浏览器缓存起来,并以明文方式出现在url中,不太安全而post则更安全
2get传输数据有大小限制get请求的参数会跟在url后进行传递

说说Cookie

http 都是无状态的协议,web 服务器不能识别出哪些请求是同一个浏览器发的,浏览器的每一次请求都是完全独立的
Cookie 放在浏览器端,浏览器第一次范围服务器时,没有cookie,then 服务器给浏览
器一个cookie,以后每次浏览器访问服务器都要带上这个cookie。Jsp 是服务端
<% 1.创建一个cookie 对象Cookie cookie =new Cookie(“name”,”jhb”);
2.调用response 的一个方法把cookie 传输给客户端
Response.addCookie(cookie);%>
默认情况下cookie 是会话级别,存储在浏览器内存中,用户退出浏览器之后被删除,
若希望浏览器将cookie 存在磁盘上,则要使用maxage,并给一个以秒为单位的时间,表示
cookie 的存活时间。
Cookie 作用范围:可以作用当前目录和当前目录的子目录,但不能作用与当前目录的上
一级。
Cookie:在客户端保持http 状态信息的方案,会话跟踪。

说说session

在服务器端保持http 状态信息
当浏览器第一次范围服务器时,没有cookie,服务器也就得不到JSession_id,then 服
务器创建一个session 对象,并返回一个JSession_id 给浏览器,通过cookie 返回,下次浏览
器再访问服务器时就带上cookie(其中有JSession_id),服务器就能找到对应的session 对
象。JSession_id 可以通过cookie 传输,也可以通过url 传送。

一个session,对应一个sessionID

Session:浏览器和服务器的一次会话,若浏览器不关,至始至终都是一个session,因
为用cookie 传送。
当程序需要为某给客户端的请求创建session 时,服务器首先检查这个客户端的请
求是否包含一个session 标识,即JSession_id,如果包含,则说明以前已经为此客户创建过
JSession_id,服务器就按照这个JSession_id 检索出来(若检索不到,可能会新建一个,这种
情况下可能会出现在服务器已经删除了该用户对应的session 对象。但用户人为的在请求的
URL 上附加衣蛾JSession_id 的参数。)如不包含则创建一个session,并生成与这个session
有关的JSession_id,这个JSession_id 将在本次响应中返回给客户端。
默认session 用cookie

若第一次访问某web 应用程序的一个jsp 页面,且该jsp 页面的page 指定session=true,
服务器会创建一个httpsession 对象。
注:关闭浏览器只是使存储在浏览器内存中的session cookie 失效,不会使服务器端的
session 对象失效

xml 解析技术

1)dom:必须在解析之前把整个文档装入内存,处理大型文件时,性能低,适合xml 随机访问。
2)sax:事件驱动,它顺序读取xml 文件,不需要一次全部载入整个文件。当遇到文件开头,文档结束or 标签开头or 标签结束时,他会触发一个事件,用户通过在其回调事件中写入处理代码来处理xml 文件,适合顺序访问

多个请求映射到同一个jsp 页面

1)这几个请求的名字都为xxx.do,all 以.do 结尾的都映射到同一个servlet。
2)用request 获得path,即/xxx.do。
3)去掉后面的.do 和前面的”/”,得到方法名,即xxx。
4)利用反射调用相关方法

Httpsession 生命周期

1)什么时候创建httpsession?
答案:1.是否浏览器访问服务器
的任何一个jsp 或者servlet,服务器都会创建一个httpsession?不一定,设置session=false,
若当前jsp 是客户端访问的当前web 应用的第一个资源,且page 指定的session=false,则服
务器不会为jsp 创建session 对象。若当前jsp 不是客户端访问的当前web 应用的第一个资源,
且其他页面已经创建了其他httpsession 对象,则返回一个和当前会话相关的httpsession 对
象,不创建一个新对象。

2.session=false 是什么意思
当前jsp 页面禁用session 隐含变量,但可以使用其他的显示的httpsession 的对象

3.对于servlet,若servlet 是客户端访问的第
一个web 应用资源,只有调用request.getSession()或除了1 和2 以外,只要访问jsp,则
要创建session 对象。

4.什么时候销毁session 对象
1.直接调用httpsession 的invalidate 方法,该方法使httpsession 失效。
2.当前web 应用被卸载。
3.超出httpsession 的过期时间。

JavaWeb-servlet 监听器

监听器:专门用与对其他对象身上发生的事件或状态的改变进行监听or 相应处理的对象。
当被监视的对象发生情况时,立即采取相应的行动
Servlet 监听器:一种特殊的类,用于ServletContext,httpsession,Servletrequest 等域
对象的创建与销毁事情,以及监听这些对象中的属性发生修改的事件
监听域对象的创建和销毁
创建时间 销毁时间
ServletContext(application) web 应用被加载web 应用被销毁
Httpsession(session)
Servletrequest(request) 每次请求开始时创建每次访问结束后销毁

ServletContextListener 最为常用,监听ServletContext 对象创建or 销毁的Servlet 监听器,可以在当前web 应用被加载时对当前web 应用的相关资源进行初始化,比如:创建数据库连接池
HttpsessionListener:sessioncreated 在session 被创建后调用,sessionDestoryed 在session被销毁前调用。

域对象生命周期

1)request:是一个请求,当一个相应返回时被销毁,发一个请求时被创建
1.forword 只有一个请求,只有一个request
2.response 有两个request
2)session:当第
一次访问web 应用的一个jsp 或Servlet 时,且该jsp 和Servlet 中还需要创建session 对象,
此时服务器会创建一个session 对象
3)application:ServletContext 对象。当前web 应用被
加载时创建,web 应用被卸载时销毁。

说说Filter

1)目的:调用目标资源前让一段代码执行,是否允许用户调用目标资源,调
用目标资源之后让一段代码执行
2)编写java 类,实现filter 接口,配置filter-mapping,
说明对哪些资源进行拦截。
3)每次拦截时,都调用filter 的dofilter 方法
4)filter 创建和销毁由servlet 容器,在web 应用启动时,创建实例,并调用init 方法,filter 对象只创建一
次,init 只执行一次。Destory,容器卸载filter 对象前被调用。
5)用户在配置filter 时,可
以使用为filter 配置一些初始化参数,当web 容器实例化filter 对象时,调用其
init 方法,会把封装了filter 初始化参数的filter config 对象初始化,所以开发人员在写filter
时,可以用filter config 对象的方法来获得初始化对象。
6)应用:统一全站的字符编码;禁止浏览器缓存;实现url 级别的权限认证

说说拦截器

拦截器,在AOP中用于在某个方法或字段被访问之前,进行拦截然后在之前或之后加入某些操作
启动顺序 :监听器 > 过滤器 > 拦截器
拦截器与过滤器的区别:
过滤器Filter依赖于Servlet容器,基于回调函数,过滤范围大。
拦截器Interceptor依赖于框架容器,基于反射机制,只过滤请求

说说集群

1)伸缩性:系统适应不断增长的用户数的能力。
2)高可用性:避免单一服务器的单点失效
3)负载均衡:把请求发给不同服务器
4)失效转移:当一个节点失效后,通过选择集
群中的另一个节点,处理将会继续而不会终止。httpssession 失效转移,用来保证当某台服
务器失效以后,会话状态不会丢失,为了支持会话转移,web 服务器将在一定的时候把会话
对象备份到其他地方,以防丢失。这个其他地方有jdbc 数据库、其他所有服务器、任意选
择其他一台web server、中央server

Ajax的实现流程是主怎样的

1创建XMLHttpRequest对象,也就是创建一个异步调用对象
2.创建一个新的HTTp请求,并指定该HTTP请求的方法,url及验证信息
3设置http请求状态变化的函数
4.发送HTTp请求
5获取异步调用返回的数据
6.使用javascript和DOM实现局部刷新

热评文章