JavaWeb

一.HTML 

1)html语言是解释型语言,不是编译型,浏览器是容错的

2)html页面中由一对标签组成:<html></html>

<html>称之为 开始标签

</html>称之为 结束标签

3)title表示网页的标题

4)可以在meta标签中设置编码方式

5)<br/>表示换行,br标签是一个单标签

单标签:开始标签和结束标签是同一个,斜杠放在单词后面

6)p表示段落标签

7)img标签,图片标签

  • src属性表示图片文件的路径
  • width和HEIGHT表示图片的大小
  • alt表示图片的提示

8)路径的问题:相对路径和绝对路径

9)h1~h6:标题标签

10)列表标签:

  1. -ol 有序列表 start 表示从*开始,type显示的类型是:A a I i 1
  2. -ul无序列表  type:disc(default),circle,square

11)u 下划线 b 粗体 i 斜体

12)上标 sup 下标 sub

13)HTML中的实体(需要的时候可以百度):小于号&lt;大于等于号 &ge;版权 &copy

14)span 不换行的块标记

15)a 表示超链接

  1. href 连接的地址
  2. target:
  • _self    在本窗口打开
  • _blank    在一个新窗口打开
  • _parent     在父窗口打开
  • _top     在顶层窗口打开

16)div  层

17)表格      table

        行         tr

        列         tb

        表头列  th

table有如下属性(虽然已经淘汰,但还是要了解一下)

-border:表格边框的粗细

-width:表格的宽度

-cellspacing:单元格间距

-cellpadding:单元格tianchong

tr中有一个属性:align-->center,left,right

rowspan:行合并

colspan:列合并

18)表单        form

19)input type="text"   表示文本框,其中name属性必须要指定,否则这个文本框的数据将来是不会发送给服务器的

input type="password"表示密码框

input type="radio"表示单选按钮。需要注意的是,name属性值保持一致,这样才会有互斥的效果;可以通过checked属性设置默认选中的项

input type="checkbox"表示复选框。name属性值建议保持一致,这样将来我们服务器端取值的时候获取的是一个数组

select表示下拉列表。每一个选项是option,其中value属性是发送给服务器的值,selected表示默认选中的项

textarea表示多行文本框(或者称之为文本域),它的value值就是开始结束标签之间的内容

input type="submit"表示提交按钮

input type="reset"表示重置按钮

input type="button"表示普通按钮

总结:

二.CSS 

1.css的最基本分类:标签样式表,类样式表,ID样式表

2.css从位置上的分类:嵌入式样式表,内部样式表,外部样式表

3.IE浏览器:实际尺寸 = width

   chrome浏览器:实际尺寸 = width+左右borderwidth+padding

4.CSS盒子模型

1)border  边框

2)margin  间距

3)padding  填充

三.CS和BS

CS:客户端服务器架构模式

优点:充分利用客户端机器的资源,减轻服务器的负荷

(一部分安全要求不高的计算任务存储任务放在客户端执行,不需要把所有的计算和存储都在服务器端执行,从而能够减轻服务器的压力,也能够减轻网络负荷)

缺点:需要安装;升级维护成本较高

BS:浏览器服务器架构模式(优缺点基本同CS相反)

四.Servlet入门

1.用户发请求:action=add

2.项目中,web.xml中找到url-pattern = /add   

3. 找到servlet-name = AddServlet

4.找和servlet-mapping中servlet-name一致的servlet

5.找到servlet-class

6.用户发送的是post请求(method=post)

1.1post方式下,设置编码,防止中文乱码。

request.setCharacterEncoding("UTF-8");

这一句代码,必须在所有获取参数动作之前

1.2Servlet的继承关系----重点查看的是服务方法

1)继承关系

      javax.servlet.Servlet窗口

             javax.servlet.http.HttpServlet抽象类

                      javax.servlet.http.HttpServlet抽象子类

2)相关方法

      javax.servlet.Sevlet接口:

              void  init(config)---初始化方法

              void  service(request,response)---服务方法

              void  destory---销毁方法

      javax.servlet.GenericServlet抽象类:

              void  service(request,response)---仍然是抽象的

      javax.servlet.http.HttpServlet 抽象子类:

              void  servlet(request,response)--不是抽象的

              1.String mathod=req.getMethod();获取请求的方法

              2.各种if判断,根据请求方式不同,决定调用不同的do方法

if(method.equals("GET")){
    this.doGet(req,resp);
        }else if(method.equals("HEAD")){
            this.doHead(req,resp);
        }else if(method.equals("POST")){
            this.doPost(req,resp);
        }else if(method.equals("PUT")){
            this.doPut(req,resp);
        }

3)在HttpServlet这个抽象类中,do方法都差不多:

1.3Servlet生命周期              

1)生命周期:从出生到死亡的过程。对应Servlet中的三个方法:init(),service(),destroy()

2)默认情况下:

           第一次接受请求时,这个Servlet会进行实例化(调用构造方法)、初始化(调用init())、               然后服务(调用service())

           从第二次请求开始,每一次都是服务

           当容器关闭时,其中的所有的sevlet实例会被销毁,调用销毁方法

3)通过案例我们发现:

      --Servlet实例tomcat只会创建一个,所有的请求都是这个实例去响应

      --默认情况下,第一次请求时,tomcat才会实例化,初始化,然后再服务---提高系统启动速度

      --因此得出结论:如果需要提高系统的启动速度,当前默认情况就是这样。如果需要提高响应           速度,我们应该设置Servlet的初始化时机

4)Servlet的初始化时机

      --默认是第一次接受请求时,实例化,初始化

      --我们可以通过<load-on-startup>来设置servlet启动的先后顺序,数字越小,启动越靠前,最             小值为0

