Javaweb回炉简要学习笔记

1.高难度面试题

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

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

2. Servlet

  1. 概念:Servlet是运行在Java服务器端的程序,用于接收和响应来自客户端基于HTTP协议的请求。
  2. 实现:如果想要实现Servlet的功能,可以通过实现Servlet接口或者继承他的实现类。
  3. 核心方法:service(),任何客户端的请求都会经过该方法。
  4. 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)

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:删除光标所在至单词结尾处的所有字符

Javaweb回炉简要学习笔记相关推荐

  1. 黑马程序员最新版JavaWeb基础教程-学习笔记

    da@黑马程序员最新版JavaWeb基础教程-学习笔记 day06-HTML&CSS HTML HTML(HyperTest Markup Language):超文本标记语言 是一门语言,所有 ...

  2. JavaWeb和WebGIS学习笔记(三)——GeoServer 发布shp数据地图

    JavaWeb和WebGIS学习笔记(三)--GeoServer 发布shp数据地图 系列链接: Java web与web gis学习笔记(一)--Tomcat环境搭建 Java web与web gi ...

  3. JavaWeb和WebGIS学习笔记(四)——使用uDig美化地图,并叠加显示多个图层

    系列链接: Java web与web gis学习笔记(一)--Tomcat环境搭建 Java web与web gis学习笔记(二)--百度地图API调用 JavaWeb和WebGIS学习笔记(三)-- ...

  4. javaweb之msql学习笔记

    javaweb学习笔记 mysql安装 一.下载 点开下面的链接: https://downloads.mysql.com/archives/community/ 选择选择和自己系统位数相对应的版本点 ...

  5. jQuery,Ajax.animate,SVG(简要学习笔记二十)[完结篇]

    1.$和jquery在全局命名空间中定义的唯一两个变量. 2.jquery是工厂函数,不是构造函数.他返回一个新创建的对象. 3.jquery的四种调用方式:     <1>传递CSS选择 ...

  6. HTML5权威指南--Web Storage,本地数据库,本地缓存API,Web Sockets API,Geolocation API(简要学习笔记二)...

    1.Web Storage HTML5除了Canvas元素之外,还有一个非常重要的功能那就是客户端本地保存数据的Web Storage功能. 以前都是用cookies保存用户名等简单信息. 但是coo ...

  7. JavaScript权威设计--CSS(简要学习笔记十六)

    1.Document的一些特殊属性 document.lastModified document.URL document.title document.referrer document.domai ...

  8. JavaScript权威设计--事件冒泡,捕获,事件句柄,事件源,事件对象(简要学习笔记十八)...

    1.事件冒泡与事件捕获 2.事件与事件句柄   3.事件委托:利用事件的冒泡技术.子元素的事件最终会冒泡到父元素直到跟节点.事件监听会分析从子元素冒泡上来的事件. 事件委托的好处:     1.每个函 ...

  9. JavaScript权威设计--JavaScript表达式与运算符(简要学习笔记五)

    1.3种原始表达式 1.直接量:    1.23    //数字直接量 "hello"    //字符串直接量 ... 2.保留字构成的原始表达式: true    //返回布尔值 ...

最新文章

  1. JDBC与数据库连接工具对比分析
  2. 【react开发】使用swiper插件,loop:true时产生的问题解决方案
  3. 心态很容易受别人影响_心理学:为什么我越来越容易被别人和环境影响
  4. 可综合的SystemVerilog:参数化函数/任务
  5. Manage Common Field Service Jobs
  6. 非常详尽的 Shiro 架构解析!
  7. Hive的索引操作【小结】
  8. PHP数组合并+与array_merge的区别分析 对多个数组合并去重技巧
  9. Java中使用Jedis操作Redis,java初级面试笔试题
  10. 使用IAR在线调试功能显示数据变化曲线
  11. JSP和Servlet互相传输数据的过程中产生的乱码问题及解决方案(没有使用AJAX的情况)...
  12. ASP.NET Core搭建多层网站架构【11-WebApi统一处理返回值、异常】
  13. Codeforces #662C Binary Table
  14. BZOJ4456 ZJOI2016旅行者(分治+最短路)
  15. Java 删除非空文件夹
  16. DirectX修复工具(DirectX Repair)修复工具V4.0增强版
  17. 二叉树的中序遍历算法
  18. php 逻辑思维题,倘若3分钟内,你能答对这道智力题,说明你的逻辑思维能力很强...
  19. C#里的进制与ASCII转换
  20. [英语语法]句法之主谓一致

热门文章

  1. windows 禁用中文输入法(转)
  2. sudo chmod -R 777
  3. C#把数据库表里简体字转化为繁体字
  4. 中国物流企业家谈“物流”
  5. PLC控制模拟量输入\输出方式
  6. 装机注意事项:一次装机差点翻车的经历
  7. Tableau画桑基图
  8. 和菜鸟一起学linux之wifi学习记录
  9. 【建立个人品牌】自媒体人必须知道的28个新媒体平台
  10. 一点资讯推出“长风计划”