zoukankan      html  css  js  c++  java
  • java web 学习

    课程目标: HTML 、CSS、JAVASCRIPT、Servlet 、jsp、Ajax

     

    一、HTML

       1.了解web的标准

                W3C组织:是国际互联网标准指定组织。网络协议分为:底层的网络协议,主要包括:TCP/IP、http、ftp...。和网络传输内容协议:XML/HTML/CSS/JAVASCRIPT/...

                   上述的标准都有各自的功能,每个标准都需要不同的厂商的支持,我们作为程序员要了解这些标准,才能将其应用于开发。

           现在HTML的最高版本是5.0,但是现在还没有形成统一的标准,只有少数的浏览器支持其新特性,所以现在使用的是4.0或是XHTML1.0,4.0和1.0的区别在于他们对书写格式要求不同,前者较宽松,后者严格。

                 大家都说现在我们进入WED2.0时代,其实WED2.0就是代表网页使用W3C组织制定的2.0版本系列的技术标准来实现的时代,他 主要强调,通过浏览器展示更加丰富的页面效果,提高用户的体验,同时让浏览器显示的内容适应越来越多的计算机设备,也就是说让这些网页不仅可以在电脑上打开,用其他的一些设备,比如/;手机、mp3、mp4、等都可以用浏览器打开网页。

         2.了解html语言

       html语言是从XML中衍生出来的标记语言。HTML是专门在浏览器中显示内容的组织结构语言(内容的排版),HTML在早期,技术比较贫乏,用于做网页的内容布局,页面的样式修饰,等,现在已经过时。。。其实在早期网页上的内容都是由HTML语言来实现,后来随着技术的发展,出现了css,javascript等丰富了网页的现实效果,他们的分工越来越细化,

            3.HTML的语法

              (1)网页HTML版本声明,声明该页面中使用的HTML版本

       <!DOCTYPE  XHML 1.0>声明该网页使用的是XHTML1.0

        <!DOCTYPE HTML PUBLIC"-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">   <html>
     <head></head>
     <body></body>
    </html>
       
        (2)HTML 文件标记
        <html>
       <head></head>
       <body></body>
      </html>
     
     (3)HTML 内容排版标记
        一级标题、二级标题、、、、、、
        <h1></h1>、、、<h6></h6>
        段落
        <p></p>
        文字
        <span>HTML</span> 
        换行       <br />
        分割线     <hr />
        块、层     <div></div>  (一个矩形的区域) (盒子)
           注释       <!-- -->
       
     (4)HTML 字体标记
        <strong></strong>  <font></font>  <B></B> <I></I>
        <EM></EM>  
        都可以用 CSS 替换
     (5)HTML 清单标记
        有序列表
      <ol>
       <li></li>
       <li></li>
       <li></li>
      </ol>
        无序列表
        <ul>
       <li></li>
       <li></li>
       <li></li>
      </ul>
        自定义列表
          <dl>
       <dd></dd>
       <dd></dd>
       <dd></dd>
       </dl>
     (6)HTML 调色标记
         <font>
       推荐使用 CSS  <p style="color:red" ></p>
     (7)HTML 多媒体标记
        <embed  >
        目前使用很少
     
    6、掌握  HTML 常用标签
       表格(显示数据给用户看)
         <table>
      <tr><td></td><td></td><td></td><td></td></tr>
      <tr><td></td><td></td><td></td><td></td></tr>
      <tr><td></td><td></td><td></td><td></td></tr>
      </table>
      
      
       表单(接受用户输入数据)
         <form  action="" method="" name="" id="">
      用户名:<input type="text" name="name" value=""  /><br />
      密码:<input type="password" name="pwd" value=""  /><br />
      头像:<input type="file" name="img" value=""  /><br />
      爱好:<input type="checkbox" name="like" value="1"  />篮球
            <input type="checkbox" name="like" value="2"  />睡觉
         <input type="checkbox" name="like" value="3"  />吃饭
         <input type="checkbox" name="like" value="4"  />游戏
         <input type="checkbox" name="like" value="5"  />上网
         <input type="checkbox" name="like" value="6"  />学习
      <br />
      性别:<input type="radio" name="sex" value="1" checked />男
            <input type="radio" name="sex" value="2"  />女
      <br />
      <input type="submit" name="" value="提交"  /><br />
      <input type="reset" name="" value="取消"  /><br />
      <input type="button" name="" value="返回"  /><br />
      
      </form>

     

     

    二、CSS

    1.了解CSS的作用

          作用:CSS层叠样式表:在网页开发的只有HTML既表现内容有表现样式;后来网页设计人员开发了CSS吧翁也的内容和样式分开,

    样式表顾名思义就是用来 控制输出内容的样式的。样式表是以.css为后缀的文件 ,内容是HTML中的标签内容的样式。使用样式表可以使你的页面更加丰富。

    2.样式表的形式及原理

      形式:样式表主要有四种形式:分别为:行内引用、页面嵌套、外部导入、和外部链接,

      CSS盒装原理:在Css中巴HTML中的每一个标签都看作是一个个矩形的盒子,整个网页是由一个个盒子堆砌而成

      在HTML中的每一个标签都可以写以讹个属性,来设计器内容的样式即<p style="font-color;">你好</p>

      页面嵌套就是在页面的头部及head标签内插入<style type="text/css"></style>标签,在style标签内写入你的样式

    外部导入,部分浏览器不支持
                <style type="text/css">
        @import "css url";
       </style>
      外部链接,最常用的方式
               <link href="css url" rel="stylesheet" type="text/css" />

     

    4、掌握 CSS 的选择器
       选择器:在 HTML 代码中,进行选择的工具,CSS 给选中的标签设置样式。选择器就是在HTML标签的后面加上一个属性

       基本选择器:
       (1)元素选择器:element
           <p></p>
        p{}  一般选中多个标签
       (2)id  选择器:
           <div id="aa"></div>
        
        #aa{}   由于 id 唯一,一次选中一个标签
        
       (3)类别选择器:人为设置的类别,可以给多个不同的标签设置相同的样式。
           <a  class="mycss"></a>
        <p  class="mycss"></p>
        <div class="mycss"></div>
        
        .mycss{}   一般找到有相同 class 属性名的标签,多个标签
     
     
     复合选择器:
     (1)并集选择器,同级标签,同时被选中
         <a  class="mycss"></a>
         <p  class="mycss"></p>
         <div class="mycss"></div>
      
      a,p,div{}
        (2)交集选择器,适用于嵌套的标签中,一直查找到
    嵌套最深的标签
            <div>
          <p>
        <a>sdf</a>
       </p>
      </div>
      
      div p a{}
      div>p>a{}
     
     属性选择器
        <li id="cake">
     
        li[id="cake"]
        
     
       
    5、掌握 CSS 基本语法
        CSS 能够修饰的样式如下:
     字体 Font
         大小、字体、颜色、粗细、下划线、删除线、斜体、平方根
      
      还可以使用在线的字体库:Google Font
      
     文本 Text
         
     背景 Background
          background 开头的所有属性
     
     定位 Positioning
         position: static  默认的流布局,按照标签编写顺序显示
                absolute: 绝对定位,把某块从整个代码上下
          顺序中取出,相对浏览器左上角,固定住。
          
          relative: 相对定位(相对于前一个标签)
          fixed:  固定定位(相对于浏览器可见窗口)
          
      z-index:    
      
     尺寸 Dimensions
          width  height
       
     布局 Layout
          float   层浮动,
     
     盒子
       border  padding margin
     
     列表项目 Lists
      主要用于把列表修饰成菜单项,横、竖的菜单项
     
     表格 Table
         表格插件
     

    6、掌握 CSS API 的查询和使用方法


     
    7、了解 JavaScript 来历、作用


    8、 补充
        MIME 类型:
        通过 HTTP 协议所传送的内容的格式:
         文本、
      应用程序、
      特殊文档、
      图片、
      视频、音频
      
        单位:
        颜色:
            英文单词:red green blue 三原色
         十进制数字:RGB  0-255  数字越小、颜色越深
         十六进制数字:RRGGBB  0-15 0-9a-f   
                     #(声明 16 进制数) 
            #33ff22    -->  #3f2
         
        长度:
            相对长度
             % 
          ex    相对一个小写 x 字母的高度
          em    相对一个大写 M 字母的高度
         绝对长度
               厘米(cm) 毫米(mm) 英寸(in) 派(pc)
         磅(pt)
         1 in = 6pc = 72pt 
         1 pc = 1/6 in
         1 cm = 10 mm = 0.3937 in
       密度单位 
         代表屏幕上面的一个亮点  px
         主要使用 px ,

    三.javascript

    1.javascript是网景公司开发的语言,自能在浏览器中运行。作用是提供用户的交互,验证数据,动态的改变HTML文档中的内容。javascript是一个基于对象的语言,可以直接带你用浏览器内部的组件,在代码中用对象来表示这些组件。在javascript主要由对象。事件,函数组成。所有对象的父类是窗口即window,在窗口是中常用的对象还有document,location。history等;事件是在浏览器内部能够进行的操作,主要包括鼠标事件,键盘事件,表单事件和浏览器自带的事件;   函数是人工编写的,把一定的逻辑处理代码写为一个整体,由用户调用事件来触发调用;

                在javascript中函数内没有数据类型的定义,变量需要由var来声明,函数需要有function来声明 例:

                            function 函数名(){  var name1= 变量值(boolean);
        
                                           name1 = DOM object;
       
                                                    name1 = 50;
                                       }

     

    2.DOM是由W3C组织制定的javascript标准

    、掌握 Dom API 开发 JavaScript 应用--对输入进行验证

       ECMA 规定的访问  某个 html 标签对象的 name 属性得到
    该标签的对象
       <form name="aa" >
      <input type="text"  name="nn" value="" />
       </form>
       //得到  input 输入框对象 
       document.aa.nn.value;
          
       了解  HTML Document 文档
         整个文档对象    document
      每个节点对象    html标签
      节点中包含的文本内容,文本对象:纯文字
         每个标签中的属性,属性对象:

     
       常用属性
        .nodeName;   得到标签名
     .firstChild  得到紧挨着当前标签的对象
     
       
       常用方法   
       通过标签名,查找对象,一般得到的是数组
       document.getElementsByTagName("div")
       
       <body >
      <div ></div>
      <div></div>
       </body>
       
       使用 DOM 进行表单输入验证:
       (1)必须要有表单
       (2)要有各种验证条件(非空、长度、格式、非法字符、相同)

    目标
        回顾 JavaScript DOM 编程
     掌握 jQuery 框架
     掌握 jQuery API 的基本方法
     
     了解 WEB 应用程序
     了解 Web 应用程序的基础协议---HTTP 协议
     了解 Web 服务器
     掌握 Tomcat 服务器的安装、配置方法
     掌握 Servlet 的基本开发步骤
     
    1、 回顾 JavaScript DOM 编程
     javaScript 是基于对象的脚步语言,在浏览器中运行,
    由 W3C、ECMA 制定了标准。
        作用:
      (1)通过 事件处理 ,响应用户输入
      (2)通过 正则表达式、JavaScript 逻辑编码,完成数据验证
      (3)通过 DOM API 中的方法,改变页面内容。
          obj.innerHTML="<h1>改变后的内容</h1>";
     
     <form name="fr"  action="#" method="post">
      <input type="text" name="user"  id="uname" value="" />
      <span id="msg"></span>
      <br />
      
      <input type="button" 
          onClick="checkUser();"
              value="提交" /><br />
     </form>
     
     ECMA
       function checkUser(){
      var name = document.fr.user.value;
      if(name == ""){
       alert("请输入用户名");
       
       return false;
      }
      
       }
     
     DOM
       function checkUser(){
      //var name = #uname
      var name = document.getElementById("uname").value;

      if(name == ""){
       //alert("请输入用户名");
       document.getElementById("msg").innerHTML="请输入用户名";
       document.getElementById("msg").focus();
       return false;
      }
       }
       
       &*&   ^o^
       
       
       
     正则表达式验证  
     

    2、掌握 jQuery 框架
       jQuery--javaScript Query,是 火狐浏览器公司一个 JavaScript
    程序员个人开发的一套 简化 javaScript 开发的框架。
       jquery.com
       
       优点:
       (1)兼容各种浏览器
       (2)语法超级简单  (CSS 选择器语法)
       (3)支持 CSS 1-3 各种属性
       (4)轻量级框架,文件大小很小 
       (5)有丰富的插件可以使用、有整套的 UI 界面可以使用
      

    3、掌握 jQuery API 的基本方法
     使用 jQuery ,先要把 javaScript 中原有的对象封装
    成 jQuery 对象------------$();

        (1)在 页面中导入 jquery 核心文件
     (2)在 页面 javaScript 中,编写一个函数--文档加载完毕
        时触发的函数。
        $(document).ready(function(){
       
        });
        (3)使用 选择器,找到页面上要操作的  标签对象
     (4)找到对象后,转化成 jquery 对象,调用相应的方法
           操作该标签的属性和 CSS 

    4、了解 WEB 应用程序
     应用程序:为解决某些特定功能要求而通过代码实现的软件产品。
     Web 应用程序:通过 互联网来访问,使用浏览器打开,页面
    使用 Web(HTML、CSS、JavaScript) 技术来展示。后台可以有很多
    选择。综合上述技术,完成的软件产品。
     
     FaceBook:
     Google
     
     特点:
     (1)软件更新,不影响用户使用。

    5、了解 Web 应用程序的基础协议---HTTP 协议
        互联网:基础协议  tcp/ip 协议。
             应用层协议  ftp、http、
     
     ftp://172.74.455.4/文件夹名
     http://域名/目录名/页面名
     
     http://mail.126.com/  --(域名解析)
     -->http://xxx.xx.xx.xx:80/index.jsp
     
     在互联网早期,W3C 组织制定了上述协议。各大软件厂商,
    按照这些协议,制定了具体的实现技术:
        SUN 公司制定一套技术:Java EE(Servlet)
     微软公司制定一套技术:ASP.Net
     自由程序员制定一套技术:PHP
     目前最新的 :Ruby、Gralis
     
     例如:
        中国的公路网:最基础的路基、路线、弯道、收费站、


    6、了解 Web 服务器
       Web 应用程序访问过程:
       浏览器--(输入网址,提交请求)--->互联网--->服务器
             <---------------互联网<--返回响应---   
       完整过程:
       (1)浏览器发出请求(域名解析)
       (2)建立与服务器之间的连接(建立连接)
       (3)发送请求  (发送请求)
       (4)服务器接收并处理请求,返回响应 (等待响应)
       (5)浏览器接收响应 (接收数据)
       (6)关闭连接  

       目的,减轻服务器的负担。
       -----------------------
       Web 服务器:是各大软件厂商,根据 HTTP 协议标准,开发的
    软件产品。主要有两大技术路线:
        SUN 公司 JavaEE 技术路线的服务器:
        开源,很多公司都开发了对应的服务器:
          15个
       Tomcat服务器
        
     微软公司技术路线的服务器:
        内部开发自己的服务器:
        
     
     
     PHP 技术路线的服务器: 
        开源组织开发服务器
        
     
      

    7、掌握 Tomcat 服务器的安装、配置方法
       是 Apache 开源组织的一个项目。能够基本实现 JavaEE 规范
    中的技术,为 java 开发的 web 应用程序提供服务。
       
       http://www.apache.org/
       http://tomcat.apache.org/
       
       安装:
          在官方网站下载对应版本,解压缩安装。(前提:有 JDK)

        配置:
          C:/IDE/apache-tomcat-6.0.13/conf
           服务器配置文件:server.xml(配置端口号、域名host)
           管理员配置文件:tomcat-users.xml(通过浏览器访问
            后台管理界面的用户名和密码)    
       
    <tomcat-users>
      <role rolename="manager"/>
      <user username="tomcat" password="tomcat" roles="manager"/>
    </tomcat-users>
       
       
         使用:
          C:/IDE/apache-tomcat-6.0.13/bin
       启动文件:startup.bat
             关闭文件:shutdown.bat

     

    8、掌握 Servlet 的基本开发步骤
       使用 MyEclisep
       (1)新建 web project
       (2)在 src 目录中,新建 servlet 包
       (3)在 servlet  包中,新建 HelloServlet.java 
       (4)对 HelloServlet.java 进行配置,让  Tomcat
          服务器知道,在哪里可以找到 对应的类;
       让用户知道,通过何种路径能够访问该 Servlet;
       (5)把整个工程,发布到服务器上,启动,并通过浏览器访问 

     
     http://127.0.0.1:8080/examples/servlets
     /servlet/HelloWorldExample

     

    小结:
    (1)掌握最常用的 DOM API 方法
    (2)掌握 jquery 基本语法
    (3)了解 Web 应用程序、服务器
    (4)掌握 Tomcat 安装、配置
       
     

    目标
        回顾 WEB 应用程序、Web服务器、Servlet、
     了解 HTTP 协议
     了解 JavaEE 体系结构中的 Servlet API
     了解 Servlet  常用的对象 
       ServletContext、
       ServletConfig、
       HttpServletRequest
     
    1、回顾 WEB 应用程序、Web服务器、Servlet、
       Tomcat 配置:
       (1)Tomcat 启动需要 JDK,默认访问的 JDK 路径--JAVA_HOME
       (2)Tomcat 启动需要使用8080 端口号
           http://localhost:8080/   本地计算机路径
        http://127.0.0.1:8080/   本机IP
        http://172.7.43.33:8080/
        通过 conf/server.xml
       (3)目录结构
          C:/IDE/apache-tomcat-6.0.13
                 |
                 |---bin (服务器启动、关闭工具所在目录)  
        |---conf   (服务器配置、管理员配置)
        |---lib    (Tomcat 启动或运行 javaEE 程序,公用的 jar 文件)
                 servlet-api.jar  el-api.jar jsp-api.jar
        |---logs   (服务器运行产生的日志文件所在目录)
        |---temp   (服务器中程序生成的临时文件所在目录)
                     
        |---webapps  (服务器上正在运行的所有程序所在目录)
                   很多 web 工程;
          一个web 工程的基本目录结构:
           --工程名
                |---WEB-INF
                   |-----web.xml
             |-----lib
                    |-------*.jar
             |-----classes
                    |-------包名.*.class
             |----**.jsp
             |----**.html
          
        |---work   (服务器把所有工程中,jsp 页面转义成 servlet 代码所在目录)
        
    2、了解 HTTP 协议
        当 互联网底层协议完善后,人们考虑可以通过这个网络做什么。
    在不同电脑之间传输数据。
        人们根据传输数据的不同,规定了很多具体的传输协议。HTTP
    协议时 1990 年规定的,后来在 1999年做了修改---RFC2616(W3C内部的文档编号)

       HTTP 协议需要了解的内容:
       3、协议参数
       4、HTTP消息
       5、请求
       6、响应
       9、方法定义
       10、状态码定义

       ---------------------------------------------
      HTTP 消息包含 message-header、message-body
      message : request  | response
      
      request-header:
      Host download.pinyin.sogou.com(服务器URL)
      User-Agent Mozilla/5.0 (Windows; U; (浏览器本身的信息)
              Windows NT 5.1; zh-CN; rv:1.9.2.12) 
        Gecko/20101026 Firefox/3.6.12
      Accept image/png,image/*;q=0.8,*/*;q=0.5
      Accept-Language zh-cn,zh;q=0.5
      Accept-Encoding gzip,deflate
      Accept-Charset GB2312,utf-8;q=0.7,*;q=0.7
      Keep-Alive 115
      Connection keep-alive
      Referer http://pinyin.sogou.com/skins/?f=youjian
      Cookie IPLOC=CN3205; SUV=1283136430394028; SUID=0236B13D28780A0A000000007B21CA81; ld=7TT9ikllll2GWemHlllll98Waq6lllll5b9LlkllllwlllllRvoll5@@@@@@@@@@; SMYUV=1288665308350961; ad=9Zllllllll2G8T6Jlllll98PCmylllll5b9Llkllll9lllll9Vxlw@@@@@@@@@@@
        
      
      response-header:
            Server nginx/0.7.62
      Date Tue, 16 Nov 2010 05:23:42 GMT
      Content-Type image/jpeg
      Content-Length 7654
      Last-Modified Thu, 11 Nov 2010 07:50:36 GMT
      Connection close
      Accept-Ranges bytes
      
      -----------------------------------------
      9、方法定义
         目前常用的   从浏览器往服务器  传输数据的方法有两种  
          GET  POST
      <a href="ssss">链接</a>   全部使用 Get 方法传输
        (1)所传递的内容在地址栏可见
      http://www.google.com.hk/search?
          hl=zh-CN&
       source=hp&
       q=java&
       aq=f&...
     
      ? 表示参数连接符 
      & 表示多个参数的连接符
            (2)内容可见,不安全
      (3)中文参数变成乱码  q=java+%E4%B8%AD%E5%9B%BD&
      (4)地址栏输入内容长度受限。
     

      
         <form atction="" method="post"></from> 表单全部用 post   
         (1)不通过地址栏传输数据
      (2)内容不可见,安全
      (3)中文参数不会变成乱码
      (4)地址栏输入内容长度不受限。
      
      
       10、状态码定义(都是 3 位整数)
          信息类 1XX    
       成功类 2XX          200 OK
       重定向类 3XX
       客户端错误类 4XX    404 Not Found
       服务器端错误类 5XX  500 Internal Server Error
       
      服务器端告诉浏览器,服务器返回数据的信息是否正常。
     
    3、了解 JavaEE 体系结构中的 Servlet API
        从 1998年推出 javaEE 体系结构开始,就出现了 Servlet
    一直到  2006  年,SUN 公司不断推进该技术框架的更新。

        public interface javax.servlet.Servlet

        
                  Object 
                     |
            Servlet
             /           |                /     
     FacesServlet   GenericServlet   JspPage
     (扩展的 JSF 技术)            (扩展的 JSP 技术)
         (针对具体协议的 Servlet,可以实现多个协议)
                   |
                       HttpServlet      
           (具体实现 HTTP 协议中所有规定的类)
                      |
       自定义的 Servlet 类   
     
     
     
     java.*   SUN 公司开发的 JDK 的基础类
     javax.*  SUN 公司开发的 JDK 扩展类
     org.*    其他组织开发的 工具包
     

     

    4、 了解 Servlet  常用的对象 
       ServletContext、
       ServletConfig、
       HttpServletRequest

       
      
        HttpServletRequest  对象:
     (1)得到请求头信息:
         //得到枚举类型的请求头信息
      Enumeration e = request.getHeaderNames();
            while (e.hasMoreElements()) {
                String name = (String)e.nextElement();
                String value = request.getHeader(name);
                out.println(name + " = " + value);
            }

        

     

     

     

    目标
        了解 Servlet 的生命周期
     掌握 Servlet 常用对象
     了解 Servlet 之间数据传递的作用域
     掌握 作用域对象 ServletContext、HttpServletRequest、
     HttpSession 对象的用法
     
    1、了解 Servlet 的生命周期
     Servlet API 中的方法:
     Servlet  接口定义了如下方法:
           //Servlet 对象初始化方法,
        //当对象创建后,从 web.xml 中读取配置的参数 
         public void init(ServletConfig config) throws ServletException
        //Servlet 对象提供请求服务的方法
           public void service(ServletRequest req, ServletResponse res) throws ServletException, java.io.IOException
           //销毁一个 Servlet 对象的方法
        public void destroy();  
        
           public ServletConfig getServletConfig();
        public String getServletInfo();


     HttpServlet 类中:
          同样可以使用 接口中定义的方法。
     
     生命周期:程序中一个 Servlet 对象从创建到销毁的过程。
     
     HelloServlet
     //创建对象(实例化)
     HelloServlet hs = new HelloServlet(); //不需要写
     //给属性赋值(初始化)
     hs.init(ServletConfig config);     //何时、被谁调用
     //工作,为HTTP请求提供服务(服务)
     hs.service(ServletRequest req,ServletResponse res);
     //工作结束,销毁对象,释放内存(销毁)
     hs.destroy();
     
     在 Web 应用程序中,所有服务器上的Servlet程序,
    都不能由程序员提前创建,并调用具体的方法。具体的创建和
    方法调用都是由  Web 服务器来完成的。
     
     一个 Servlt 对象在什么时候被创建?
     整个服务器中,始终保证有一个 Servlet 对象,随时提供
    客户端服务。
     (1)如果之前没有被访问过的,第一次被访问时创建(开发时)
     (2)如果之前已经被访问过了,服务器启动时
     
     init() service() destroy() 方法何时被调用,由服务器决定。
     

    2、掌握 Servlet 常用对象
       ServletContext、
       ServletConfig、
       HttpServletRequest
       HttpServletResponse
      -----------------------------------------------
     ServletConfig 用来读取 web.xml 中该
    Servlet 配置的初始化参数,
        "一个 Servlet 对应一个ServletConfig "
        web.xml  中
     <servlet>
      <servlet-name>ConfigServlet</servlet-name>
      <servlet-class>servlet.day2.ConfigServlet</servlet-class>
      <!-- 一个 Servlet 的初始化配置参数 -->
      <init-param>
       <param-name>address</param-name>
       <param-value>昆山安博</param-value>
      </init-param>
      </servlet>
      Servlet 中的代码
         public void init(ServletConfig config) throws ServletException {
      //从 web.xml 中读取初始化参数
      super.init(config);
      String address = config.getInitParameter("address");
     }
      ---------------------------------------------------
      ServletContext 对象--上下文对象(承前启后)
      
      http://localhost:8080  (服务器路径)
     /hebei                  (上下文路径,项目根路径)
     /config                 (Serlvet路径)
      作用:获取文件的 MIME 类型、分发请求或写入日志文件。 
      意义:代表服务器上一个 Web 应用程序。
        "一个工程对应一个ServletContext 对象"
     
     方法:
     设置值       setAttribute("name",obj);
     取值         getAttribute("name");
     得到路径     getContextPath()   getRealPath();
     得到初始化参数  getInitParameter("");
     
     ---------------------------------------
        HttpServletRequest  对象:
     (1)得到请求头信息:
         //得到枚举类型的请求头信息
      Enumeration e = request.getHeaderNames();
            while (e.hasMoreElements()) {
                String name = (String)e.nextElement();
                String value = request.getHeader(name);
                out.println(name + " = " + value);
            }
        (2)得到请求路径
     String path = request.getContextPath();   "/hb"
        String basePath = request.getScheme()+"://"+
        request.getServerName()+":"+
        request.getServerPort()+path+"/";

     "http://localhost:8080/hb/context?method=search&q=java"
     方法                   值              作用 
     ---------------------------------------------------
    request.getScheme()    http            得到协议名
    request.getServerName()   localhost       得到服务器名
    request.getServerPort()   8080            得到服务器端口号
    request.getContextPath()  /hb             得到项目上下文路径 *

    request.getRequestURI()   /context        得到请求的文件路径
    request.getLocalAddr()    172.7.44.33     得到客户端 ip     *

    //得到参数值
    request.getParameter("method")   search   从请求中得到传递的参数值
    request.getParameterValues("")   String[] 从页面复选框中得到输入值
    //保存值
    request.setAttribute("name",obj); 设置值到 request 对象中
    request.getAttribute("name");     从对象 request 中取值
    //页面跳转
    request.getRequestDispatcher("url").forward(request,response);
    -----------------------------------------------------------------
        HttpServletResponse 代表服务器响应
     
     方法:
    PrintWriter out = response.getWriter();   //得到输出对象
    response.setContentType("text/html; charset=UTF-8"); //设置响应的内容类型
    定义响应状态码
    HttpServletResponse.SC_OK      状态代码 (200),指示请求正常成功
    HttpServletResponse.SC_NOT_FOUND  状态代码 (404),指示请求的资源不可用
    设置响应头信息
    进行页面重定向
    response.sendRedirect("location URL")      (*****)
    使用指定重定向位置 URL 将临时重定向响应发送到客户端。
    此方法可以接受相对 URL;servlet 容器必须在将响应发送
    到客户端之前将相对 URL 转换为绝对 URL。如果位置是相对的,
    没有前导 '/',则容器将相对于当前请求 URI 对其进行解释。
    如果位置是相对的,有一个前导 '/',则容器将相对于 servlet
     容器根对其进行解释。


    3、了解 Servlet 之间数据传递的作用域
       在同一个 Web 服务器上, Servlet 都是孤立的,相互之间
    没有直接的联系方式。 但是我们在开发的时候,经常需要在两个 Servlet
    之间传递数据。
        
     Tomcat 看做监狱,每个犯人都代表一个 Servlet ,每个人一个单间,
    可以通过看守传递东西。
       一种看守是终生制的:能够长久的保持 Servlet 间传递的数据
            ServletContext(Tomcat从启动到关闭)
      
       一种看守合同制的:  在合同规定的年限中可以保持 Servlet 间传递的数据
            HttpSession  (默认有效时间30分钟)
      
       一种是扫地的临时工:只能当天传递数据,隔天无效
            HttpServletRequest (从一个页面跳转到另一页面之间的刷新时间)
      
       
       作用域:起作用的时间长短。

    4、掌握 作用域对象 ServletContext、HttpServletRequest、
     HttpSession 对象的用法
     
     从 Servlet 中把数据,放入作用域对象(保持数据)
     .setAttribute("name",objValue);
     从另外一个 Servlet 中取出数据,取出后强转类型
     .getAttribute("name");
     
     从某个作用域对象中删除不再使用的对象
     .removeAttribute("name");目标
        掌握 Web 应用程序开发的基本组成
     了解 Web 应用程序中存储用户数据的两种方式--Cookie、HttpSession
     项目导入--学员信息管理系统
     了解 Servlet 中特殊的处理类---过滤器(Filter)
     
    1、掌握 Web 应用程序开发的基本组成
     为完成页面上的一个按钮功能,需要一些列的 Web 技术来解决。
         页面:html  css  javascript
      控制:servlet
      数据库:JDBC   Hibernate
      
     一般情况下,一个 Web 应用程序功能基本的流程:
        页面提交请求--->Servlet 接收请求-->调用Dao 访问数据库-->
    回到 Servlet进行页面跳转--->跳转到另外一个页面 
     
    2、了解 Web 应用程序中存储用户数据的两种方式--Cookie、HttpSession
     
     存储用户数据:
        (1)页面输入过的数据(浏览器自动保存的密码信息)
        (2)登录成功后,一直显示的当前用户信息(保存在服务器端)
        
     Web 应用程序的结构:
           浏览器 ---------------HTTP协议---------------- 服务器 
        
     HTTP协议特点:
          (1)无连接、每次请求响应完毕,不保存一个持久的连接,每次都是新的连接
          (2)无状态、不保存浏览器、服务器之间传递的数据
        
     为了解决 HTTP 协议,无状态的特点,要想保持用户数据,需要从
    浏览器或服务器上想解决办法。

        浏览器:功能简单,能够存储数据的手段也比较少---浏览器Cookie
              可以保存一些简单的字符信息。
     服务器:功能强大,能够提供很多对象,保存用户提交的数据
                 可以根据具体的需求,根据保存数据时间的长短来选择不同的对象
        
        -------------------------------------------------------
        Cookie
       是用户访问Web 程序时,服务器端生成的一小段字符代码,通过
    响应返回给用户,并自动保存在浏览器内部,方便下次访问。
          优点:直接从客户端取数据,取数据很快;
       缺点:(1)用户可以删除、禁用 Cookie 
             (2)纯文本格式,最大 只有 4KB,能够存储的数据量很小
       
     (1)创建Cookie(在服务器端 Servlet 代码中创建)  
      Cookie c = new Cookie("username","liu20011122"); 
     (2)设置Cookie 对象的有效期
            c.setMaxAge(60*60*24*14);  //秒 
      c.setMaxAge(0);  //秒 销毁一个 Cookie
     (3)设置路径
            c.setPath("/forder/test.jsp");    //可选
     (4)返回到客户端
            response.addCookie(c);

        (5)读取 Cookie (从请求中读取)
        Cookie[] c = request.getCookies();
     (6)如何从请求的 Cookie 数组中得到需要的某个 Cookie
        String  loginName ="";    //想要从 Cookie 中取的值
           if(c!=null){
        for(int i=0;i<c.length();i++){
        Cookie ck = c[i];
        String name = ck.getName(); //取出Cookie 中的 key
        if("username".equalse(name)){
        loginName = ck.getValue();//取出Cookie 中的 value
        }
        }
        }
     
    ------------------------------------------------------------------ 
        HttpSession   
           代表一个浏览器在一段时间内,与服务器进行连续交互的整个过程。
    Session 是由服务器创建的一个对象,每个Session 为一个浏览器提供
    一对一的服务,有效时间默认 30 分钟。

        Session 的工作机制:
        联通卖 iphone4 ,会有一个专门的客服,在两年内,提供一对一
    的电话服务。

        可以把 Tomcat 服务器看做  联通公司,招聘非常多的客服人员。
    一个客服在一段时间内只为一个客户服务(30分钟)。如果有一个浏览器访问
    ,Tomcat 服务器就给该浏览器配备一个客服 HttpSession(sessionID),
    在有效时间内,客户的任何请求,都可以通过客服 Session 来处理。
        (1)一对一服务器
     (2)有效期
     (3)HttpSession 对象的创建和销毁,不由程序员控制
     
     //1 HttpSession 对象的创建
     HttpSession session = request.getSession(true);
     //每次都要求服务器新分配一个 HttpSession 对象
     
     HttpSession session = request.getSession(false);
     //每次都不要分配新的 HttpSession 对象
     
     HttpSession session = request.getSession();
        //由 服务器来判断,是否分配新的 HttpSession 对象
     
     //2 识别不同的浏览器,在有效期内,该 id 对应的 Session 
     //一直为同一个浏览器服务
     String id = session.getId();
        
     //3 设置 HttpSession 的有效时间
       通过代码设置,一次只设置一个 session 对象的时间
     session.setMaxAge(60*60*24);  //单位秒
        通过配置设置,一次给所有的 session 设置时间
      <session-config>
          <session-timeout>360000</session-timeout>
         </session-config>  
     

    3、项目导入--学员信息管理系统
     功能简介:
     (1)用户登录(管理员)
     (2)查看学员列表
     (3)增加学员信息
     (4)修改学员信息
     (5)删除学员信息
     (6)退出
     (7)Cookie  保存用户名
     (8)非法用户登录验证
     
     数据库介绍:单表数据库、规定好的 Dao 接口
     
     页面简介:login.html、list.html、edit.html、add.html
     
     
     

    4、了解 Servlet 中特殊的处理类---过滤器(Filter)

    5、任务:
    (1)练习 Cookie 、HttpSession 的方法,模仿完成课堂示例
    (2)根据学员管理系统数据库,完成 JDBC 代码(周五下午完成)
    (3)项目页面(下周一)

     

     

     

     

    目标
        了解 Servlet 中特殊的处理类---过滤器(Filter)
     掌握过滤器如何编写和配置
     掌握使用 jUnit 编写测试类---扩展,为JDBC代码编写测试类
     了解 Servlet 监听器------Listener
     掌握 HttpSession 对象的监听器如何编写和配置
     了解 JSP 来历、简单语法
     
    1、了解 Servlet 中特殊的处理类---过滤器(Filter)
        过滤器:在 Web 请求和响应的过程中,对每一个访问Web 服务器上
    的Servlet 程序进行检查的程序叫过滤器。
        特点:(****)
      (1)一个请求、响应对象都不放过
      (2)针对满足条件的所有文件(Servlet 或 jsp 或 html   /*)
      (3)针对某些 特定功能,一般一个过滤器只关注某一个特定的功能
      
    2、掌握过滤器如何编写和配置
     (1)编写一个类,实现 javax.servlet.Filter 接口,实现过滤器生命周期
     (2)在 doFilter() 方法中编写过滤代码
     (3)在工程 web.xml 文件中对过滤器进行配置
     (4)配置完毕的过滤器,会自动发挥作用。
     
     字符过滤器:过滤整个 Web 工程中所有请求、响应对象中的字符编码

     非法用户登录过滤:过滤条件 HttpSession 对象中有用户名的满足
    条件。过滤器配置方法:过滤目录      
          webRoot/ok/ok.jsp...
       <servlet-mapping>
      <url-pattern>/ok/*</url-pattern>
        
     地址栏输入:
         http://localhost:8080/hb/ok/*.jsp   WebRoot 下的目录
      http://localhost:8080/hb/ok/*       src 下的某个Servlet 
        
     
     注意:过滤器过滤条件的配置(5种情况)
     
    3、掌握使用 jUnit 编写测试类---扩展,为JDBC代码编写测试类
       jUnit 是所有 java 工程都能够使用的测试包,提供特殊的编写方法
    可以让代码,不通过   main()  就可以运行。

       (1)在工程中添加 jUnit 测试包 jUnit4.jar
       (2)在工程中,与  src 同级目录下,新建一个 
          SourceForder(源代码包)test
       (3)新建一个普通类--TestXXX.java
       (4)编写固定格式的方法 ,添加一个注解 @Test
           @Test   
           public void testXXX(){}
       (5)在该方法中编写与  main() 方法中同样的代码,可以直接运行一个方法
     

    4、了解 Servlet 监听器------Listener
        监听器负责监听的对象:监听由 Tomcat 创建并管理的对象
    ServletContext、HttpSession、HttpServletRequest。

        监听器特点:
     (1)监听器肯定绑定事件
     (2)一种监听器,只监听一种事件
     (3)监听器完全能够自动工作

        HttpSessionListener 生命周期监听器:只监听 HttpSession 对象的创建和销毁
     HttpSessionAttributeListener 属性监听器:
        监听 session 对象属性的改变
     
        用户登录监听:有新用户(新打开的一个浏览器)连接服务器。
        统计当前在线人数,使用监听器

     开发步骤:同 过滤器
     
    5、掌握 HttpSession 对象的监听器如何编写和配置
     public class LoginListener implements HttpSessionListener {

     /**
      * 用户连接,新分配一个 HttpSession ,触发该监听器
      */
     public void sessionCreated(HttpSessionEvent evnet) {
      System.out.println("一个新的浏览器,连接到服务器了.................");
     }

     public void sessionDestroyed(HttpSessionEvent arg0) {
      // TODO Auto-generated method stub

     }

    }

     <listener>
      <listener-class>servlet.day4.LoginListener</listener-class>
     </listener>
     

    6、 了解 JSP 来历、简单语法
        Servlet 在设计的时候,既能够处理逻辑、也能够输出页面效果。
    在 Java 代码中编写 HTML 代码。(*)
    不方便编写和修改。
         后来出现 JSP ,把页面显示的功能交给 JSP 完成,Servlet 专
    注于逻辑处理。

        JSP:(Java Server Page)是对 Servlet 的有效扩展。
    在 HTML 代码中编写 java 代码的(*)
    JSP 语法也变得和 HTML 标签语言越来越相似

        JSP 是一种混血的语言。(HTML、CSS、JavaScript)模板代码、
    Servlet代码、Java代码、EL表达式
     
     基本语法:
     Java 代码段  <% //纯 Java 代码  %> 
     JSP 指令:   <%@   %>
     JSP 声明:   <%!   %>
     JSP 表达式: <%=   %>
     JSP 注释:   <%--   --%>
     JSP 动作:   <jsp:xxxx ></jsp:xxxx>
     
     EL表达式:   ${}
     JSTL 标签库:<c:if ></c:if>
     
     

     

     

     

    作业:
    (1)使用过滤器和过滤器配置的方法,完成对用户 IP 的过滤
       172.7.43.*   不允许访问
    (2)编写 JDBC 实现代码,为每个方法编写测试代码  

     

     

     

     

     

     

     
     

    5、任务
    掌握 Servlet 类的层次结构
    掌握 四个常用对象的重点方法
    初步理解作用域对象

     

     

     


     目标
       Servlet 小结
       了解 JSP 的执行原理
       掌握 JSP 的指令
       掌握 JSP 动作
      
    1、Servlet 小结
       各自的作用:
         (1)Servlet :是一个 Java 类、遵照 HTTP 协议开发。能够接受
    用户从浏览器发送的请求,并对请求进行逻辑处理,最后返回响应给浏览器。
      (2)Filter :也是一个特殊的 Java 类,能够对 请求、响应对象进行
    拦截,并进行搜身处理。一般情况下,一个 Filter 只处理一件事情。
      (3)Listener : 主要是 Tomcat 服务器对内部生成的对象的监视,
    服务器在不影响这些对象工作的前提下,对这些对象的创建、销毁、属性改变
    进行监听。
       
       HttpSession session = request.getSession(true);

    2、了解 JSP 的执行原理
       *.jsp 的代码在 服务器中运行,运行完毕会生成纯粹的 HTML 代码给浏览器
       
       login.jsp--(Tomcat转义,work目录)-->login_jsp.java--(JDK编译)
       -->login_jsp.class--(JRE运行)-->输出到浏览器的 HTML 
       备注: JSP 页面在执行过程中,第一次访问速度较慢,但是后面就很快了。

       
       
       我们使用的是 Tomcat 服务器,转义后的 java 代码继承自 
    org.apache.jasper.runtime.HttpJspBase(实现了 JavaEE 标准中的 JspPage 类)

     

     
                  Object 
                     |
            Servlet
             /           |                /     
     FacesServlet   GenericServlet   JspPage(HttpJspBase)
     (扩展的 JSF 技术)            (扩展的 JSP 技术)
         (针对具体协议的 Servlet,可以实现多个协议)
                   |
                       HttpServlet      
           (具体实现 HTTP 协议中所有规定的类)
                      |
       自定义的 Servlet 类  
       
    3、掌握 JSP 的指令
       什么是JSP指令
           能够JSP网页对相关信息、属性进行存取与设定的代码。一个页面中
    设置的指令,只对当前页面有效。
        类似于 java 类中的 import 
     
      JSP 中只有三个指令
      <%@ page  %>      对当前页面常用的属性进行设置 
      <%@ include %>    对当前页面需要导入的其他页面进行声明
      <%@ taglib %>     声明当前页面将要使用的 JSP 标签库文件
      
      <%@ page language="java"    --声明当前页面能够使用 java 语言
               [ info="text" ]      --当前页面的描述
               import="java.util.*,java.text.*"  --java 代码编写时需要导入的类
         pageEncoding="UTF-8" --页面编码
         [ extends="package.class" ] --不用的属性

         [ contentType="mimeType 
       [;charset=characterSet]" | "text/html; charset=ISO-8859-1" ] 
       --指定页面内容在通过 HTTP 协议传输时的字符编码、内容类型
         
         [ session="true | false" ]  --当前页面中使用的HttpSession对象如何分配
         
         [ buffer="none | 8kb | sizekb" ] --服务器为当前页面分配的缓存空间
         [ autoFlush="true | false" ]   --是否自动清空缓存
       
         [ isThreadSafe="true | false" ] --设置当前页面是否线程安全
       
         [ isErrorPage="true | false" ] --类似于Java Exception
                               --声明当前页面是否是错误处理页面
         [ errorPage="relativeURL" ]  --指定当前页面出错后跳转到哪个错误页面处理

         [isELIgnored="false"]      --声明当前页面是否忽略 EL 表达式
      %>


      <%@ include file="页面路径" %> 包含外部的 jsp 页面内容
      在 jsp 转义阶段就把所有页面合二为一了。
      
    4、 掌握 JSP 动作
       什么是JSP动作
           采用了类似于 HTML 标签的语法,封装部分固定格式的 java 代码      
     
        基本的语法 
       <jsp:动作名  属性=“值” … /> 格式区别其它网页中所存在的标签

       常用的 JSP 动作
       <jsp:forward>   页面跳转动作
       <jsp:include>   包含动作在 “运行”阶段才把多个文件合并
       <jsp:plugin>    目前不使用的动作,在页面中引入 javaApplet 程序
       
       <jsp:getProperty>  
       <jsp:setProperty>
       <jsp:useBean>

      
      跳转动作,封装了 
      <%
        request.setAttribute("key",value);
     request.getRequestDispatcher("page.jsp?id=10").forward(request,response);
      %>

      <jsp:forward page="page.jsp" >
             <jsp:param value="10" name="id"/>
      </jsp:forward>   


      两种包含的区别:(*****)
      静态包含: <%@ include file="页面路径" %> 
              在 jsp "转义"阶段就把所有页面合二为一了。
        运行速度快!!!
      动态包含:<jsp:include page="" />   
              在 jsp  “运行”阶段才把多个文件合并
              更加灵活的包含!!
        
       UseBean 动作
          在 JSP 页面中创建 JavaBean 对象,并调用 set、get 方法
    设置值、取值 专用的动作。

       <%
      Student st = new Student();
      st.setName("aa");
      session.setAttribute("studentBean",st);
       %>
        学员姓名:<%=st.getName() %>
     -----------------------------------------
     <jsp:useBean id="st" class="entity.Student" scope="session" />
     <jsp:setProperty name="st"  property="name" value="<%=val %>" /> 
     学员姓名:<jsp:getProperty name="st" property="name" />
     -----------------------------------------------------------

     //使用动作创建第一个 Student 对象,对象名 st
     <jsp:useBean id="st" class="entity.Student" scope="session" />
     
       <jsp:useBean id="beanInstanceName"  
                    scope="page | request | session | application" 
                    class="package.class" | type="package.class" | 
                    beanName="{package.class | <%= expression %>}" 
                    type="package.class" > 
        other elements
       </jsp:useBean>
       
       //通过动作,给对象设置值
        <jsp:setProperty name="st"  property="name" value="<%=val %>" /> 
      
      <jsp:setProperty name="beanInstanceName" 
                       property= "*"  | 
                       property="propertyName" 
           value="{string | <%= expression %>}" /> 
       
        <jsp:getProperty name="st" property="name" />
       <jsp:getProperty name="beanInstanceName" property="propertyName" />

    5、学员管理系统奠基仪式:
       了解 系统需求;
       了解 登录功能所要用到的流程
       了解 登录功能的代码
     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     


     <%@ page 
           [ language="java" ] 
           [ extends="package.class" ] 
           [import="{package.class | package.*},..." ] 
           
        [ session="true | false" ]  --默认 false
           [ buffer="none | 8kb | sizekb" ]  --在 Tomcat 上为该页面分配缓存
                                    --默认 8kb
        [ autoFlush="true | false" ]    --自动清空缓存
        
        [ isThreadSafe="true | false" ] --默认 true
        [ info="text" ]                 --介绍当前页面内容
        
        [ isErrorPage="true | false" ]  --类似于自定义异常的 
                                    --jsp 页面中使用
        [ errorPage="relativeURL" ]     --类似于 try{}catch{}
        
        [ contentType="mimeType 
        [;charset=characterSet]" | "text/html; charset=ISO-8859-1" ] 
        pageEncoding="UTF-8"        --JSP 文件本身的编码
        
        isELIgnored="false"         --是否忽略 EL 表达式
                              --${sds}
     %>    
       
     
     

     

     

     

     

  • 相关阅读:
    几种sap增强的查找方法
    BAPI_ACC_DOCUMENT_POST Enter rate / GBP rate type M for Error SG105
    SAP TAX CODE 自动计算税金(BAPI_ACC_DOCUMENT_POST CALCULATE_TAX_FROM_GROSSAMOUNT)
    Python入门资料
    认知决定你的格局,和财富差距 (转)
    微信支付,支付宝支付,银联支付——三大支付总结
    Android 日志记录杂谈-Logger,Timber,logback-android
    好全的Android面试题
    Android界面性能调优手册
    50 篇 Android 干货文章
  • 原文地址:https://www.cnblogs.com/shipeng22022/p/4614225.html
Copyright © 2011-2022 走看看