5)Servlet在容器中是单例的,线程不安全的

1.4HTTP协议

1.5会话 

1)Http是无状态的

     ---Http无状态:服务器无法判断这两次请求是同一个客户端发来的,还是不同的客户端发来的

     ---无状态带来的现实问题:第一次请求是添加商品到购物车,第二次请求是结账;不能确定是           不是一个客户端发来的

     ---常用的API:

request.getSession()  ->获取当前的会话,没有则创建一个新的会话
request.getSession(true)  ->效果和不带参数相同
request.getSession(false)  ->获取当前会话,没有则返回null,不会创建新的会话
request.getId()  ->获取sessionID
request.isNew()  ->判断当前session是否是新的
request.getMaxInactiveInterval()  ->session的非激活间隔时常,默认1800秒
request.setMaxInactiveInterval()  ->
request.invalidate()  ->强制性让会话立即失效

 2)session保存作用域

      ---session保存作用域是和具体的某一个session对应的

      ---常用的API:

          void  session.setAttribute(k,v)

          Object  session.getAttribute(k)

          void  removeAttribute(k)     

1.6服务器内部转发以及客户端重定向

1)服务器内部转发:request.getRequestDispatcher("...").forward(request,response);

     --一次请求响应的过程,对于客户端而言,内部经过了多少次转发,客户端是不知道的

     --地址栏没有变化

2)客户端重定向:response.sendRedirect("...")

     --两次请求响应的过程,客户端肯定知道请求url有变化

     --地址栏有变化

1.7保存作用域

1)request:一次请求响应范围

2)session:一次会话范围有效

3)application:一次应用程序范围有效

1.8路径问题

1)相对路径

2)绝对路径

2.1Servlet的初始化方法

1)Servlet生命周期:实例化、初始化、服务、销毁

2)Servlet中的初始化方法有两个:init(),init(config)

      其中带参数的方法代码如下:

      piblic  void  init(ServletConfig  config)  throws  ServletException{

              this.config=config;

              init();

      }

      另外一个无参的init方法如下:

      public  void  init()  throws  ServletException{

      }

      如果我们想要在Servlet初始化时做一些准备工作,那么我们可以重写init方法

      我们可以通过如下步骤去获取初始化设置的数据

      ----获取config对象:ServletConfig  config=getServletConfig();

      ----获取初始化参数值:config.getInitParameter(key);

2.2学习Servlet中的ServletContext和<context-param>

1)获取ServletContext,有很多方法

      在初始化方法中:ServletContext  servletcontext  =  getServletContext();

      在服务方法中也可以通过request对象获取,也可以通过session获取;

      request.getServletContext();   session.getServletContext();

2)获取初始化值:

      servletContext.getInitParameter();

2.3什么是业务层

 1)Model1和Model2

MVC:Model(模型)、View(视图)、Controller(控制器)

视图层:用于做数据展示以及和用户交互的一个界面

控制层:能够接收客户端的请求,具体的业务功能还是需要借助于模型组件来完成

模型层:模型分为很多种:有比较简单的pojo/vo(value  object),有业务模型组件,有数据访问层组件

               1)pojo/vo:值对象

               2)DAO:数据访问对象

               3)BO:业务对象

区分业务对象和数据访问对象:

1)DAO中的方法都是单精度方法或者称之为细粒度方法。什么叫单精度:一个方法只考虑一个操作,比如添加,那就是insert方法,比如查询,那就是select方法

2)BO中的方法属于业务方法,实际的业务是比较复杂的,因此业务方法的粒度是比较粗的

注册这个功能属于业务功能,也就是说注册这个方法属于业务方法。

那么这个业务方法中包含了多个DAO方法。也就是说注册这个业务功能需要通过多个DAO方法的组合调用,从而完成注册功能的实现

注册:

        1.检查用户名是否已经被注册   ----  DAO中的select操作

        2.向用户表新增一条新用户记录  ----  DAO中的insert操作

        3.向用户积分表新增一条记录(新用户默认初始化积分100分)  ----  DAO中的insert操作

        4.向系统消息表新增一条记录(某某某新用户注册了,需要根据通讯录信息向他的联系人推送消息)  ----  DAO中的insert操作

        5.向系统日志新增一条记录(某用户在某IP在某年某月某日某时某分某秒某毫秒注册)  ----  DAO中的insert操作

3)在库存系统中添加业务层组件

2.4IOC     

1)耦合/依赖

        依赖指的是某某某离不开某某某

        在软件系统中,层与层之间是存在依赖的。我们也称之为耦合

        我们系统架构或者是设计的一个原则是:高内聚低耦合。

        层内部的组成应该是高度聚合的,而层与层之间的关系应该是低耦合的,最理想的状态是0耦合

2)IOC -- 控制反转/DI -- 依赖注入

2.5过滤器Filter

1)Filter也属于Servlet规范

2)Filter开发步骤:新建类实现Filter接口,然后实现其中三个方法:init,doFilter,destroy

      配置Filter,可以用注解@WebFilter,yekeyishiyongxml文件<filter><filter-mapping>

3)Filter在配置时,和servlet一样,也可以配置通配符,例如:@WebFilter("*.do")

4)过滤器链

        1)执行的顺序依次是:A  B  C  demo03  C2  B2  A2

        2)如果采取的是注解的方式进行配置,那么过滤器的拦截顺序是按照全类名的先后顺序排序的

        3)如果采取的是xml的方式进行配置,那么按照配置的先后顺序进行排序

笔记:https://heavy_code_industry.gitee.io/code_heavy_industry/pro001-javaweb/lecture/

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值