Web 编程面试题(2022)

Web 编程

1、http 和 https 的区别?

1、https协议需要到CA申请证书,一般免费证书较少,因而需要一定费用。

2、http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl/tls加密传输协议。

3、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。

4、http的连接很简单,是无状态的;HTTPS协议是由SSL/TLS+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。

2、get 和 post 的区别?

(1)Get请求的数据(参数)会在这里插入代码片显示在地址栏,而Post不会,所以,Post比Get更加安全

(2)Post请求的参数存放到了请求实体中,而Get没有请求实体,Get是存储在请求行中。

(3)数据传输Post有优势:Get方式请求的数据不能超过2k,而Post 没有上限

(4)浏览缓存Get有优势:Get具有数据缓存,而Post没有。

✿ 从优势角度看,数据传输使用Post,数据浏览查询使用Get。即查询时使用Get,其他时候使用Post。

表单全部使用Post提交

3、forward 和 redirect 的区别?

是servlet的主要两种跳转方式,forward又叫转发,redirect叫重定向

区别(地址栏,数据共享,应用场景,效率,本质,次数)

1、从地址栏显示来说:forward是服务器内部重定向,

客户端浏览器的网址不会发生变化;redirect发生一个状态码,告诉服务器去重新请求那个网址,显示的的新的网址

2、数据共享:在定向过程中forward使用的是同一个request,可以共享;redirect不可以。

3、应用场景:forward一般用于用户登录:redirect用于用户注销登录返回主页面或者跳转其他页面

4、forward效率更高

5、本质上说:forward转发是服务器上的行为,而redirect是客户端行为

6、次数:forward只有一次,redirect两次

4、Servlet 是什么?

servlet是一个Java编写的程序,此程序是基于http协议的,在服务器端(如Tomcat)运行的,是按照servlet规范编写的一个Java类。
客户端发送请求至服务器端,服务器端将请求发送至servlet,servlet生成响应内容并将其传给服务器
即,我们在浏览器点击链接和按钮产生的消息不是发送给servlet的,而是发送给web容器(如Tomcat、jetty)的,web容器接受消息后不知道怎么处理,转交给我们编写的servlet处理,那么web容器怎么和servlet交流呢,于是就有了servlet接口(因为接口是定义一种规范的良好表达形式)。我们只需要编写Java类符合servlet规范,那么就能被web容器识别,并被容器管理。
Servlet = Server + Applet

5、Servlet 生命周期是怎样的?

   Servlet 初始化后调用 init () 方法。
   Servlet 调用 service() 方法来处理客户端的请求。
   Servlet 销毁前调用 destroy() 方法。
   最后,Servlet 是由 JVM 的垃圾回收器进行垃圾回收的。

6、Servlet 有哪些核心的方法?

init() 方法 只会被调用一次,当容器初始化时被调用。
service() 方法调用无限次,每个请求到来时都调用一次。
destroy() 方法,只会被调用一次,当容器被销毁时被调用。

7、Servlet 是线程安全的么?

不是线程安全的,尽量不要定义全局变量。

8、Servlet 支持异步处理吗?

Servlet3支持异步处理。

9、Servlet 是单例还是多例?

如果一个 Servlet 没有被部署在分布式环境中,一般 web.xml 中声明的一个 Servlet 只对应一个实例。
而如果一个 Servlet 实现了 SingleThreadModel 接口,就会被初始化多个实例。

10、Servlet 和 JSP 有什么区别和联系?

JSP是Servlet技术的扩展,本质上就是Servlet的简易方式。JSP编译后是“类servlet”。
Servlet和JSP最主要的不同点在于:
Servlet的应用逻辑是在Java文件中,并且完全从表示层中的HTML里分离开来。
而JSP的情况是Java和HTML可以组合成一个扩展名为.jsp的文件。
JSP侧重于视图,Servlet主要用于控制逻辑
Servlet更多的是类似于一个Controller,用来做控制。

11、JSP 是什么?

jsp的英文名称是Java Server Pages,中文名称是java服务器页面,根据Servlet来进行设计,jsp也是一种网页开发技术,主要用于实现java web程序的用户界面的部分,网页开发者可以使用html和XHTML以及其他元素来嵌入jsp操作,完成一系列的操作。

12、JSP 有哪些内置对象?

JSP 有 9 大内置对象:

request:封装客户端的请求,其中包含来自 get 或 post 请求的参数;
response:封装服务器对客户端的响应;
pageContext:通过该对象可以获取其他对象;
session:封装用户会话的对象;
application:封装服务器运行环境的对象;
out:输出服务器响应的输出流对象;
config:Web 应用的配置对象;
page:JSP 页面本身(相当于 Java 程序中的 this);
exception:封装页面抛出异常的对象。

13、JSP 有哪些基本动作?

jsp:include:在页面被请求的时候引入一个文件.
jsp:useBean:寻找或者实力化一个JavaBean.
jsp:setProperty:设置JavaBean的属性.
jsp:getProperty:输出某个JavaBean的属性.
jsp:forward:把请求转到一个新的页面.
jsp:plugin:根据浏览器类型转为Java插件生成OBJECT或EMBED标记.

14、JSP 有哪几种作用域?

