Java web--jsp/servlet

1.servlet是什么?与jsp的区别联系?

在web容器中运行的服务器端Java程序,主要用来响应http请求。在MVC模式中,一般用于controller(控制器)部分。

首先:jsp是servlet的简化,jsp本质上就是servlet;

其次,jsp更偏向于外部的页面表达,servlet则更倾向于逻辑控制。以MVC设计模式为例子,其中M-modle(javabean), V-view(jsp), C-controller(servlet);

最后,jsp有内置对象(九大内置对象),并且内置对象都是通过HttpServletReques,HttpServletResponse,HttpServlet获得。 servlet则没有内置对象。

2.servlet的生命周期?

实例化--初始化(init方法)--响应请求(调用service方法中对应的doget或dopost方法)--消亡(调用destroy方法)

init方法至始至终只执行一次,因此servlet对象是单实例。

servlet实例化方式?

(1)客户端第一次请求某个Servlet时,系统创建该Servlet的实例,大部分Servlet都是这种Servlet。

(2)在 web.XML 文件中的<Servlet></Servlet>之间添加<loadon-startup>1</loadon-startup>, tomcat 启动时就会实例化 servlet 对象。

3.jsp九大内置对象?

(1)session: 会话级别,与请求有关的会话期

(2)application: 应用程序级别,servlet正在执行的内容

(3)page: jsp页面本身

(4)pageContext: 页面属性管理

(5)config: web应用的配置对象

(6)requst: 封装客户端用户请求,包括post,get

(7)response: 封装服务器对客户端的响应

(8)out: 用于传送回应的输出

(9)exception: 封装页面抛出异常的对象

4.jsp的四种作用域?

page-- request--  session-- application--

page(页面作用域):jsp默认的作用域是page,有效范围是当前页面,即该作用域对象只能在该页面使用,借助pageContext的getAttribute()和setAttribute()方法去传值。页面作用域的对象自客户端请求页面时创建,在页面响应客户端或者请求转发到其他资源时消亡。

request(请求作用域):request在一次请求的全过程中有效,存放于HttpServletReques。其生命周期从客户端发起请求,服务器处理响应,或者将请求forward(转发)到其他页面进行处理而结束。转发的时候,请求的参数和属性依然保有,并不会因为转发而丢失。request作用域对象只能存在于一次请求中,有效范围是当前请求周期。

session(会话作用域):从向服务器发送第一个请求开始,只要页面未关闭,或者会话未过期(默认30min)或者未调用HttpSession的invalidate方法,都属于同一个会话周期。在jsp中,当我们向服务器发送请求,服务器响应请求时会在客户端的cookie中记下一个sessionID,接下来每次请求时都会将sessionID带着发送到服务器,服务器就会比对这个sessionID来判断是否处于同一个会话周期内。只要关闭浏览器,sessionID就会更改。

application(应用程序作用域)application的有效范围是最广的,从应用启动到应用结束。只要tomcat未重启,那么数据在任意一个页面,请求,会话中都是共享的。

5.session和cookie、application的区别?

session和cookie:

(1)session存放于服务器端,cookie存放于客户端;

(2)cookie相较于session来说不是很安全,他人可以通过分析本地cookie来进行cookie欺骗,一般建议比较重要的权限信息存放于session,一般信息存放于cookie;

(3)由于session一段时间内是存放于服务器端上,当访问增多时,会比较占用服务器性能。若考虑减轻服务器性能方面,推荐使用cookie;(4)单个cookie保存数据不超过4k,很多浏览器限制一个站点最多存放20个cookie。

session和application:

(1)对象作用范围不同,session是会话级别的,application是应用程序级别的;

一个用户一个session,每个用户的session都是不同的,同一个用户所访问的网站页面之间共享一个session。

一个应用程序一个application,每个应用程序的application都是不同的,对于同一个应用程序,多个用户之间共享一个application。

(2)生命周期不同,session是只要不关闭浏览器就一直存活,application是不关闭服务器(即应用程序一直开启)就一直存活。

5.Http请求中的get和post方式?

(1)get是从服务器获取数据,post是向服务器传输数据;

(2)get请求是把参数包含在URL中,对用户是可见的,因此不安全;

(3)post请求则是把参数放在request body中,对用户不可见,因此相对安全;

(4)get在URL中携带的参数是有长度限制的,而post没有;

(5)浏览器回退时,get是无害的,而post则会再次提交请求;

(6)get方式请求,浏览器会把http headerdata一并发送出去,服务器响应200;

(7)post方式请求,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200(并不是所有浏览器都会在POST中发送两次包,Firefox就只发送一次)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值