web15问
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了web15问相关的知识,希望对你有一定的参考价值。
1.Http 请求的Get和POSt方式的区别?
答: 理论上:get一般用于获取/查询资源的信息,post一般用于更新数据.但是在实际开发三种没有严格的要求.
区别:(1) 给请求的请求参数会附在URL后,以?分隔;post 请求参数包含在post请求的请求体中
(2) get方式提交的数据是有限的(各大浏览器的规定不一样),post提交没有限制
(3) Post提交方式逼get方式提交更加的安全
2.状态码
200:请求已经成功,请求所希望的响应头或者数据体随此响应返回
302:重定向
304:走缓存
404:请求资源找不到
505:代码错误
3.什么是Servlet?
答:Servlet是Javaweb的三大组件(Servlet,filter,listener)之一,属于动态资源,Servlet的作用是处理请求,服务器会把接收的请求交给Servlet来处理,Servlet中通常需要:
--接收请求的数据
--处理请求
--完成响应
4.Servlet的生命周期
服务器会在Servlet第一次被访问的时候创建Servlet,一个Servlet类,服务器只会创建一个实例对象.在Servlet被创建后,服务器会调用init()方法,这个方法额被调用一次,当服务器每次接收请求时,都会调用service方法,这个方法被多次调用.服务器关闭Servlet才会离去,在服务关闭前,会调用destory()方法.
5.Servlet 的API中forward() 与 redirect()的区别?
(1) 请求转发是一个请求,而重定向是两个请求,
(2) 请求转发后浏览器地址栏不会发生变化,而重定向会有变化,因为重定向是两个请求.
(3) 请求转发的目标只能是本应用中的资源,而重定向目标可以是其他的应用资源.
(4) 请求转发对Aservlet和Bservlet的请求方式是相同的要么是get要么是post,因为请求转发只一个请求;
(5) 重定向的第二个请求一定是GET,因为只有GET请求才能在地址栏中传递参数
6.forward和redirect的区别?
Forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取出来,然后把这些内容再发给浏览器,浏览器不知道服务器发送的内容从哪来的,所以他的地址栏还是原来的,
Redirect就是服务器根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址,一般来说浏览器用刚才请求的所有参数重新请求,所以session和request参数都可以获取.
7.jsp有哪些内置对象?
Jsp有九大内置对象:
--1.request 用户端请求,此请求包含来自get/post请求的参数
表示HttpServletRequest对象,它包含了有关浏览器请求的信息,并且提供了几个用于获取cookie,header和session的数据有用的方法
--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动作的区别?
动态include用jsp:include动作实现
<jsp:include page=include.jsp flush=true/>他总是会检查所含文件的变化,适用于包含动态的页面,并且可以带参数,运行时将页面包含,
静态INCLUDE用include伪代码实现,不会检查所含文件的变化,使用2包含静态页面的<%@ include file=include.html %>.编译时将页面包含.
9.jsp和Servlet的相同点和不同点?有什么联?
Servlet和jsp都是服务的组件,Servlet是一个接口,也是SUn公司提出的一种用户和WEb容器之间通信的标准.由用户实现其中的service()方法提供WEB容器进行调用,从而实现Servlet和WEB容器的之间的交互,所以用户要和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的各个部分都有哪些技术来实现?如何实现?
MVC是model-view-Controller的简写,model代表的是应用的业务逻辑(通过JavaBean,EJB组件的实现),view是应用的表示面(由jsp页面产生),controller是提供应用的处理过程的控制(一般是一个Servlet),通过这种设计模型把应用逻辑,处理过程和显示逻辑分成不同的组件实现.这些组件可以进行交互和重用.
11.session的工作原理?
当首次访问服务端时,服务器调用getSession方法,创建一个session,session保存在服务器端,session的ID保存在客户端(cookie 中保存这个ID)
当第二次访问时,客户端会携带这个ID,服务器通过这个id找到对应的session,如果服务器端有这个session,就无需创建新的session
12.禁用cookie后,session还可以使用吗?
可以,使用URL重写,在每个页面中的每个链接和表单中都添加名为JSessionid的参数,值为当前sessionid.当用户点击链接或提交表单时,服务器也可以通过获取Jsessionid这个参数来得到客户端的sessionid,找到session对象.
13.session和cookie的区别
(1)cookie数据存放在客户端的浏览器上,session数据放在服务器上
(2)Cookie不是很安全,别人可以分析存放在本地上的cookie进行cookie欺骗,考虑带安全应使用session.
(3)Session会在一定时间内保存在服务器上,当访问增多,会比较占用你的服务器的性能,考虑到减轻服务器的性能方面,应当使用cookie
(4)单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie.
(5)Session保存的是对象,cookie中保存的是字符串
13.过滤器和拦截器的区别?
(1) 拦截器是基于Java的反射机制,而过滤器是基于函数回调
(2) 过滤器依赖于Servlet容器,而拦截器不依赖于Servlet容器
(3) 拦截器只能对action请求起作用,而拦截器侧可以对几乎所有的请求起作用,
(4) 拦截器可以访问action上下文,值栈李的对象,而过滤器不能
(5) 在action的声明周期中,拦截器可以多次被调用,而在过滤器只在容器初始化的时候调用一次
14.监听器是什么?
Servlet监听器用于监听一些重要的事件的发生,监听器对象可以在事件发生前,发生后可以做一些必要的处理
1.listener是Servlet的监听器
2.可以见客户端的请求,服务端的操作
3.通过监听器,可以自动激发一些操作,如监听在线用户数量,当增加一个HttpSession时,给在线人数加1
4.编写监听器需要实现相应的接口
5.编写完成后再web.xml文件中配置一下就行,
6.可以在不修改现有的系统的基础上,增加web应用程序生命周期事件的跟踪
15.Filter的生命周期?
服务器启动时会创建filter实例,并且每个类型的filter之创建一个实例,从此不在创建,在创建完filter实例后,会马上调用init()方法完成初始化工作,这个方法只会被执行一次,每次用户访问目标资源的时候都会访问dofilter(),如果需要放行要调用filterChain的dofilter(),如果不调用filterChain的dofilter()方法,目标资源将无法被执行,服务器会在创建filter对象之后,把filter放到缓存中一直使用,通常不会销毁他,一般会在服务器关闭的时候销毁filter对象,在销毁filter对象之前,服务器会调用filter对象的detory()方法,
以上是关于web15问的主要内容,如果未能解决你的问题,请参考以下文章