page:代表与一个页面相关的对象和属性。
request:代表与客户端发出的一个请求相关的对象和属性。一个请求可能跨越多个页面,涉及多个 Web 组件;需要在页面显示的临时数据可以置于此作用域。
session:代表与某个用户与服务器建立的一次会话相关的对象和属性。跟某个用户相关的数据应该放在用户自己的 session 中。
application:代表与整个 Web 应用程序相关的对象和属性,它实质上是跨越整个 Web 应用程序,包括多个页面、请求和会话的一个全局作用域。

15、JSP 有哪些常用指令?

Jsp一共包含三个编译指令和七个动作指令。

三个编译指令为:page、include、taglib

七个动作指令为:jsp:forward、jsp:param、jsp:include、jsp:plugin、jsp:useBean、jsp:setProperty、jsp:getProperty

16、如何实现隐藏的表单域?

隐藏域是用来收集或发送信息的不可见元素,对于网页的访问者来说,隐藏域是看不见的。当表单被提交时,隐藏域就会将信息用你设置时定义的名称和值发送到服务器上。
代码格式:

<input type="hidden" name="..." value="...">

属性解释:

type=”hidden”定义隐藏域;

name属性定义隐藏域的名称,要保证数据的准确采集,必须定义一个独一无二的名称;

value属性定义隐藏域的值

17、AJAX 应用和传统 Web 应用有什么不同?

AJAX 可以实现异步局部页面刷新,而传统 Web 应用只能同步刷新整个页面

18、怎么优化 Web 前端的性能?

1.HTML CSS JS 位置
一般需要将 CSS 放页面最上面,即 HEAD 部分,而将 JS 代码放页面底部。

2.引用文件位置
尽量把远程引用的资源本地化。

3.减少后台请求
每个请求都是耗费资源影响系统性能的,所以能减少后台请求就减少

4.压缩传输
http 压缩可以对纯文本可以压缩至原内容的 40%,从而节省了 60% 的数据传输。

5.减少 cookie 传输
cookie 会包含在每次请求和响应中,如果cookie 过多会影响 http 相应速度。

6.浏览器缓存
高并发情况下,可以将一些不怎么变动的东西缓存到浏览器 cache 中。

7.CDN
CDN 是一个静态内容分发网络,本质就是静态资源的缓存,可以将静态资源放到 CDN上。

8.反向代理
常用的反向代理 nginx 除了负载均衡功能,它也可以通过配置缓存功能来加速请求响应速度。

19、什么是 MVC?分别代表什么?

在这里插入图片描述
视图(View):用户界面。
控制器(Controller):业务逻辑
模型(Model):数据保存

20、拦截器和过滤器的区别?

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

2.拦截器不依赖与servlet容器,过滤器依赖与servlet容器。

3.拦截器只能对action请求起作用,而过滤器则可以对几乎所有的请求起作用。

4.拦截器可以访问action上下文、值栈里的对象,而过滤器不能访问。

5.在action的生命周期中,拦截器可以多次被调用,而过滤器只能在容器初始化时被调用一次。

21、Cookie 和 Session 的区别?

1、数据存放位置不同

cookie数据存放在客户的浏览器上,session数据放在服务器上。

2、安全程度不同

cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗,考虑到安全应当使用session。

3、性能使用程度不同

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

4、数据存储大小不同

单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie,而session则存储与服务端,浏览器对其没有限制。

22、什么是跨域?有哪些解决方案?

由于浏览器同源策略,凡是发送请求url的协议、域名、端口三者之间任意一与当前页面地址不同即为跨域。存在跨域的情况:

   网络协议不同,如http协议访问https协议。
   端口不同,如80端口访问8080端口。
   域名不同,如qianduanblog.com访问baidu.com。
   子域名不同,如abc.qianduanblog.com访问def.qianduanblog.com。
   域名和域名对应ip,如www.a.com访问20.205.28.90.

(1)、porxy代理
定义和用法:proxy代理用于将请求发送给后台服务器,通过服务器来发送请求,然后将请求的结果传递给前端。
实现方法:通过nginx代理;
注意点:1、如果你代理的是https协议的请求,那么你的proxy首先需要信任该证书(尤其是自定义证书)或者忽略证书检查,否则你的请求无法成功。

(2)、CORS 【Cross-Origin Resource Sharing】
定义和用法:是现代浏览器支持跨域资源请求的一种最常用的方式。

使用方法:一般需要后端人员在处理请求数据的时候,添加允许跨域的相关操作。如下:

   res.writeHead(200, {
       "Content-Type": "text/html; charset=UTF-8",
       "Access-Control-Allow-Origin":'http://localhost',
       'Access-Control-Allow-Methods': 'GET, POST, OPTIONS',
       'Access-Control-Allow-Headers': 'X-Requested-With, Content-Type'
   });

(3)、jsonp
定义和用法:通过动态插入一个script标签。浏览器对script的资源引用没有同源限制,同时资源加载到页面后会立即执行(没有阻塞的情况下)。

特点:通过情况下,通过动态创建script来读取他域的动态资源,获取的数据一般为json格式。
实例如下:

  <script>
       function testjsonp(data) {
          console.log(data.name); // 获取返回的结果
       }
   </script>
   <script>
       var _script = document.createElement('script');
       _script.type = "text/javascript";
       _script.src = "http://localhost:8888/jsonp?callback=testjsonp";
       document.head.appendChild(_script);
   </script>
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值