Servlet知识题大纲 (面试知识点)

一、什么是Servlet?

Java Servlet 是运行在 Web 服务器或应用服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层。

servlet的传输方式:

  • request:请求

  • response:响应

  • 注意:

  • 1、java是以流的形式往外输出的

  • 2、servlet使用最简单的字符打印流往外输出

二、跳转页面的两种方式

重定向

概念:让用户重新请求一个新的页面,所以,是用户发起一个新的请求

  • 1、页面上的URL定位 / 指的是web资源路径127.0.1.1 :8080
  • 2、他是一个新的请求,所以在浏览器上,你可以看到url地址发生了变化
  • 3、及时一个新的请求,那么和他之前的requset请求是不同的对象
  • 4、url会有两个,一次请求一次响应

请求转发:

概念:请求转发的意思是,服务器直接进行跳转,所以用户浏览器是不知道最终要跳转到那个页面上的

  • 1、既然是服务器跳转,所以 / 是根据服务器的url来定位的。 / 指的是127.0.0.1:8080/工程名
  • 2、服务器跳转,浏览器是不知道的,所以url地址看不到最后的变化
  • 3、request始终都只有一个

三、http协议

概念:HTTP是hypertext transfer protocol(超文本传输协议)的简写,它是TCP/IP协议的一个应用层协议,用于定义WEB浏览器与WEB服务器之间交换数据的过程。客户端连上web服务器后,若想获得web服务器中的某个web资源,需遵守一定的通讯格式,HTTP协议用于定义客户端与web服务器通迅的格式。

注意:
HTTP请求的细节——请求行:

  • 1、请求行中的GET称之为请求方式,请求方式有:POST、GET、HEAD、OPTIONS、DELETE、TRACE、PUT,常用的有:
    GET、 POST
  • 2、 用户如果没有设置,默认情况下浏览器向服务器发送的都是get请求,例如在浏览器直接输地址访问,点超链接访问等都是get,用户如想把请求方式改为post,可通过更改表单的提交方式实现。

http常见状态码:

2**开头 :

  • (请求成功)表示成功处理了请求的状态代码。

  • 200 (成功) 服务器已成功处理了请求。 通常,这表示服务器提供了请求的网页。

3** 开头:

  • (请求被重定向)表示要完成请求,需要进一步操作。 通常,这些状态代码用来重定向。

4**开头:

  • (请求错误)这些状态代码表示请求可能出错,妨碍了服务器的处理
    例:
  • 400 (错误请求) 服务器不理解请求的语法。
  • 401 (未授权) 请求要求身份验证。 对于需要登录的网页,服务器可能返回此响应。
  • 403(禁止) 服务器拒绝请求。
  • 404 (未找到) 服务器找不到请求的网页。 405 (方法禁用) 禁用请求中指定的方法。
  • 408(请求超时) 服务器等候请求时发生超时。

5**开头:

  • (服务器错误)这些状态代码表示服务器在尝试处理请求时发生内部错误。 这些错误可能是服务器本身的错误,而不是请求出错
    例:

  • 500 (服务器内部错误) 服务器遇到错误,无法完成请求。

  • 501 (尚未实施) 服务器不具备完成请求的功能。
    例如,服务器无法识别请求方法时可能会返回此代码。

  • 502 (错误网关) 服务器作为网关或代理,从上游服务器收到无效响应。

  • 503 (服务不可用) 服务器目前无法使用(由于超载或停机维护)。 通常,这只是暂时状态。

  • 504 (网关超时) 服务器作为网关或代理,但是没有及时从上游服务器收到请求。

  • 505 (HTTP 版本不受支持) 服务器不支持请求中所用的 HTTP 协议版本。

四、get和 post

get和post的区别

  • get获取url内容

  • post是获取form表单元素内容

  • get传输文件内容一次只能传1kb

  • post传输内容无限大小

  • get获取url内容可以看到内容信息,所以是不安全的

  • post获取表单元素的话是看不到元素内容,是相对安全的

  • get请求解决乱码问题,需要每个字符每个参数单独处理
    注意:
    1、tomcot8 get方式的请求不需要在进行转换,因为tomcat内部已经处理了这个问题

    2、如果要转换的话反而会出现问题,从而导致乱码

  • post请求阶段乱码问题的话可以一次性处理所有字符

