web面试题整理

目录

谈谈你对http协议的理解,http 常见的状态码有哪些

GET 和 POST 的区别

http 中重定向和请求转发的区别

Cookie 和 Session
区别

​​​​​​什么是 jsp?什么是 Servlet?jsp 和 Servlet 有什么区别?

jsp 有哪些域对象和内置对象及他们的作用

过滤器和监听器是什么,有什么用

谈谈你对 ajax 的认识?

HTTP的方法有哪些?HTTP的状态码200、302、403、500、503含义分别是什么?


谈谈你对http协议的理解,http 常见的状态码有哪些

1. http:超文本传输协议,是无状态协议,对于事务处理没有记忆能力。也就是说,当客户端一次http请求完成后,客户端再发送一次http请求,http并不知道当前客户端是一个“老用户”。使用cookie来解决无状态问题。

2. 常见的http方法有

        GET:通过URL传参给服务器

        POST:用于传输信息给服务器

        PUT:传输文件,保存到对应URI位置

        DELETE:删除文件,删除对应URI位置的文件

        HEAD:获得报头首部,一般用于验证URI是否有效

        OPTIONS:查询相应URI支持的http方法

        当然也不是绝对的,比如可以使用POST新增数据,PUT修改数据,GET获取数据,DELETE删除数据

3. 一次完整的http流程(7个步骤)

1) 建立TCP连接

2) web浏览器向web服务器发送请求行

       一旦建立了TCP连接,web浏览器就会向web服务器发送请求命令

        如:GET/sample/hello.jsp

3) web浏览器发送请求头

       浏览器发送其请求命令后,还要以头信息的形式向web服务器发送一些别的信息,之后浏览器发送一空白行来通知服务器,它已经结束了该头信息的发送。

4) web服务器应答

       应答的第一部分是协议的版本号和应答状态码

5) web服务器发送应答头

       正如客户端会随同请求发送关于自身的信息一样,服务器也会随同应答向用户发送关于它自己的数据。

       web服务器向浏览器发送头信息后,它会发送一个空白行来表示头信息发送到此结束。

6) web服务器向浏览器发送数据

       接着,它就以Cotent-Type应答头信息所描述的格式发送用户所请求的实际数据。

7) web服务器关闭TCP连接

4. URIURL

URI:统一资源标识符,用来唯一的标识一个资源

URL:统一资源定位符,是一种具体的URI。即URL可以用来标识一个资源,而且还指明如何定位这个资源

5. 常见的http相应状态码

200:请求被正常处理

400:请求报文语法有错,服务器无法识别

404:服务器无法找到对应资源

500:服务器内部错误

301:永久重定向

302:临时重定向

1XX系列:代表请求已被接受,需要继续处理;

2XX系列:代表请求已成功被服务器接收、理解并接受;

3XX系列:用来重定向;

4XX系列:表示请求错误;

5XX系列:代表服务器在处理请求过程中有错误或者异常发生。

GET 和 POST 的区别

GET

POST

请求参数的位置上

请求参数放在URL地址后面,以?的形式进行拼接

请求参数放在http请求包中

数据携带上

在URL地址后附带的参数是有限的,其数据容量通常不能超过1k

在请求的实体内容中向服务器发送数据,传输的数据量无限制

用途上

一般用来获取数据

一般用来提交数据

传输的数据类型

只能传输字符串类型

可以传输各种类型的数据,包括对象

速度

GET方式比POST方式快

http 中重定向和请求转发的区别

重定向:redirect

请求转发:forward

用法不同

Response.sendRedirect(“地址”)

Request.getRequestDispatcher(“地址”).forward(request,respose);

发送位置不同

发生在浏览器

发生在服务器,转发对浏览器透明,浏览器不知道转发的动作

地址栏

变化

不变

速度

跳转的时间不同

整个页面执行完之后才执行跳转

执行跳转语句时就会立即跳转

是否是同一个请求

否,request域对象无效

能够去往的URL的范围不一样

是服务器跳转,可以去往任何资源

必须在同一台服务器下完成

传输的数据类型不同

只能传递字符串

可以传输各种类型的数据,包括对象

