网编复习

Posted fzlzc

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了网编复习相关的知识,希望对你有一定的参考价值。

网络安全编程期末复习

第一章 绪论

  • 计算机网络三要素
    • 独立功能的计算机
    • 外围设施(连接设备,传输介质)
    • 网络协议
  • 应用层 表示层 会话层 | 传输层 | 网络层 | 数据链路层 物理层
  • 应用层
  • 传输层
    • tcp udp
  • 网络层
    • icmp igmp ip
  • 链路层
    • arp rarp

      第二章 网络层主要协议

  • 网络层的功能是实现互连网络环境下点到点数据分组的传输,采用无连接的方式。
  • 主要协议
    • IP协议
      • 路由选择、寻址
    • 地址解析协议 ARP
    • 逆地址解析协议 RARP协议
      • ip和物理地址转换
    • 因特网控制报文协议 ICMP
      • 网络控制和差错处理
    • 技术图片
  • IP地址中专门保留了三个区域作为私有地址,用于Intranet内部地址。其地址范围如下:
    • 10.0.0.0 ~ 10.255.255.255
    • 172.16.0.0 ~ 172.31.255.255
    • 192.168.0.0~192.168.255.255
    • 私有地址只能在内部网络中使用,只有通过代理服务器才能与Internet通信。
  • 点分十进制
  • ipv4
    • 32位
    • 五类地址
  • ipv6
    • 128

第三章 传输层主要协议

  • 概述:
    • 实现两个用户进程之间端到端的可靠通信
    • 提供通信服务的最高层,因为传输层一下与用户无关
    • 用户功能中的最低层,程序员可以调用之下的功能
  • 传输层的主要功能
    • 按端口号寻址(进程识别)
    • 分割与重组数据(数据处理)
    • 差错控制和流量控制(服务质量)
    • 连接管理
    • 数据链路层负责点到点之间的数据通信,传输层负责扩大了的点到点之间的通信,即端到端之间的通信。
    • 对数据链路层来说,点与点之间的信道是一条物理链路,而对传输层来说,端与端之间的信道是一通信子网。
  • TCP/IP的运输层有两个不同的协议:
    • 传输控制协议 TCP(Transmission Control Protocol)
      • TCP是面向连接的协议,可以在各种网络之间建立全双工的虚电路连接,实现无乱序、无丢失和无重复的数据传输,它采取了三次握手、两次确认的有效技术,做到了非常可靠。
    • 要实现可靠的数据流传输服务,必须解决的问题
      • 1.可靠性:
        • ①防丢失:确认与重传;
        • ②防重复:报文段序号;
      • 2.传输效率、流量控制:滑动窗口机制;
      • 3.拥塞控制:加速递减与慢启动技术;
      • 4.建立连接:三次握手协议;
      • 5.关闭连接:改进的三次握手协议。
    • 用户数据报协议 UDP(User Datagram Protocol)
      • 无连接
      • 不可靠
      • 面向报文
      • 适用于视频音频传输
  • 三次握手
    • syn=1,ack=0,seq=x
    • syn=1,ack=1,seq=y,req=x+1
    • syn=1,ack=1,seq=x+1,req=y+1
      技术图片