进一步深化get和post的区别

  • 提交数据类型

    1、get文本
    2、post文本、二进制文本

  • 提交数据长度

    1、get不能超过255个字符
    2、post没有限制

  • 提交数据可见性

    1、get作为URL地址的一部分显示在浏览器地址栏,不安全的
    2、post作为请求的消息体、不可见,相对安全的

  • 提交数据缓存

    1、get缓存在浏览器URL历史状态中
    2、post不会被浏览器缓存

五、获取外部内容乱码问题

如果是get请求,那么要解决中文乱码的问题,就需要每个参数都单独去处理

  • 第一步,把String转换为字节数组

    String bookname = request.getParameter("?");

  • 第二步,再把字节数组通过UTF-8重新转换为String类型

    bookname = new String(bytes,“UTF-8”);

  • 注意

    1、tomcat 8 get方式的请求不需要再进行转换了,因为tomcat内部已经处理了这个问题
    2、如果你闲得无聊还是要转的话就会出问题

六、servlet生命周期

注意:

  • servlet是单例的,tomcat每个servlet只会生成一次

servlet共有三个方法,分别是:
1、 init()

  • 只会被调用一次,只有一次servlet被初始化的时候才会被调用,通过多线程访问

2、servlet()

  • servlet是每次有新的请求都会被调用

3、destroy()

  • destroy在tomcat服务器关闭的时候被调用

七、存数据的方式

1、requst

  • 一般情况下,我们肯定使用的是requst传值
  • 一般情况下数据都存放在这里

2、servletContext

  • 之意servletContext在这里保存的是所有的serblet共享的,所以一般情况下,就算要存在Context中,也是公共比计较简单的值

3、session

  • 状态管理,是有效的,默认值为30分钟
  • 一般情况下session使用场景为用户登录数据和购物车

八、Filter过滤器

概念:

  • Filter也称之为过滤器,它是Servlet技术中最激动人心的技术,WEB开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp, Servlet, 静态图片文件或静态 html文件等进行拦截,从而实现一些特殊的功能。例如实现URL级别的权限访问控制、过滤敏感词汇、压缩响应信息等一些高级功能。

Filter是如何实现拦截的?

  • Filter接口中有一个doFilter方法,当我们编写好Filter,并配置对哪个web资源进行拦截后,WEB服务器每次在调用web资源的service方法之前,都会先调用一下filter的doFilter方法
  • 调用目标资源之前,让一段代码执行。
  • 是否调用目标资源(即是否让用户访问web资源)。
  • 调用目标资源之后,让一段代码执行

用法:

  • urlPatterns这里的意思是要过滤掉哪些内容 /* 就代表根路径下面所有的内容都需要过滤
  • 也可以使用通配符进行过滤, *.do,这个就代表匹配所有的后缀名叫 .do,注意使用通配符前面不能加/
    注意:
  • Tomcot7以下版本(包括7)以后必须手动设置转码提交处理

九、请求转发和人重定向

请求转发
1、概念:

  • 是在客户端发起请求后,在服务器之间的跳转,然后服务器返回页面给客户端进行显示。此时地址栏的地址没有进行改变。
    2、用法:
  • 在servlet中调用转发:
request.getRequestDispatcher("new.jsp").forward(request,response);//转发到new.jsp

重定向
1、概念:

  • 客户端发起请求之后,服务器会将重定向的地址发给客户端,客户端将地址拿到之后,重新发起请求,服务器进行返回数据。地址栏的地址进行改变。

2、用法:

  • 在servlet中调用重定向
response.sendRedirect("new.jsp");//重定向到new.jsp

两者的区别:

  • 1.转发是服务器行为;重定向是客户端行为。转发在服务器端完成的;重定向是在客户端完成的。

  • 2.转发的速度快;重定向速度慢。

  • 3.转发的是同一次请求一次响应;重定向是两次不同请求两次响应。

  • 4.转发不会执行转发后的代码;重定向会执行重定向之后的代码。

  • 5.转发地址栏没有变化;重定向地址栏有变化。

  • 6.转发必须是在同一台服务器下完成;重定向可以在不同的服务器下完成。

最后:创作不易,还望看官打赏

在这里插入图片描述在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我有一只小阿茶

创作不易,还需各位看官大力支持

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值