web15问

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了web15问相关的知识,希望对你有一定的参考价值。

1.Http 请求的GetPOSt方式的区别?

: 理论上:get一般用于获取/查询资源的信息,post一般用于更新数据.但是在实际开发三种没有严格的要求.

区别:(1) 给请求的请求参数会附在URL,?分隔;post 请求参数包含在post请求的请求体中

(2) get方式提交的数据是有限的(各大浏览器的规定不一样),post提交没有限制

(3) Post提交方式逼get方式提交更加的安全

2.状态码

200:请求已经成功,请求所希望的响应头或者数据体随此响应返回

302:重定向

304:走缓存

404:请求资源找不到

505:代码错误

3.什么是Servlet?

:ServletJavaweb的三大组件(Servlet,filter,listener)之一,属于动态资源,Servlet的作用是处理请求,服务器会把接收的请求交给Servlet来处理,Servlet中通常需要:

--接收请求的数据

--处理请求

--完成响应

4.Servlet的生命周期

服务器会在Servlet第一次被访问的时候创建Servlet,一个Servlet,服务器只会创建一个实例对象.Servlet被创建后,服务器会调用init()方法,这个方法额被调用一次,当服务器每次接收请求时,都会调用service方法,这个方法被多次调用.服务器关闭Servlet才会离去,在服务关闭前,会调用destory()方法.

5.Servlet APIforward() redirect()的区别?

(1) 请求转发是一个请求,而重定向是两个请求,

(2) 请求转发后浏览器地址栏不会发生变化,而重定向会有变化,因为重定向是两个请求.

(3) 请求转发的目标只能是本应用中的资源,而重定向目标可以是其他的应用资源.

(4) 请求转发对AservletBservlet的请求方式是相同的要么是get要么是post,因为请求转发只一个请求;

(5) 重定向的第二个请求一定是GET,因为只有GET请求才能在地址栏中传递参数

6.forwardredirect的区别?

Forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取出来,然后把这些内容再发给浏览器,浏览器不知道服务器发送的内容从哪来的,所以他的地址栏还是原来的,

Redirect就是服务器根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址,一般来说浏览器用刚才请求的所有参数重新请求,所以sessionrequest参数都可以获取.

7.jsp有哪些内置对象?

Jsp有九大内置对象:

--1.request 用户端请求,此请求包含来自get/post请求的参数

表示HttpServletRequest对象,它包含了有关浏览器请求的信息,并且提供了几个用于获取cookie,headersession的数据有用的方法

--2.response 网页传回用户端的回应

HttpServletResponse对象,并且提供了几个用于设置送回浏览器的响应的方法(cookie,头信息等)

--3.pageContext 网页的属性是在这里管理

表示一个javax.Servlet.jsp.PageContext对象,它用于方便存取各种范围的名字空间,Servlet相关的对象的API,并且包装了通用的Servlet相关功能的方法.

--4.session 与请求有关的会话期

表示一个请求的Javax.Servlet.http.HttpSession对象.Session可以存储用户的状态的信息

--5.application Servlet正执行的内容

表示一个javax.Servlet.ServletContext对象.这有助于查找有关servlet引擎和Servlet环境的信息

--6.out 用来传送回应的输出

--7.config Servlet的构架部件

Javax.Servlet.ServletConfig对象,该对象用于存取Servlet实例的初始化参数.

--8.page jsp网页本身

表示从页面产生一个Servlet实例

--9.exception 针对错误的网页,未捕获的例外

8.jsp中的INCLUDE与静态INCLUDE动作的区别?

动态includejsp:include动作实现

<jsp:include page=include.jsp flush=true/>他总是会检查所含文件的变化,适用于包含动态的页面,并且可以带参数,运行时将页面包含,

静态INCLUDEinclude伪代码实现,不会检查所含文件的变化,使用2包含静态页面的<%@ include file=include.html %>.编译时将页面包含.

9.jspServlet的相同点和不同点?有什么联?

Servletjsp都是服务的组件,Servlet是一个接口,也是SUn公司提出的一种用户和WEb容器之间通信的标准.由用户实现其中的service()方法提供WEB容器进行调用,从而实现ServletWEB容器的之间的交互,所以用户要和WEB容器进行通信是必须实现这总标准,jsp规范规定,有容器翻译好的JAVA类必须实现HttpJspPage接口,而这个接口是Servlet的子接口,从这个意义上说,jsp本质上还是Servlet.