第四章 Socket编程

  • 三种套接字
    • 流式socket(SOCK_STREAM)
      流式套接字提供可靠的、面向连接的通信流;它使用TCP协议,从而保证了数据传输的正确性和顺序性。
    • 数据报socket(SOCK_DGRAM)
      数据报套接字定义了一种无连接的服务,数据通过相互独立的报文进行传输,是无序的,并且不保证是可靠、无差错的。
    • 原始套接字RAW SOCKET
      可以接收本机网卡上的数据帧或者数据包。
  • 数据存储优先顺序
    • 计算机数据存储有两种字节优先顺序:高位字节优先(称为大端模式)和低位字节优先(称为小端模式,PC机通常采用)。
    • Internet 上数据以高位字节优先顺序在网络上传输,需要对这两个字节存储优先顺序进行相互转化。
    • htons()、ntohs()、htonl()和ntohl() (s是short,16位,l是long,32位)
  • socket编程流程
    • 服务器
      • 创建套接字socket()
      • 将本地IP地址绑定到端口号bind()
      • 监听listen()
      • 取出队列的第一个连接请求并接受accept()
      • 接收rev()
      • 发送send()
      • 关闭连接close()
    • 客户端
      • 创建套接字socket()
      • 将本地IP地址绑定到端口号bind()
      • 与服务器建立连接connect()
      • 发送send()
      • 接收rev()
      • 关闭连接close()
    • 地址结构体:struct sockaddr是通用的套接字地址,而struct sockaddr_in则是internet环境下套接字的地址形式,二者长度一样,都是16个字节。二者是并列结构,指向sockaddr_in结构的指针也可以指向sockaddr。一般情况下,需要把sockaddr_in结构强制转换成sockaddr结构再传入系统调用函数中。
    struct sockaddr
    {
           unsigned short sa_family; /*协议族*/
           char sa_data[14]; /*14字节的 协议地址,包含该socket的IP地址和端口号。*/
    };
    struct sockaddr_in
    {
           short int sa_family; /*协议族*/
           unsigned short int sin_port; /*端口号*/
           struct in_addr sin_addr; /*IP地址*/
           unsigned char sin_zero[8]; /*填充0 以保持与struct sockaddr同样大小*/
    };
  • 各函数主要功能及参数
    • int socket(int family, int type, int protocol):建立一个socket连接,可指定socket类型等信息。
      • family:协议族
        • AF_INET:IPv4协议
        • AF_INET6:IPv6协议
      • type:套接字类型
        • SOCK_STREAM:字节流套接字socket
        • SOCK_DGRAM:数据报套接字socket
        • SOCK_RAW:原始套接字socket
      • 返回值:
        • 成功:非负套接字描述符
        • 出错:-1
    • sockaddr或sockaddr_in:地址结构体,用于保存所建立的socket地址信息。
    • WSADATA:存放windows socket初始化信息;
    • WSAStartup(MAKEWORD(1,1),&wsaData);
      • 第一个参数:版本号;
      • 第二个参数用于返回请求的socket版本信息;
      • 成功返回0
    • int bind(int sockfd, struct sockaddr *my_addr, int addrlen)
      :该函数是用于将本地IP地址绑定到端口号,若绑定其他IP地址则不能成功。
      • sockfd: 套接字描述符
      • my_addr:本地地址
      • addrlen:地址长度
      • 返回值:
        • 成功:0
        • 出错:-1
    • int listen(int sockfd, int backlog):创建一个等待队列,在其中存放未处理的客户端连接请求。
      • backlog:请求队列中允许的最大请求数,大多数系统缺省值为5
    • int connect(int sockfd, struct sockaddr *serv_addr, int addrlen):该函数在TCP中是用于bind()的之后的client端,用于与服务器端建立连接。
      • addr:服务器端地址
      • addrlen:地址结构体长度
      • 返回值:
        • 成功:0
        • 出错:-1
    • int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen)
      • 返回值:
        • 成功:0
        • 出错:-1
    • int send(int sockfd, const void *msg, int len, int flags)
      • msg:指向要发送的数据的指针
      • len:数据长度
      • flags:一般为零
      • 返回值:
        • 成功:发送的字节数
        • 出错:-1
          -int recv(int sockfd, void *buf,int len, unsigned int flags)
      • buf:存放接收数据的缓冲区
      • 返回值:
        • 成功:发送的字节数
        • 出错:-1
    • WSACleanup:解除与Socket库的绑定并且释放Socket库所占用的系统资源。

      第五章 应用层主要协议

  • 常用协议端口
    • http协议端口:80
    • https协议端口:443
    • ftp协议端口:21
    • SMTP协议端口:25
    • POP3协议端口:110。
  • 域名服务器
    • 本地域名服务器
    • 根域名服务器
    • 授权域名服务器
  • 持久连接和非持久连接(HTTP1.1默认的连接方式为持久连接)
    • 非持久连接:每个TCP连接只能有一个请求/响应对
    • 持久连接:服务器在发出响应后让TCP连接继续打开着。同一对客户/服务器之间的后续请求和响应可以通过这个连接发送。
      get post

