• Javaweb回炉简要学习笔记


    Javaweb回炉简要学习笔记

    1.高难度面试题

    请你谈谈网站是如何进行访问的?

    • 输入一个域名;回车
    • 检查本机的配置文件C:\Windows\System32\drivers\etc\hosts下有没有这个域名的映射,有:直接返回对应的ip地址,这个地址中,有我们需要放的web程序,可以直接访问,没有:去DNS服务器找,找到的话就返回,找不到就返回找不到

    2. Servlet

    1. 概念:Servlet是运行在Java服务器端的程序,用于接收和响应来自客户端基于HTTP协议的请求。
    2. 实现:如果想要实现Servlet的功能,可以通过实现Servlet接口或者继承他的实现类。
    3. 核心方法:service(),任何客户端的请求都会经过该方法。
    4. 请添加图片描述
    5. 在这里插入图片描述
    6. Servlet的实现方式:
      • 第一种:实现Servlet接口,实现所有的抽象方法。该方式支持最大程度的自定义
      • 第二种:继承GenericServlet 抽象类,必须重写service方法,其他万法可选择重与。该力式让执们升反SeIVIeI 变得间平。但是这种方式和HTTP协议无关。
      • 第三种:继承 HttpServlet抽象类,需要重写doGet和doPost方法、该方式表示请求和响应都需要和HTTP协议相关。

    3. get和post请求的区别

    1. get请求用来从服务器上获得资源,而post是用来向服务器提交数据;
    2. get将表单中数据按照name=value的形式,添加到action 所指向的URL 后面,并且两者使用”?”连接,而各个变量之间使用”&”连接;
    3. post是将表单中的数据放在HTTP协议的请求头或消息体中,传递到action所指向URL;
    4. get传输的数据要受到URL长度限制(最大长度是 2048 个字符);而post可以传输大量的数据,上传文件通常要使用post方式;使用get时参数会显示在地址栏上,如果这些数据不是敏感数据,那么可以使用get;对于敏感数据还是应用使用post;
    5. get使用MIME类型application/x-www-form-urlencoded的URL编码(也叫百分号编码)文本的格式传递参数,保证被传送的参数由遵循规范的文本组成,例如一个空格的编码是”%20”。ps:GET方式提交表单的典型应用是搜索引擎。GET方式就是被设计为查询用的。

    4. 请求转发、请求包含和重定向

    1. 请求转发:客户端的一次请求到达后,发现需要借助其他Servlet来实现功能

      • 浏览器地址栏不变
      • 域对象中的数据不丢失
      • 负责转发的Servlet转发前后的响应会丢失
      • 由转发的目的地来响应客户端
    2. 请求包含:可以合并其他Servlet中的功能一起响应给客户端

      • 浏览器地址栏不变
      • 域对象中的数据不丢失
      • 被包含的Servlet响应头会丢失
    3. 请求重定向:客户端的一次请求到达后,发现需要借助其他Servlet来实现功能。

      • 浏览器地址栏会发生改变,两次请求,请求域对象中共享数据会丢失,可以重定向到其他服务器。
      • 设置响应状态码为302. 设置响应的资源路径,通过响应消息头location来指定.

    5. 四大作用域

    1. 应用域:ServletContext:contextApplication,在整个应用之间实现数据共享
    2. 会话域:HttpSession,在当前会话范围之间实现数据共享
    3. 请求域:ServletRequest,在当前的请求或请求转发之间实现数据共享
    4. 页面域:PageContext,Jsp都有,可操作其他三个域对象中的属性,还可获取其他八大隐式对象。每一个Jsp页面有一个PageContext对象

    6. Cookie会话

    1. 会话:浏览器和服务器之间的多次请求和响应。会话过程中所产生的一些数据(如:用户名密码,购物车等),可以通过会话技术保存。

    2. Cookie: 客户端会话管理技术;把要共享的数据保存在客户端。每次请求时,把会话信息带到服务器,从而实现多次请求共享数据!

    3. 作用: 可以保存客户端访问网站的相关内容,从而保证每次访问时先从本地缓存中获取,以此提高效率。

    4. 注意事项

      • 数量限制:每个网站最多只能有20个Cookie,且大小不能超过4kb,所有网站Cookie总数不能超过300个。
      • 名称限制:只能包含字母数字,不支持中文。
      • 存活时间限制:setMaxAge()方法接收数字。
      • 负整数:当前会话有效,浏览器关闭则清除。
      • 0:立即清除。
      • 正整数:以秒为单位设置存活时间。
      • 路径限制:取第一次访问的资源路径前缀,只要以这个前缀为开头(包括子级路径),都能获取到Cookie。
      • 设置路径:setPath(String s)

    7. Session会话

    服务器会给每一个用户(浏览器)创建一个Session对象;一个Session独占一个浏览器,只要浏览器没有关闭,这个Session就存在;

    1. HttpSession: 服务端会话管理技术,本质也是采用客户端会话管理技术,只不过在客户端保存的是一个特殊标识,而共享的数据保存在服务端的内存对象中。
    2. 每次请求时,都会将特殊标识带到服务端,根据标识找到对应内存空间从而实现数据共享。
    3. Session也是四大域对象之一的会话域对象

    8. Session和cookie的区别

    • Cookie是把用户的数据写给用户的浏览器,浏览器保存(可以保存多个)
    • Session把用户的数据写到用户独占Session中,服务器保存(保存重要的信息,较少服务器资源的浪费)
    • Session对象由服务器创建;
    • cookie只是实现session的其中一种方案。虽然是最常用的,但并不是唯一的方法。禁用cookie后还有其他方法存储,比如放在url中
    • 现在大多都是Session + Cookie,但是只用session不用cookie,或是只用cookie,不用session在理论上都可以保持会话状态。可是实际中因为多种原因,一般不会单独使用
    • 用session只需要在客户端保存一个id,实际上大量数据都是保存在服务端。如果全部用cookie,数据量大的时候客户端是没有那么多空间的。
    • 如果只用cookie不用session,那么账户信息全部保存在客户端,一旦被劫持,全部信息都会泄露。并且客户端数据量变大,网络传输的数据量也会变大

    9. jsp原理

    1. java server pages:java服务器端页面,也是servlet一样,用于动态web技术!
    2. jsp到底怎么执行的?
      • 代码层面看不出啥(jsp)
      • 服务器内部工作:1. tomcat中有一个work目录 2.idea使用tomcat的会在idea的tomcat中生产一个work目录
    3. 浏览器向服务器发送请求,不管访问什么资源,其实都是在访问servlet,jsp最终也会被转换为一个java类,jsp本质上就是一个servlet,在jsp页面中只要是java代码就会原封不动的输出,如果是html代码,就会被转换为java.out
    4. JSP内置九大对象:1. PageContext 存东西 //保存的数据只在一个页面中有效 2. Request //保存的数据只在一次请求中有效,请求转发会携带这个数据 3. Response 4. Session //保存的数据只在一次会话中有效,从打开浏览器到关闭浏览器 5. Application [ServletContext] 保存的数据只在服务器中有效,从打开服务器到关闭服务器 6. config [ServletConfig] 7. out 8. page 9. exception

    10. mvc三层架构

    1. View:1. 展示数据 2. 提供链接发起Servlet请求
    2. Controller:1. 接收用户的请求(req:请求参数 Session信息。。。) 2. 交给业务层处理对应的代码 3. 控制试图的跳转
    3. Model:1. 业务处理:业务逻辑(Service) 2. 数据持久层:CRUD(Dao)
    4. 在这里插入图片描述

    11. Filter过滤器

    1. 介绍: 在程序中访问服务器资源时,当一个请求到来时,服务器首先判断是否有过滤器与请求资源相关联,如果有,则过滤器进行拦截,完成特定的功能后在由过滤器决定是否转发给请求资源,如果没有关联则直接请求资源即可。响应也是类似。
      2. 使用场景: 一般用于登录验证,统一编码处理,敏感字符过滤等;Filter是一个接口,想实现过滤器的功能,必须实现该接口
      3. FilterChain介绍:是一个接口,代表过滤器链对象,由Servlet容器提供实现类对象,直接使用即可。过滤器可以定义多个,就可以组成过滤器链。

    12.Listener监听器

    观察者设计模式:所以监听器都是基于观察者设计模式的

    • 事件源:出发事件的对象
    • 事件:出发的动作,封装事件源
    • 监听器:当事件源触发事件后,可能完成的功能。

    13. IDEA常用快捷键

    ​ 自己总结的一些常用的IDEA快捷键:

    ctrl+shift+alt:多行操作
    psvm:生成main()方法;
    fori:生成for循环;
    Ctrl+Alt+v:自动补齐返回值类型
    ctrl+o:覆写方法
    ctrl+i:实现接口中的方法
    ctrl+shift+u:大小写转换
    CTRL+SHIFT+Z:取消撤销
    Alt+Insert:生成构造方法、getter、setter
    ctrl+y:删除当前行
    Ctrl+Shift+J:将选中的行合并成一行
    ctrl+g:定位到某一行
    Ctrl+Shitft+向下箭头:将光标所在的代码块向下整体移动
    Ctrl+Shift+向上箭头:将光标所在的代码块向上整体移动
    Alt+Shift+向下箭头:将行向下移动
    Alt+Shift+向上箭头:将行向上移动
    Ctrl+F:在当前文件中查找
    Ctrl+R:替换字符串
    Ctrl+Shift+F:在全局文件中查找字符串
    Ctrl+Shift+R:在全局中替换字符串
    Ctrl+Shift+Enter:自动补齐{}或者分号;
    Shift+Enter:在当前行的下方开始新行
    Ctrl+Alt+Enter:在当前行的上方插入新行
    Ctrl+Delete:删除光标所在至单词结尾处的所有字符
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
  • 相关阅读:
    Java Collections.newSetFromMap方法具有什么功能呢?
    html5学习笔记23-vue 简略学习,未完
    当网络设置为自动获取dns时而实际nds是8.8.8.8,1.1.1.1的解决方法
    Java多线程/线程池
    某云负载均衡获取客户端真实IP的问题
    Linux磁盘LVM根目录扩容ubuntu--vg-ubuntu--lv
    pyside6开发-01-开发环境搭建
    Python-大数据分析之常用库
    python基于PHP+MySQL的自习室图书馆座位管理系统
    快速排序及其拓展应用
  • 原文地址:https://blog.csdn.net/weixin_42200347/article/details/126037149