javaweb


since 2020-04-12,共325节。约2500分钟,40小时。预期:一周内学完。学完记得给自己出一张卷子。(4月13日 P1-P65 6.5小时,4月14=P66-P82 3小时,4月15日=P83-P103 3小时,4月16=P103-P169 7小时,4月17日=P170-P247 6小时,4月18日=P248-P325结束 7小时) 尚硅谷Javaweb

  • HTML和CSS
    • HTML标签
      • 标签拥有自己的属性。分为基本属性、事件属性。
      • 表单提交的时候,数据没有发送给服务器的三种情况:表单项没有name 属性值;单选、复选(下拉列表中的option 标签)都需要添加value 属性,以便发送给服务器;表单项不在提交的form 标签中
      • GET 请求的特点是:1、浏览器地址栏中的地址是:action 属性[+?+请求参数] 请求参数的格式是:name=value&name=value;2、不安全;3、它有数据长度的限制
      • POST 请求的特点是:1、浏览器地址栏中只有action 属性值;2、相对于GET 请求要安全;3、理论上没有数据长度的限制
      • CSS是键值对
  • js
    • JS 是Netscape 网景公司的产品,最早取名为LiveScript;为了吸引更多java 程序员。更名为JavaScript。JS 是弱类型,Java 是强类型。特点:1. 交互性(它可以做的就是信息的动态交互)2. 安全性(不允许直接访问本地硬盘)3. 跨平台性(只要是可以解释JS 的浏览器都可以执行,和平台无关)
    • script 标签可以用来定义js 代码,也可以用来引入js 文件,但是,两个功能二选一使用。不能同时使用两个功能
    • javaScript语言中的数组,只要我们通过数组下标赋值,那么最大的下标值,就会自动的给数组做扩容操作。
    • 函数调用才会执行
  • jquery
    • 什么是jQuery ? jQuery,顾名思义,也就是JavaScript 和查询(Query),它就是辅助JavaScript 开发的js 类库。jQuery 核心思想!!!它的核心思想是write less,do more(写得更少,做得更多),所以它实现了很多浏览器的兼容问题。jQuery 流行程度 jQuery 现在已经成为最流行的JavaScript 库,在世界前10000 个访问最多的网站中,有超过55%在使用jQuery。jQuery 好处!!!jQuery 是免费、开源的,jQuery 的语法设计可以使开发更加便捷,例如操作文档对象、选择DOM 元素、制作动画效果、事件处理、使用Ajax 以及其他功能。
    • jQuery 中的$到底是什么? 答案: 它是一个函数
    • 怎么为按钮添加点击响应函数的? 答案:1、使用jQuery 查询到标签对象2、使用标签对象.click( function(){} );
    • $符号
      • 1、传入参数为[ 函数] 时:表示页面加载完成之后。相当于window.onload = function(){}
      • 2、传入参数为[ HTML 字符串] 时:会对我们创建这个html 标签对象
      • 3、传入参数为[ 选择器字符串] 时:$(“#id 属性值”); id 选择器,根据id 查询标签对象 $(“标签名”); 标签名选择器,根据指定的标签名查询标签对象$(“.class 属性值”); 类型选择器,可以根据class 属性查询标签对象
      • 4、传入参数为[ DOM 对象] 时:会把这个dom 对象转换为jQuery 对象
    • jQuery 对象是dom 对象的数组+ jQuery 提供的一系列功能函数。
    • dom 对象转化为jQuery 对象(*重点)1、先有DOM 对象 2、$( DOM 对象) 就可以转换成为jQuery 对象 2、
    • jQuery 对象转为dom 对象(*重点)1、先有jQuery 对象 2、jQuery 对象[下标]取出相应的DOM 对象 jquery深入
    • 在事件响应的function函数中,有一个this对象。这个this对象是当前正在响应事件的dom对象。
    • $( function(){} ); 和 window.onload = function(){}的区别?
      • 他们分别是在什么时候触发?1、jQuery 的页面加载完成之后是浏览器的内核解析完页面的标签创建好DOM 对象之后就会马上执行。2、原生js 的页面加载完成之后,除了要等浏览器内核解析完标签创建好DOM 对象,还要等标签显示时需要的内容加载完成。
  • XML和Tomcat
    • JavaWeb 是指,所有通过Java 语言编写可以通过浏览器访问的程序的总称,叫JavaWeb。JavaWeb 是基于请求和响应来开发的。请求是指客户端给服务器发送数据,叫请求Request。响应是指服务器给客户端回传数据,叫响应Response。
    • web 资源按实现的技术和呈现的效果的不同,又分为静态资源和动态资源两种。静态资源: html、css、js、txt、mp4 视频, jpg 图片。动态资源: jsp 页面、Servlet 程序
    • 常用的web服务器
      • Tomcat:由Apache 组织提供的一种Web 服务器,提供对jsp 和Servlet 的支持。它是一种轻量级的javaWeb 容器(服务器),也是当前应用最广的JavaWeb 服务器(免费)。
      • Jboss:是一个遵从JavaEE 规范的、开放源代码的、纯Java 的EJB 服务器,它支持所有的JavaEE 规范(免费)。
      • GlassFish: 由Oracle 公司开发的一款JavaWeb 服务器,是一款强健的商业服务器,达到产品级质量(应用很少)。
      • Resin:是CAUCHO 公司的产品,是一个非常流行的服务器,对servlet 和JSP 提供了良好的支持,性能也比较优良,resin 自身采用JAVA 语言开发(收费,应用比较多)。
      • WebLogic:是Oracle 公司的产品,是目前应用最广泛的Web 服务器,支持JavaEE 规范,而且不断的完善以适应新的开发要求,适合大型项目(收费,用的不多,适合大公司)。
    • 响应是指服务器给客户端回传数据,叫响应 Response。
  • Servlet
    • 1.Servlet 是 JavaEE 规范之一。规范就是接口 2、Servlet 就 JavaWeb 三大组件之一。三大组件分别是:Servlet 程序、Filter 过滤器、Listener 监听器。3、Servlet 是运行在服务器上的一个 java 小程序,它可以接收客户端发送过来的请求,并响应数据给客户端。
    • GET 请求有哪些:
      • 1、form 标签 method=get;2、a 标签; 3、link 标签引入 css ;4、Script 标签引入 js 文件; 5、img 标签引入图片 ;6、iframe 引入 html 页面 ;7、在浏览器地址栏中输入地址后敲回车
    • POST 请求有哪些:
      • 8、form 标签 method=post
    • 请求转发必须要以斜杠打头,/ 斜杠表示地址为:http://ip:port/工程名/ , 映射到 IDEA 代码的 web 目录
    • 请求转发的特点:浏览器地址栏没有变化、他们是一次请求、共享request域中的数据、可以转发到WEB-INF目录下、不可以访问工程意外的资源
    • 斜杠的意义
      1. 斜杠 如果被浏览器解析,得到的地址是:http://ip:port/斜杠
      2. / 斜杠 如果被服务器解析,得到的地址是:http://ip:port/工程路径
      3. /servlet1
      4. servletContext.getRealPath(“/”);
      5. request.getRequestDispatcher(“/”);
      6. 特殊情况: response.sendRediect(“/”); 把斜杠发送给浏览器解析。得到 http://ip:port/
    • 字节流 getOutputStream(); 常用于下载(传递二进制数据)字符流 getWriter(); 常用于回传字符串(常用)
    • 中文字符串
    • 服务器接受可以设置UTF-8,客户端接收不推荐设置服务器字符集UTF-8(不设置的时候是?)和浏览器为UTF-8(不设置的时候看到的是一些奇奇怪怪的中文),
    • 推荐设置
      • // 它会同时设置服务器和客户端都使用 UTF-8 字符集,还设置了响应头 // 此方法一定要在获取流对象之前调用才有效。resp.setContentType(“text/html; charset=UTF-8”);
    • 请求重定向
      • 请求重定向,是指客户端给服务器发请求,然后服务器告诉客户端说。我给你一些地址。你去新地址访问。叫请求重定向(因为之前的地址可能已经被废弃)。
      • 特点:浏览器地址栏会发生变化、两次请求、不共享Request域中的数据、不能访问WEB-INF下的资源、可以访问工程外的资源
      • 请求重定向的第一种方案:// 设置响应状态码 302 ,表示重定向,(已搬迁)resp.setStatus(302); // 设置响应头,说明 新的地址在哪里 resp.setHeader(“Location”, “http://localhost:8080”);请求重定向的第二种方案(推荐使用):resp.sendRedirect(“http://localhost:8080”);
    • 从请求的顺序反过来写代码
      • 新建数据库->写dao和数据库交互的代码->写service代码->写servlet分配请求的代码
  • JSP
    • JSP(全称 Java Server Pages)是由 Sun 公司专门为了解决动态生成 HTML 文档的技术。
    • 上面的代码我们不难发现。通过 Servlet 输出简单的 html 页面信息都非常不方便。那我们要输出一个复杂页面的时候,就更加的困难,而且不利于页面的维护和调试。所以 sun 公司推出一种叫做 jsp 的动态页面技术帮助我们实现对页面的输出繁锁工作。jsp 页面的访问千万不能像 HTML 页面一样。托到浏览器中。只能通过浏览器访问 Tomcat 服务器再访问 jsp 页面。
    • 那么 当我们访问 一个 xxx.jsp 文件后 翻译成 java 文件的全名是 xxx_jsp.java 文件。xxx_jsp.java 文件是一个 Servlet 程序。原来 jsp 中的 html 内容都被翻译到 Servlet 类的 service 方法中原样输出。
    • jsp 中九大内置对象
      • jsp 四大域对象
        • pageContext 可以保存数据在同一个 jsp 页面中使用。request 可以保存数据在同一个 request 对象中使用。经常用于在转发的时候传递数。session 可以保存在一个会话中使用。application(ServletContext) 就是 ServletContext 对象
      • out.flush();// 最后一次的输出,由于没有手动flush,会在整个页面输出到客户端的时候,自动写入到writer缓冲区
      • 使用out.print()都会转成字符串永远不会错,out.wirte()可能会出错,会把1转为char输出49这样的错误。
    • 页面包含
      • 静态包含–很常用<%@ include file=”” %>静态包含是把包含的页面内容原封装不动的输出到包含的位置。
      • 动态包含–很少用动态包含会把包含的 jsp 页面单独翻译成 servlet 文件,然后在执行到时候再调用翻译的 servlet 程序。并把计算的结果返回。动态包含是在执行的时候,才会加载。所以叫动态包含。
    • 随着技术的发展,jsp现在的功能就是输出页面内容!
  • EL表达式
    • Expression Language。是表达式语言
    • EL 表达式的格式是:${表达式}
    • EL 表达式在输出 null 值的时候,输出的是空串。jsp 表达式脚本输出 null 值的时候,输出的是 null 字符串。
    • EL按照page-request-session-application的顺序找对象
    • EL 个达式中 11 个隐含对象,是 EL 表达式中自己定义的,可以直接使用。
    • pageContext 对象的使用 1. 协议:2. 服务器 ip:3. 服务器端口:4. 获取工程路径:5. 获取请求方法:6. 获取客户端 ip 地址:7. 获取会话的 id 编号:
    • JSTL 标签库 全称是指 JSP Standard Tag Library JSP 标准标签库。是一个不断完善的开放源代码的 JSP 标签库。
    • EL 表达式主要是为了替换 jsp 中的表达式脚本,而标签库则是为了替换代码脚本。这样使得整个 jsp 页面变得更佳简洁。
    • 文件的上传和下载
      • HTTP协议内容中boundary表示每段数据的分隔符。
    • BeanUtils 它不是 Jdk 的类。而是第三方的工具类。所以需要导包。
  • 书城项目
    • MVC
    • 讲得挺好的,分页条+价格区间
    • 表单重复提交
      • 使用谷歌验证码包来验证是否是第一次提交
    • 页面加进入购物车之后重定向回原来的商品页面,可以使用HTTP协议的referer字段
  • Cookie & Session
    • 构造器是 name, value 的就是键值对
    • Cookie保存在客户端,默认时长是一个会话。Session保存在服务器端,默认时长是30分钟,在Tomcat的配置web.xml中可更改
    • 浏览器和 Session 之间关联的技术内幕Session 技术,底层其实是基于 Cookie 技术来实现的。
  • filter过滤器
    • servlet三大组件之一。servlet程序、listener监听器、filter过滤器
    • Filter 过滤器它是 JavaEE 的规范。也就是接口3、Filter 过滤器它的作用是:拦截请求,过滤响应。
    • Filter 的生命周期包含几个方法1、构造器方法;2、init 初始化方法;第 1,2 步,在 web 工程启动的时候执行(Filter 已经创建);3、doFilter 过滤方法;第 3 步,每次拦截到请求,就会执行;4、destroy 销毁;第 4 步,停止 web 工程的时候,就会执行(停止 web 工程,也会销毁 Filter 过滤器)
    • FilterConfig 类见名知义,它是 Filter 过滤器的配置文件类。Tomcat 每次创建 Filter 的时候,也会同时创建一个 FilterConfig 类,这里包含了 Filter 配置文件的配置信息。
    • ThreadLocal 的作用,它可以解决多线程的数据安全问题。
      • ThreadLocal 它可以给当前线程关联一个数据(可以是普通变量,可以是对象,也可以是数组,集合)
      • ThreadLocal 的特点:1、ThreadLocal 可以为当前线程关联一个数据。(它可以像 Map 一样存取数据,key 为当前线程);2、每一个 ThreadLocal 对象,只能为当前线程关联一个数据,如果要为当前线程关联多个数据,就需要使用多个;ThreadLocal 对象实例。;3、每个 ThreadLocal 对象实例定义的时候,一般都是 static 类型;4、ThreadLocal 中保存数据,在线程销毁后。会由 JVM 虚拟自动释放。
    • 使用 ThreadLocal 来确保所有 dao 操作都在同一个 Connection 连接对象中完成。避免订单生成但是订单内容因为异常终端没有生成的不一致状态。即所有的事物都必须在同一个线程中完成。
    • 使用 Filter 过滤器统一给所有的 Service 方法都加上 try-catch。来进行实现管理。
  • Json
    • json是一种轻量级的数据交换格式。轻量级指的是跟 xml做比较。
    • json 是由键值对组成,并且由花括号(大括号)包围。每个键由引号引起来,键和值之间使用冒号进行分隔,多组键值对之间进行逗号进行分隔。
    • json 本身是一个对象。json 中的 key 我们可以理解为是对象中的一个属性。json 中的 key 访问就跟访问对象的属性一样: json 对象.key
    • json 的存在有两种形式。
      • 一种是:对象的形式存在,我们叫它 json 对象。一种是:字符串的形式存在,我们叫它 json 字符串。一般我们要操作 json 中的数据的时候,需要 json 对象的格式。
      • 一般我们要在客户端和服务器之间进行数据交换的时候,使用 json 字符串。JSON.stringify() 把 json 对象转换成为 json 字符串JSON.parse() 把 json 字符串转换成为 json 对象
    • javaBean 和 json 的互转。List 和 json 的互转。map 和 json 的互转。
      • // 创建 Gson 对象实例// toJson 方法可以把 java 对象转换成为 json 字符串gson.toJson(person); gson.fromJson(personJsonString, Person.class);
      • List 和 json 的互转
        • gson.toJson(personList);
        • List list = gson.fromJson(personListJsonString, new PersonListType().getType());
      • map 和 json 的互转
        • gson.toJson(personMap);
        • Map<Integer,Person> personMap2 = gson.fromJson(personMapJsonString, newTypeToken<HashMap<Integer,Person»(){}.getType());
  • AJAX & i18n
    • 即“Asynchronous Javascript And XML”(异步 JavaScript 和 XML),是指一种创建交互式网页应用的网页开发技术。
    • ajax 是一种浏览器通过 js 异步发起请求,局部更新页面的技术。Ajax 请求的局部更新,浏览器地址栏不会发生变化。局部更新不会舍弃原来页面的内容
    • 同步:等人上完厕所一起走,异步:你去上厕所,我走慢一点等你快跑过来
    • 用框架jquery中的ajax请求。
    • 国际化的英文 Internationalization,但是由于拼写过长,老外想了一个简单的写法叫做 I18N,代表的是 Internationalization这个单词,以 I 开头,以 N 结尾,而中间是 18 个字母,所以简写为 I18N。以后我们说 I18N 和国际化是一个意思。