6.1 Web编程概述

  • 常见应用系统的体系结构
    • cs结构:客户/服务器(Client/Server)结构
    • bs结构:浏览器/服务器(Browser/Server)结构
  • html常用标记
    • 头部标记<HEAD>基本描述信息</HEAD>
    • 网页标题标记<TITLE> 标题文字 </TITLE>
    • 元信息标记:
      • 可重复出现在头部标记中,用来指明本网页的作者、网页制作工具、所包含的的关键字,以及其他一些描述网页信息。
      • 创建HTTP响应头,以便让浏览器知道如何去处理这个网页,例如这个网页什么时候过期,隔多少时间自动刷新等。
      • <META>标记有name、http-equiv、content三个属性。Name和http-equiv可任选一个与content配合使用。
        • 设定网页的描述信息:
          <meta name=“discription” content=“这是一个商务网站的主页”>
        • 声明网页的作者:
          <meta name=“author” content=“李程”>
        • 声明网页采用的字符集:
          <meta http-equiv=“Content-Type” content=“text/html;charset=gb2312”>
        • 设定自动刷新间隔秒数:
          <meta http-equiv=“refresh” content=“10”>
    • <BODY>标记的属性及其说明
      • text:页面文字颜色
      • bgcolor:页面背景颜色
      • background:页面背景图片
      • bgproperties:页面背景图像是否随页面滚动
      • link:设定默认的链接颜色
      • alink:设定鼠标靠近时链接颜色
      • vlink:设定已访问的链接颜色
    • 标题文字标记:<Hn align = 对齐方式> 标题文字 </Hn>
    • 分段标记:<P align = 对齐方式> 文字 </P>
    • 换行标记:<br>,可连续使用多个,多次换行
    • 横线标记:<HR size = 粗细 align = 对齐方式 width = 宽度 color = 颜色 noshade=阴影>
      • size的粗细,单位px; noshade:false有阴影,true没有阴影;
    • 格式保留标记:<pre>文本内容</pre>
      • 在格式保留标记中的文本将保持原样输出。
    • 文字有关的标记
      • font字体
      • b粗体
      • i斜体
    • 图像标记:<IMG src= 图片文件的URL align = 对齐方式 border = 边框宽度 alt = 说明性替代文字 height = 图像高度 width = 图像宽度 hspace = 水平边距 vspace = 垂直边距>
      • Src指明图片文件的路径和文件名
      • Align有top、middle、bottom、left、right五种值。
      • Alt指明图像未下载时的图像说明文字
    • 超链接标记:<A href = URL target=目标窗口>用作链接的文字或图像</A>
      • Href:用于指定被链接的文件URL
      • Target:用于指定被链接的网页所显示的窗口,取值:_blank, _parent , _self , _top
    • 脚本链接:<a href=“javascript:脚本函数”>说明文字</a>

6.2 HTML基础

  • HTML表格有关标记
    • 表格标记:<table></table>
    • 行标记:<tr></tr>
    • 表头单元格标记:<th></th>
    • 单元格标记:<td></td>
  • 表格定义格式
<TABLE  align = 对齐方式  bgcolor = 表格背景颜色  background= 表格背景图像 width = 表格宽度  height = 表格高度  border = 边框粗细 bordercolor = 边框颜色 cellspacing = 单元格间距  cellpadding = 单元格边距 >
   <TR><TH>…</TH><TH>…</TH>……</TR>
   <TR><TD>…</TD><TD>…</TD>……</TR>
   <TR><TD>…</TD><TD>…</TD>……</TR>
   ……