Jsp重在表示,解决了Servlet页面输出困难的问题.Servlet重在业务的处理,避免在页面出现过多的业务处理带来的阅读性和维护性的困难,他们可以很好的结合,jsp侧重于视图,Servlet主要用于控制逻辑,Struts框架中,jsp位于MVC设计模式的视图层,而Servlet位于控制层.

Servlet编写后需要在WEB应用的web.xml进行注册,从而能让WEB容器识别用户编码的Servlet.jsp由容器来管理,所以无需注册,jsp在编译后成一个Servlet.

10.MVC的各个部分都有哪些技术来实现?如何实现?

MVCmodel-view-Controller的简写,model代表的是应用的业务逻辑(通过JavaBean,EJB组件的实现),view是应用的表示面(jsp页面产生),controller是提供应用的处理过程的控制(一般是一个Servlet),通过这种设计模型把应用逻辑,处理过程和显示逻辑分成不同的组件实现.这些组件可以进行交互和重用.

11.session的工作原理?

当首次访问服务端时,服务器调用getSession方法,创建一个session,session保存在服务器端,sessionID保存在客户端(cookie 中保存这个ID)

当第二次访问时,客户端会携带这个ID,服务器通过这个id找到对应的session,如果服务器端有这个session,就无需创建新的session

12.禁用cookie,session还可以使用吗?

可以,使用URL重写,在每个页面中的每个链接和表单中都添加名为JSessionid的参数,值为当前sessionid.当用户点击链接或提交表单时,服务器也可以通过获取Jsessionid这个参数来得到客户端的sessionid,找到session对象.

13.sessioncookie的区别

(1)cookie数据存放在客户端的浏览器上,session数据放在服务器上

(2)Cookie不是很安全,别人可以分析存放在本地上的cookie进行cookie欺骗,考虑带安全应使用session.

(3)Session会在一定时间内保存在服务器上,当访问增多,会比较占用你的服务器的性能,考虑到减轻服务器的性能方面,应当使用cookie

(4)单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20cookie.

(5)Session保存的是对象,cookie中保存的是字符串

13.过滤器和拦截器的区别?

(1) 拦截器是基于Java的反射机制,而过滤器是基于函数回调

(2) 过滤器依赖于Servlet容器,而拦截器不依赖于Servlet容器

(3) 拦截器只能对action请求起作用,而拦截器侧可以对几乎所有的请求起作用,

(4) 拦截器可以访问action上下文,值栈李的对象,而过滤器不能

(5) action的声明周期中,拦截器可以多次被调用,而在过滤器只在容器初始化的时候调用一次

14.监听器是什么?

Servlet监听器用于监听一些重要的事件的发生,监听器对象可以在事件发生前,发生后可以做一些必要的处理

1.listenerServlet的监听器

2.可以见客户端的请求,服务端的操作

3.通过监听器,可以自动激发一些操作,如监听在线用户数量,当增加一个HttpSession,给在线人数加1

4.编写监听器需要实现相应的接口

5.编写完成后再web.xml文件中配置一下就行,

6.可以在不修改现有的系统的基础上,增加web应用程序生命周期事件的跟踪

15.Filter的生命周期?

服务器启动时会创建filter实例,并且每个类型的filter之创建一个实例,从此不在创建,在创建完filter实例后,会马上调用init()方法完成初始化工作,这个方法只会被执行一次,每次用户访问目标资源的时候都会访问dofilter(),如果需要放行要调用filterChaindofilter(),如果不调用filterChaindofilter()方法,目标资源将无法被执行,服务器会在创建filter对象之后,filter放到缓存中一直使用,通常不会销毁他,一般会在服务器关闭的时候销毁filter对象,在销毁filter对象之前,服务器会调用filter对象的detory()方法,

以上是关于web15问的主要内容,如果未能解决你的问题,请参考以下文章

EMC经典问答85问(15-18问)

Android 线程与消息 机制 15问15答

UI设计师必备 | Web响应式设计规范及测试预览工具

10万字+ ,灵魂 15 问,Java 内卷 的 开发手册(嵩山版)

面试时常问的15个MySQL数据库查询语句

什么时候不使用 Google Web Toolkit?