Cookie 和 Session
区别

Cookie

Session

从存储方式上

只能存储字符串,如果要存储非ASCII字符串还要对其编码

可以存储任何类型的数据,可以把session看作是一个容器

从隐私安全上

cookie存储在浏览器中,对客户端是可见的。信息容易泄露出去,如果使用cookie,最好将其加密

session存储在服务器上,对客户端是透明的。不存在敏感信息泄露问题

从有效期上比较

保存在硬盘中,只要设置maxAge属性为比较大的正整数,即使关闭浏览器,cookie仍然存在

保存在服务器,设置maxInactiveInterval属性值来确定session的有效期。并且session依赖名为JSESSIONID的cookie,该cookie默认的maxAge属性为-1,如果关闭浏览器,session失效

从对服务器的负担比较

不占用服务器资源

像baidu,Sina这样大型的网站,一般使用cookie进行会话跟踪

每个用户都会产生一个session,当很多用户并发访问时,会消耗大量内存

从浏览器的支持上比较

如果浏览器禁用了cookie,那么cookie就是无用的了

如果浏览器禁用了cookie,session可以通过URL地址重写来进行会跟踪

从跨域名上比较

可以设置domin属性来实现跨域名,Servlet中通过setDomain()设置

只在当前域名内有效

大小限制

Cookie最多有50个,一个Cookie 4kb

​​​​​​什么是 jsp?什么是 Servlet?jsp 和 Servlet 有什么区别?

1. jsp:全称为java server pages,是一种动态网页开发技术

它使用JSP标签在HTML网页中插入Java代码,标签通常以<%开始%>结束;

Jsp本质上是一个servlet,jsp编译时,会首先编译成servlet文件,然后编译成class文件。

包含9大内置对象,4大域对象

       内置对象:request,response,session,application,page,pageContext,config,exception,out

       作用域:request,session,application,pageContext

2. Servlet:是一个web容器,是一种独立于平台和协议的服务端的java技术,可以动态生成web页面

Servelt生命周期

       1)加载servlet

            当tomcat第一次访问servlet的时候,tomcat会负责创建servlet实例

       2)初始化

            当servlet被实例化后,tomcat会调用init()方法初始化这个对象,只会初始化一次

       3)处理服务

            当浏览器访问servlet的时候,调用service()方法处理请求

       4)销毁

            释放servlet所占的资源,销毁方式有:手动销毁和关闭服务器销毁

3. 区别

JSP是servlet技术的扩展,本质上就是servlet的简易方式

最大的不同点在于

        Servlet的应用逻辑在java文件中,并且完全从表示层中的HTML里分离出来;

        JSP可以是java和html组合成一个扩展名为.jsp的文件

JSP侧重于视图,servlet主要用于控制逻辑

jsp 有哪些域对象和内置对象及他们的作用

jsp9大内置对象和4大域对象

1. 4大域对象

        request,作用于同一个请求之内

        session,作用于一个会话的生命周期内

        application,作用于整个应用,为所有会话所共享

        pageContext,作用于当前页面

        作用范围从大到小依次为:application>session>request>pageContext

2. 9大内置对象

        request,对应servlet中HttpServletRequest

        response,对应servelt中HtppServletResponse

        session,对应servelt中HttpSession

        application,对应servlet中ServletContext

        config,对应servlet中ServletConfig

        注:这5个对象和servletAPI是一样的

        page,代表当前JSP页面,相当于普通java类的this

        pageContext,代表JSP页面编译后的内容,封装了对其他8大内置对象的引用,可通过它获取其他8大内置对象

        exception,是java.lang.Exception类的对象,封装了JSP页面抛出的异常信息

        out,用于向浏览器输出数据,out对象的类型是JspWriter(可理解为是带缓存的PrintWriter)

过滤器和监听器是什么,有什么用

1. 过滤器(filter)

        过滤器是一个驻留在服务器端的web组件,它可以截取客户端和服务器之间请求与响应信息,并对这些信息进行过滤。

        常见的过滤器用途主要包括:对用户请求进行统一认证,对用户的请求进行记录和审核,对响应内容进行压缩以减少传输量等