</TABLE>
  • 框架定义格式
<FRAMESET cols = 框架列数及各列宽度  rows = 框架行数及各行高度 bordercolor = 边框颜色 frameborder = 框架边框 framespacing = 框架间距>
   <FRAME name = 框架名称  target = 目标框架 src = URL  border = 边框宽度  bordercolor = 边框颜色>
   <FRAME ……>
   ……
</FRAMESET>
  • 表单定义格式
<form >
    表单元素
</form>
  • <form>标记属性
    • name:给出表单名称,用于脚本编程;
    • method:用来定义服务器表单除了程序从表单中年获得信息的方式
      • get方法将数据打包作为URL整体的一部分传递给服务器。
      • post方法分离地传递数据给服务器表单处理程序,不需要设置QUERY_STRING环境变量,因此POST有更好的安全性,表单中数据的多少是任意的,因为这些数据从来也不分配到一个变量里。
    • action:设置表单处理程序的网络路径和程序名,当用户提交表单时,服务器将执行action属性所设置的程序。
  • 输入类型标记:<input type="" name = "" value="" …>
    • type属性,给出输入控件的类型,常用的控件类型有:text,textarea,radio,checkbox,button,image,hidden,password,file,submit/reset
    • name属性,设置输入控件的名字,程序需要通过控件名称处理用户输入数据,同时,设置控件名称可以增加HTML代码的可读性。
    • value属性,保存用户的输入和选择,服务器通过调用输入区域的value属性值来获得输入控件的数据。另外,用户可以通过value属性来指定输入区域的缺省值 。
    • size属性,设置表示文本框的显示长度。
    • maxlength属性,maxlength是文本框中输入的有效数据长度。
  • 单行文本框输入:<input type="text" name = "" value=""…>
eg:
<form name="myForm" method="POST" action="/custom/feedback.jsp">
用户账户:<input type="text" name=“myaccount" size="10" value="guest" maxlength="8">   
</form>
  • 密码文本框输入:<input type=" password " …>
  • 多行文本框输入:
<textarea name=" " rows="" cols="">
    数据
</textarea>
  • 按钮输入:<input type="button" value="回前一页" onclick="history.go( -1 );return true;">
  • 单选钮输入:<input type=" radio" >
    • name属性,单选扭的名称,一般是若干个radio一组,取相同的name。
    • checked属性,用来设置该单选框缺省时是否被选中,相同name的多个radio中只能有一个选择,或都不使用该参数。
    • value属性,存储单旋钮的取值,多个具有相同name的单旋钮应该具有不同的value。
    <form name="myForm" method="POST" action="/custom/feedback.jsp">
       性别:
       <input type="radio" name="gender" value="Female">女性
       <input type="radio" name="gender" value="Male" checked>男性
       <br><br>
      学历:
       <input type="radio" name="degree" value="Bachelor" checked>学士
       <input type="radio" name="degree" value="Master">硕士
       <input type="radio" name="degree" value="Doctor">博士
    </form>
  • 复选框输入:<input type=" checkbox " …>
    • name属性,name为复选框的名称,便于程序获取用户输入
    • value属性,每一个checkbox 必须有一个value,当复选框选中时,value值便会传到表单的action属性指定的程序中。
    • checked属性,用来设置该复选框缺省时是否被选中。
<form name="myForm" method="POST" action="/progs/feedback.jsp">
兴趣爱好:<br><br>
   <input type="checkbox" name="intrests01" value="Sports" checked>体育
   <input type="checkbox" name="intrests02" value="Music">音乐
   <input type="checkbox" name="intrests03" value="Arts">文学
   <input type="checkbox" name="intrests04" value="Others" checked>其它
