web前端面试题

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

拦截器与过滤器的区别以及他们的执行顺序?

过滤器,是在java web中,你传入的request,response提前过滤掉一些信息,或者提前设置一些参数,然后再传入servlet或者struts的 action进行业务逻辑,比如过滤掉非法url(不是login.do的地址请求,如果用户没有登陆都过滤掉),或者在传入servlet或者 struts的action前统一设置字符集,或者去除掉一些非法字符。

拦截器,是在面向切面编程的,就是在你的service或者一个方法,前调用一个方法,或者在方法后调用一个方法比如动态代理就是拦截器的简单实现,在你调用方法前打印出字符串(或者做其它业务逻辑的操作),也可以在你调用方法后打印出字符串,甚至在你抛出异常的时候做业务逻辑的操作。

拦截器与过滤器的区别:

拦截器是基于java的反射机制的,而过滤器是基于函数回调。

拦截器不依赖与servlet容器,过滤器依赖与servlet容器。

拦截器只能对action请求起作用,而过滤器则可以对几乎所有的请求起作用。拦截器可以访问action上下文、值栈里的对象,而过滤器不能访问。

在action的生命周期中,拦截器可以多次被调用,而过滤器只能在容器初始化时被调用一次

执行顺序:过滤前–拦截前– Action处理–拦截后–过滤后。个人认为过滤是一个横向的过程,首先把客户端提交的内容进行过滤(例如未登录用户不能访问内部页面的处理);过滤通过后,拦截器将检查用户提交数据的验证,做一些前期的数据处理,接着把处理后的数据发给对应的Action;Action处理完成返回后,拦截器还可以做其他过程(还没想到要做啥),再向上返回到过滤器的后续操作。

浅谈HTTP中Get与Post的区别

Http定义了与服务器交互的不同方法,最基本的方法有4种,分别是GET,POST,PUT,DELETE。URL全称是资源描述符,我们可以这样认为:一个URL地址,它用于描述一个网络上的资源,而HTTP中的GET,POST,PUT,DELETE就对应着对这个资源的查,改,增,删4个操作。到这里,大家应该有个大概的了解了,GET一般用于获取/查询资源信息,而POST一般用于更新资源信息。

1.GET请求的数据会附在URL之后(就是把数据放置在HTTP协议头中),以?分割URL和传输数据,参数之间以&相连;POST把提交的数据则放置在是HTTP包的包体中。

2.GET方式提交的数据有数量限制,不同浏览器设置有差别,理论上POST 没有限制,可传较大量的数据。

HTTP状态码(HTTP Status Code)

HTTP状态码摘要说明

成功2××成功处理了请求的状态码。

200 服务器已成功处理了请求并提供了请求的网页。

204 服务器成功处理了请求,但没有返回任何内容。

重定向3××每次请求中使用重定向不要超过 5 次。

301 请求的网页已永久移动到新位置。当URLs发生变化时,使用301代码。搜索引擎索引中保存新的URL。

客户端错误4××表示请求可能出错,妨碍了服务器的处理。

400 服务器不理解请求的语法。

403 服务器拒绝请求。

404 服务器找不到请求的网页。服务器上不存在的网页经常会返回此代码。

服务器错误5××表示服务器在处理请求时发生内部错误。这些错误可能是服务器本身的错误,而不是请求出错。

500 服务器遇到错误,无法完成请求。

503 服务器目前无法使用(由于超载或停机维护)。通常,

这只是暂时状态。

一些常见的状态码为:

200 - 服务器成功返回网页 404 - 请求的网页不存在 503 - 服务不可用

session实现原理是什么?

Session的实现方式有两种,一个是通过cookie,另一个是通过url重写。

1. 通过cookie

Cookie是保存在客户端的一小段信息,服务器在响应请求时可以将一些数据以“键-值”对的形式通过响应信息保存在客户端。当浏览器再次访问相同的应用时,会将原先的Cookie通过请求信息带到服务器端。

在MyEclipse环境下新建一个Web Project,命名为Test,在WebRoot下新建一个名为cookie的jsp页面,代码如下:

Java代码

<%@ page language=”java” import=”java.util.*” pageEncoding=”gb2312″%>

session实现原理

<%

Cookie [] c = request.getCookies();

if(c==null){

out.println(“sorry,cookie is null…”);

}else{

for(int m =0;m

out.println(c

.getName()+” “+c

.getValue()+”
”);

}

}

%>

打开浏览器,在地址栏中输入http://localhost:8080/Test/cookie.jsp,会输出”sorry,cookie is null…”,表明在此次请求信息中没有cookie信息,但在这一过程中,服务器会自动生成一个session(因为session是jsp中的内置对象,如果在servlet中必须显示请求session,才会生成,即HttpSession session = request.getSession();)用以表示此次“会话”,同时将与该session相对应的sessionID以cookie的方式发送给客户端。当客户端再次请求该页面(应用程序)时,会自动将此cookie通过请求信息带到服务器端。因此,当你刷新上一次的请求时,页面会输出一个名为JSESSIONID的cookie,后面就是相应的cookie值,也就是本次“会话”的sessionID,

,当你再次刷新此页面时会得到相同的输出,因为在一次“会话”中,请求信息携带的sessionID与上一次响应的sessionID相一致。存放在客户端的用于保存sessionID的cookie会在浏览器关闭时清除,因此当你重新打开一个浏览器时,第一次的输出依然会是”sorry,cookie is null…”因为服务器认为这是一次新的“会话”,同样当你刷新此页面时,页面会输出一个名为JSESSIONID的cookie,但注意此时后面的cookie值与上一次肯定不相同,因为这是一次新的“会话”。

2. url重写

通过cookie可以很好地实现session,但是如果客户端由于某些原因(比如出于安全考虑)而禁用cookie,在这种情况之下,为了使session能够继续生效,可以采用url重写。url重写很简单,比如我要从1.jsp页面跳转到2.jsp,采用超链接的方式,可以用两种方式:一种如下所示:

2.jsp

相关文档
最新文档