2. 监听器(listener)

        监听器就是application、session、request三个对象的创建、销毁或者往其中添加修改属性时自动执行代码的功能组件。

        常见的有:

        监听对象创建于销毁,有:ServletContextListener,HttpSessionListener,ServletRequestListener

        监听对象属性添加删除和替换,有:ServletContextAttributeListenerHttpSessionAttributeListener;ServletRequestAttributeListener

        常见的监听器用途主要包括:网站在线人数技术以及监听用户的行为(管理员踢人)

3. 区别

        过滤器依赖底层web容器

        监听器不依赖容器

谈谈你对 ajax 的认识?

Ajax,是异步javascript和xml,是一种创建交互式应用的网页开发技术,实现客户端与浏览器,可以在不必刷新整个浏览器的情况下,与服务器进行异步通讯的技术。

Ajax的底层原理是基于XMLHttpRequest对象

Ajax实现流程:

1. 创建XMLHttpRequest对象,也就是创建一个异步调用对象

2.创建一个新的http请求,并指定该http请求的方法、url及验证信息

3.设置回调函数

4.发送请求

5.使用异步调用返回的数据

6.将数据渲染到页面上,使用javasrcipt和dom实现局部刷新

XMLHttpRequest对象详解

属性

1. onreadystatechange:请求状态改变事件触发器(readyState变化时会调用此方法),一般用于指定回调函数。

2. readyState:请求状态readyState一改变,回调函数被调用

        5个状态:0,1,2,3,4

        0:未初始化

        1:open方法成功调用以后

        2:服务器已经成功应答客户端的请求

        3:交互中。http头信息已经接收,响应数据尚未接收

        4:完成,数据接收完成

3. responseText:服务器返回的文本内容

4. responseXML:服务器返回的兼容DOM的XML内容

5. status:服务器返回的状态码

6. statusText:服务器返回状态码的文本信息

方法(常用)

1. open(),创建http请求

2. setRequestHeader(),设置消息头

3. send(),发送请求给服务器,传递数据

案例

<button id="sub">请求</button>

        <div id="div"></div>

        <script type="text/javascript">

            window.onload = function() {

                var xhr;

                var sub = document.getElementById("sub");

                sub.onclick = function() {

                    console.log("sub");

                    // 1.创建请求对象

                    if(window.XMLHttpRequest) {

                        // 在ie6以上版本以及其他内核浏览器(mozilla等)

                        xhr = new XMLHttpRequest();

                    } else if(window.ActiveXObject) {

                        // ie6以下版本

                        xhr = new ActiveXObject();

                    }



                    // 2.新建一个请求

                    xhr.open("GET", "ajax.action", true);



                    // 3. 指定回调函数

                    xhr.onreadystatechange = acceptMsg;



                    // 4. 发送请求

                    xhr.send();

                }



                // 回调函数

                function acceptMsg() {

                    console.log("acceptMsg");

                    // 判断请求状态码是否为4【数据接收完成】,并且状态码是否为200

                    if(xhr.readyState == 4 ) {

                        console.log("icydate");

                        if(xhr.status == 200){

                            // 5. 得到服务器返回的文本数据

                            var text = xhr.responseText;

                            // 6. 把服务器返回的数据写到页面上

                            var div = document.getElementById("div");

                            div.innerText = text;

                        }

                    }

                }

            }

        </script>



@RequestMapping("/ajax.action")

public void ajax(String username,HttpServletResponse response) throws IOException {

    System.out.println("AjaxTest.ajax()");

    PrintWriter writer = response.getWriter();

    writer.write("success");

}

HTTP的方法有哪些?HTTP的状态码200、302、403、500、503含义分别是什么?

get/post/put/delete/head/options

200:一切正常

301:永久重定向

302:临时重定向

403:表示资源不可用。服务器理解客户的请求,但拒绝处理它,通常由于服务器上文件或目录的权限设置导致的WEB访问错误。

404:找不到资源

500:服务器内部错误

503:HTTP状态码,是服务器出错的一种返回状态

  • 13
    点赞
  • 117
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值