</form>
  • 复选列表框输入
    • name属性,name为下拉式列表控件名称,便于程序获取用户输入。
    • size属性,下拉式列表的高度,缺省时值为1,若没有设置(加入)multiple属性,显示的将是一个弹出式的列表框。若使用此参数则不会有PopUp效果。如果小于可选的项目数量,则出现垂直滚动条。
    • multiple属性,指定是否可以多选。multiple属性不用赋值,直接加入<select>标记中即可使用,加入了此属性后列表框就成了可多选的了。
<select name="" size="">
      <option value="">…</option>
     <option value="">…</option>
     …  …
</select>  
  • 隐藏元素:<input type="hidden" name=" " value=" "…>
    • 在一个表单中,可以定义隐藏表单元素,它在网页上并不显示,不需要用户输入,主要目的是随表单一起传给表单处理程序一个特定的值,用于为网页处理程序传送数据。
  • 文件上传:<input type="file" name=" " size=" " accept=" " >
    • name属性为控件名称,
    • size属性显示文本框长度。
    • Accept属性设置上载文件过滤,即点击“浏览”按钮时,只显示指定文件类型的文件列表。
  • 表单提交标记:<input type=“submit”…>
  • 重填按钮:<input type="reset"…>
    • name属性,这和其它控件属性不同,在提交表单中,name可以指定一个函数,需要和form标记中action属性的程序配合。一般情况下不需要name属性。
    • value属性,提交按钮的显示名字,一般为“确定”、“提交”等易于理解的名字
    • Onclick事件属性。
eg:
<form method="POST" action=“xxxxxxxxx”>
<input type="submit" value="提交" name="B1">
<input type="reset" value="重置" name="B2">
</form>
  • 例子:使用form计算阶乘
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>A simple example for Form</title>
<script language="javascript">
var calcOnly = false;
function fact(n)
{
  if  (n==0)
return 1;
  else
     return n*fact(n-1);
}
function calcFact(n)
{
  var res;
  res=fact(n);
  document.myForm.result.value = res;
  calcOnly=true;   
  document.myForm.n.focus();
}
</script>
</head>

<body>
<p align="center"><font size="5">使用表单示例</font>
</p><hr>
<form name="myForm">
<div align="center">
  <table border="1" cellpadding="0" width="303" height="62">
    <tr>
      <th colspan="3" height="26" width="292" bgcolor="#C0C0C0">
        <p align="center">计算n的阶乘</p></td>
    </tr>
    <tr>
      <td>输入n<input type="text" name="n" size="6" onChange="calcFact(this.value)">
      </td>
      <td><input type="button" value="阶乘等于" name="equ" onClick="calcFact(n.value)">
</td>
      <td><input type="text" name="result" size="13"
                onChange="if (calcOnly) { alert('This is a calculated field.');}">
      </td>
    </tr>
  </table>
