zoukankan      html  css  js  c++  java
  • 网编复习

    网络安全编程期末复习

    第一章 绪论

    • 计算机网络三要素
      • 独立功能的计算机
      • 外围设施(连接设备,传输介质)
      • 网络协议
    • 应用层 表示层 会话层 | 传输层 | 网络层 | 数据链路层 物理层
    • 应用层
    • 传输层
      • 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. <HEAD></HEAD>标签之间:在显示页面之前,执行JavaScript程序;
        1. <BODY></BODY>标签之间:按照网页内容的顺序依次执行
    • 创建对象: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();
    
  • 相关阅读:
    Android自定义属性,format详解
    设置EditText是否可编辑
    Android中Application设置全局变量以及传值
    android:ellipsize属性的含义
    Java集合框架List,Map,Set等全面介绍
    二十款漂亮的CSS字体样式,让你受用非浅
    IE浏览器不见了
    display属性值:
    用CSS设置多个背景、背景渐变、指定背景大小
    [转]IE6双倍边距——IE布局BUG集锦
  • 原文地址:https://www.cnblogs.com/fzlzc/p/12114304.html