Servlet的继承,生命周期,Http协议(二)

http是无状态的:

解决http无状态的方法:会话跟踪

session保存作用域:

6.服务器内部转发和重定向

1.服务器内部转发:

2.客户端重定向:


===========================================================================================================================================================================================

1.设置编码

======

在xml文件配置中,一个servlet可以对应多个mapping,意义在于,可以看到用户是采用何种路径访问

一个mapping 只能对应一个servlet

tomcat8之前:

(1.如果是post传递方法:

request.setCharacterEncoding(“UTF-8”);

(2.如果是get传递方法

1.先将数据转换成字节数组

String name = request.getParameter(“name”);

byte[] by = name.getBytes(“ISO-8859-1”);

2.将字节数组按照设定的编码格式转成成字符串

name = new String(by,“UTF-8”);

tomcat8之后:

只针对post方法:request.setCharacterEncoding(“UTF-8”);

2.servlet的生命周期

=================

服务器的开启到服务器的关闭

默认情况下:

第一次接受请求时,servlet会进行初始化(init()),实例化(servce())

而后每次刷新关闭网页等操作都是在调用servce()服务方法

直到服务器的关闭,servlet的生命周期结束,销毁方法(destory())

第一次请求时,tomcat会进行实例化,初始化,然后在服务,而后每次服务都是这个实例对象在执行

优点


只创建一次对象,提高效率,减少服务器负担

缺点


第一次服务时,耗时较长

-如果需要提高系统的启动速度,当前默认状态就可以,

-如果要提高servlet的响应速度,应该设置servlet的响应时机。

设置servlet的响应时机:


**在xml中的servlet中设置1设置初始化和实例化的时间

时间越小,初始化和实例化的时间就越早,**

采用此标签,初始化和实例化都是在tomcat启动时执行

当第一个用户访问时,就会直接服务不会在进行初始化和实例化,启动速度变慢,但服务响应速度变快,提高用户体验

Servlet在服务器中:单例的,线程不安全的


单例:只有一个servlet实例

线程不安全:当多个线程访问,如果一个线程修改了servlet中的一个变量,可能会导致其他线程的逻辑路径发生变化

因此,在servlet类中不要定义与逻辑有关的变量,并且不要修改变量

3.servlet的继承关系

=================

HttpServlet抽象类 继称 ——> javax.servlet.GenericServlet抽象类 实现 ——> Servlet接口

1.Servlet接口中的三个抽象方法


init(ServletConfig var1);初始化方法

void service(ServletRequest var1, ServletResponse var2);服务方法

void destroy();销毁方法

2. javax.servlet.GenericServlet抽象类中的方法实现了了Servlet中的三个抽象方法,但任然是抽象的方法

3.HttpServlet抽象类中的实现了接口中的方法;

404:出错未找到相应的页面

405:method的方式默认为doget,如果继承HttpServlet却重写的方法不对,就会报错405,method亲求方式出错

500:服务器内部错误

200:正常响应

302:重定向

4.Http协议

===========

http协议:超文本传输协议

http是无状态的

http包括请求和响应

1.请求:包括1).请求行 2).请求头  3).请求体

1).请求行:

1,请求方法

2.请求的url

3.请求的协议:(一般为http1.1)

2).请求头:

包括客户端想服务器发送的浏览器版本,端口号,请求内容等等

3).请求体:

1).get方式:没有请求体 有queryString

2).post方式:有请求体 form data

3).json方式:request payload

2.响应:

1).响应行

包括:协议,响应码(200),响应状态

2).响应头

包括:服务器的信息(版本信息,),响应内容的大小,格式,等

3).响应体

具体响应的内容及具体的页面信息。

5.会话

=======

http是无状态的:


是指服务器无法区分请求是否来自于同一个客户端

无状态导致:可能会发生混乱,服务器将A客户端发来的请求响应到B客户端

解决http无状态的方法:会话跟踪



protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

        req.setCharacterEncoding("UTF-8");

        HttpSession id = req.getSession();

        System.out.println("创建的session id为:"+id);

    }


### 最后

总而言之,面试官问来问去,问的那些Redis知识点也就这么多吧,复习的不够到位,知识点掌握不够熟练,所以面试才会卡壳。将这些Redis面试知识解析以及我整理的一些学习笔记分享出来给大家参考学习

还有更多学习笔记面试资料也分享如下:

![都是“Redis惹的祸”,害我差点挂在美团三面,真是“虚惊一场”](https://img-blog.csdnimg.cn/img_convert/63b1a1cf4941cd2e6685ff1d81f699c0.webp?x-oss-process=image/format,png)


 {

        req.setCharacterEncoding("UTF-8");

        HttpSession id = req.getSession();

        System.out.println("创建的session id为:"+id);

    }


### 最后

总而言之,面试官问来问去,问的那些Redis知识点也就这么多吧,复习的不够到位,知识点掌握不够熟练,所以面试才会卡壳。将这些Redis面试知识解析以及我整理的一些学习笔记分享出来给大家参考学习

还有更多学习笔记面试资料也分享如下:

[外链图片转存中...(img-1l0fHeds-1719562031706)]


  • 15
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值