</div>
</form>
</body>
</html>
  • 层次块标记div:<div>…</div>
    • 定义网页上的一个矩形块,中间可以包含引起行中断的标记,如标记等。
    • Id属性:用于标记一个
      块,以便引用该块。
    • style属性:
      没有默认的显示样式,必须使用style属性和class样式类定义图层块的位置、大小、显示属性等。
    • <div id =" "  style =" ">
      </div>
    • 例子:定义div块并进行平滑移动
    • <html>
      <head>
      <title>Moving Div Sample</title>
      <script language="javascript">
      var movingID = null;
      var scrolling = false;
      function startMove()
      {
        var left = eval(div1.style.left.replace("px",""));
        if (left <document.body.scrollWidth-150)
            div1.style.left = left+1;
        else
            div1.style.left =10;
        movingID = setTimeout("startMove()",1);
       }
       function stopMove()
       {
         clearTimeout(movingID);
       }
      </script>
      </head>
      <body onDblClick = "startMove()" onMouseDown="stopMove()">
         <div id="div1" style="visibility:visible; position:absolute; left:10; top:10; z-index:1;">
            <table bgColor ="#ffffcc" border = "1" cellPadding ="0" cellSpacing = "0">
               <tr>
                 <td>Div moving....</td>
               </tr>
            </table>
          </div>
          <p>双击鼠标,块开始从左向右移动</p>
          <p>单击鼠标,块停止移动</p>
      </body>
      </html>
      • 在行内定义一个区域,也就是一行内可以被划分成好几个区域,从而实现某种特定效果。
        • 标记相比,在CSS定义中属于一个行内元素,而
          是块级元素
        eg:
        <html>
        <script>
        function setspan(id)
        {
        if (id==1)
        a.innerText="更新文本内容…";
          if ( id==2)
        a.innerHTML="<font color=red size=7>更新html代码</font>"
        }
        </script>
        <body>
          <a href=javascript:setspan(1)>更新span内容</a></br>
          <a href=javascript:setspan(2)>更新html代码</a></br>
         <span id=a></span>
        </body>
        </html>
      • 例子:综合使用JavaScript+DIV+SPAN+Form
      <html>
      <head>
      <script language="javascript">
      function check()
      {
          var checked_num=0;
          var length=document.form1.answer.length;
          for(i=0;i<length;i++)
          {
              if(document.form1.answer[i].checked)
                  checked_num++;
            }
          return checked_num;
      }
      function show()
      {
          var num=check();
          result.innerHTML ="你已经选择了:"+"<font color=red>"+num;+"</font>"
      }
      function mysubmit()
      {
          var checked_num=check();
          if (checked_num>3)
             alert("您选择了超过三种兴趣");
          else
             form1.submit();
      }
      </script>
      </head>
      <body>
      <form action="myformsave.jsp" method="post" name="form1">
      <table align="center">
      <tr>
      <td>
        <input type="checkbox" name="answer" value="1" onclick="javascript:show();">兴趣1
        <input type="checkbox" name="answer" value="2" onclick="javascript:show();">兴趣2
        <input type="checkbox" name="answer" value="3" onclick="javascript:show();">兴趣3
        <input type="checkbox" name="answer" value="4" onclick="javascript:show();">兴趣4
      </td>
      <tr>
      <td align="center">
        <input type="button" value="提交" class="menu" onClick="mysubmit()">
      </td>
      </tr>
      </table>
      </form>
      <hr>
      <div id="result"></div>
      </body>
      </html>

      6.3 CSS

      • 三种样式表
        • 内嵌样式(Inline Style)
          • 将STYLE属性直接加在超文本标记内;
        • 内部样式表(Internal Style Sheet)
          • 将样式规则写在head中的标签里
        • 外部样式表(External Style Sheet)
          • 引入方法:
            • <link REL=“stylesheet” TYPE=“text/css” HREF=“home.css”>
            • <STYLE TYPE=“text/css”>   
              @import url(home.css);  
              </STYLE>
      • CSS基本语法:selector {property: value}
      • 标记选择符:p {font-family: “sans serif”}
      • 类选择符:让相同的标记具有不同的样式,故而优先级高于标记选择符
        • CSS中定义:
          • p.left{text-align: left}
          • p.center{text-align: center}
        • 页面中调用:
          • <p class=“left”>段落文字左对齐。</p>
          • <p class="center">段落文字居中。</p>
      • 伪类:使链接在不同状态下具有不同的样式效果,名称是默认定义好的
        • 语法:selector: pseudo-class {property: value}
        • 伪类的取值:
          技术图片

        • 注意:在CSS定义中,a:hover必须被置于a:link和a:visited之后才是有效的。同时,a:active必须被置于a:hover之后也才是有效的。伪类名称对大小写不敏感。
      • ID选择符:定义ID选择符时在ID名称前面加一个“#”号,有如下两种应用:
        • (1) 在“#”号前指定标记名,只能应用于指定标记中具有此ID的元素。  
        • (2) 以“#”号开头,可应用于所有具有此ID的元素。
        • CSS中定义:
          • #one{color:#FF0000;}
          • #two{color:#000000;}
        • 页面中调用:
          • <p id="one">ID选择符1</p>
          • <p id="two">ID选择符2</p>
      • CSS继承
        • (1) 外部的元素样式会保留下来继承给该元素。
        • (2) 当样式表继承遇到冲突时,以最后定义的样式为准。
        • (3) 不同的选择符定义相同的元素时,其优先级次序依次从高到低为行内选择符、ID选择符、类选择符、标记选择符。除非使用!important改变提升某样式的优先权。
        • eg:P{color :#FF0000 !important}
        • eg: <h1 class=“green yellow”>这里以前一个为准</h1>
      • 常用CSS属性
        • 字体属性
          • color:字体颜色
          • font-family:字体名称
          • font-size:字体大小
          • font-style:字体风格,italic斜体
          • font-weight:字体粗细
        • 文本属性
          • direction:设置文本方向
          • text-align:设置文本对齐方向
          • text-decoration:文本修饰属性,下划线之类的
          • text-indent:文本缩进属性,设置首行缩进
          • text-transform:控制元素中的字母,大小写
        • 颜色和背景属性
          • background-color:背景颜色

      6.4 Javascript编程技术

      • 概述
        • JavaScript是一种脚本编写语言,采用小程序段的方式实现编程。其基本结构形式与C、Java、C++十分类似,但不像这些语言需要先编译,而是在程序运行过程中才被逐行解释的
      • 代码格式
        • 内嵌式
        <script language=“JavaScript”>   
            //JavaScript语言代码部分
        </script>
        • 外挂式
        <script src=“myscript.js”></script>
      • 在网页中使用JavaScript时执行顺序与其位置有关
        • 1) 在和标签之间:在显示页面之前,执行JavaScript程序;
        • 2) 在和标签之间:按照网页内容的顺序依次执行
      • 创建对象:var Object1=new Object(parameters table);
      • 动态增删表格
      <html>
      <head>
      <script language="javascript">
          var row_index=0;
          //建立一个函数addRow()用于建立新的一行
          function addRow(){
              row_index++;
              //新增一行赋给变量new_row,表示建立了一个tr
              var new_row=Table1.insertRow(Table1.rows.length);
              //给tr元素设置属性,参数1表示属性名(id),参数2表示该属性的值
              new_row.setAttribute("id", "row"+row_index);
              //新增一列赋给变量new_col,表示建立了一个td
              var new_col=new_row.insertCell(0);
              //给列里赋值
              new_col.innerHTML="<input type='text'name='name"+row_index+"'size=10>";
              var new_col=new_row.insertCell(1);
              new_col.innerHTML="<input type='text'name='age"+row_index+"'size=2>";
              var new_col=new_row.insertCell(2);
              new_col.innerHTML="<select name=‘sex"+row_index+"'><option value='男'>男</option><option value='女'>女</option></select>";
              var new_col=new_row.insertCell(3);
              new_col.innerHTML="<input type='text' name='phone"+row_index+"' size=10>";
              var new_col=new_row.insertCell(4);
              new_col.innerHTML="<input type='text' name='spec"+row_index+"' size=10>";
              var new_col=new_row.insertCell(5);
              new_col.innerHTML="<input type='button' value='删除此行' onclick="delete_row('row"+row_index+ "')">";
              }
              function delete_row(rname){
                  //函数delete_row用于删除一行
                  var i;
                  i=Table1.rows(rname).rowIndex;
                              if (confirm('确定删除第'+i+'行?'))
                  Table1.deleteRow(i);
              }
          </script>
      
      </head>
      <body>
      <table border=1 id="Table1" style="text-align:center">
        <tr>
          <td width="84">姓名</td>
          <td width="35">年龄</td>
          <td width="44">性别</td>
          <td width="84">电话</td>
          <td width="84">学历</td>
          <td width="68">&nbsp;</td>
        </tr>
      </table>
      <br/>
      <input type="button" value="增加一行" onclick="javascript:addRow()">
      </body>
      </html>

      6.5 服务器编程—Servlet

      • HTTP请求消息
      GET /somedir/page.html HTTP/1.1
      Host:www.besti.edu.cn
      Connection:close
      User-agent:Mozilla/4.0
      Accept-language:zh-cn
      
      POST /HTTP/1.1
      Host: www.wrox.com
      User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.6)
      Gecko/20050225 Firefox/1.0.1
      Content-Type: application/x-www-form-urlencoded
      Content-Length: 40
      Connection: Keep-Alive
      user=zhangsan&password=lisi
      • Servlet概述
        • 定义:Servlet 是一个 Java程序,是在服务器上运行以处理客户端请求、业务逻辑并做出响应的程序
        • 需要运行在服务器端
        • 需要Web容器的支持
        • Java编写
      • Servlet代码结构
      //初始化方法
      public void init() throws ServletException {
      }
      //处理HTTP Get请求
      public void doGet(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException {
      }
      //处理HTTP Post请求
      public void doPost(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException {
      }
      //销毁方法
      public void destroy() {
      super.destroy();
      }
      • 前端中method使用get方法提交,则使用servlet中的doGet()方法,相应的,还有doPost()方法。
      • web.xml的配置
      <web-app>
      <servlet>   //声名servlet对象
          <servlet-name> HelloServlet </servlet-name>  //自行定义
          <servlet-class> y2javaee.sg.ch02.HelloServlet </servlet-class>   //路径,要有完整的包名.类名
      </servlet>
      
      <servlet-mapping>   //映射servlet
          <servlet-name> HelloServlet </servlet-name>   //与上面定义的相同
          <url-pattern> /HelloServlet </url-pattern>  //与action相同,在url中体现
      </servlet-mapping>
      </web-app>
      • 一个servlet可以使用多个url-pattern规则,每个标签代表1个匹配规则
      • 精确匹配:中配置的项必须与url完全精确匹配
      • Servlet使用过程
        • 前端配置表单时声名一个method和action,在用户完成填写后提交给后台;
        • 在web.xml的<servlet-mapping>中查找匹配的<url-pattern>
        • 再根据<url-pattern><servlet-name>,找到有相同<servlet-name><servlet-class>
        • 然后根据路径执行这个指定的java程序。

      6.6 JDBC数据库编程

      • JDBC开发流程
        • 加载JDBC驱动程序;
        Class.forName("com.mysql.cj.jdbc.Driver");
        • 建立DB连接;
        Class.forName("com.hxtt.sql.access.AccessDriver").newInstance();
        String url = "jdbc:Access:////C:/Database1.mdb";
        String uname = "";
        String password = "";
        Connection conn = DriverManager.getConnection(url, uname, password);
        • 创建SQL语句;
          • PreparedStatement与Statement的区别:PreparedStatement是预编译的,由于 PreparedStatement 对象已预编译过,所以其执行速度要快于 Statement 对象
          String sql = "select * from Account";
          Statement stmt = conn.createStatement();
          或 PreparedStatement pstmt = conn.prepareStatement();
        • 执行SQL语句;
          ResultSet rs=stmt.executeQuery(sql);
          • executeQuery对数据库进行查询;
          • executeUpdate对数据库进行增、删、改;
        • 得到数据库结果;
        String dbUserName = rs.getString("userID");
        String dbPassWord = rs.getString("password");
        • 断开连接
        Stmt.close();
        conn.close();

      以上是关于网编复习的主要内容,如果未能解决你的问题,请参考以下文章

      网编提高 进程阶段

      动态SQL基础概念复习(Javaweb作业5)

      7.网编

      网编试题

      网编课设

      网编并发