来传智播客学到的第一天

来源:互联网 发布:笨办法学python英文版 编辑:程序博客网 时间:2024/06/06 07:49

    第一天上课咱们传智播客给我的感觉很好,让我感觉到了学习的气氛是那么的好,同学之间就和兄弟姐妹一样,尤其是班主任,对我们的关怀是无微不至的

对我们非常负责任,心里是那么的暖,早上早早的就到教室了,看有没到了学生吗,如果没有到就会打电话,关心你为什么没有到,就像父母一样关心,中午吃饭一再嘱咐吃好

要记得喝水,让大家注意身体多休息,作为一名老师能这样做真的很好了。在说说上课老师讲的也非常的好非常认真,把每个细节都讲的那么细致,让我一听就懂,老师讲课的

风格就是深怕你听不进去,用尽各种方式去给你讲,非常的尽责,尽心,送大家一句话,来传值你觉得不会后悔的,传智播客是真心的育才之地啊!!!

下面给大家分享一下我今天所学的东西吧,嘿嘿!!

 internet web资源:分为静态web资源和动态web资源
网站分为两种形式:
 一种是静态网页
 (1)所谓静态网页,数据固定不变的文件。静态web资源开发技术有:HTML + CSS + JavaScript =======
 一种是动态网页
 (2)所谓动态网页就是由程序,生成静态数据文件,数据是活的
servlet是开发动态网页的技术:
 Servlet是一门技术,sun公司提供的用于开发动态web资源技术 =========== 编写一个程序 生成网页
 Servlet通过程序生成HTML 页面,用程序动态生成的,所以可以包含动态数据,会根据访问者不同,而显示不同内容 !
Servlet技术基于 请求-- 响应模型
 1、先有请求再有响应(浏览器发送请求,服务器响应浏览器的请求)
 2、请求响应成对出现
讲解一下一个简单的动态页面的开发大概流程:
 编写Servlet需要编写一个java程序实现Servlet接口,并且在web服务器中进行注册
 1、在MyEclipse工具中 创建web project
 2、在工程中 创建class(.java) 继承 HttpServlet
 3、在Servlet中覆盖 doGet 和 doPost 方法
 4、在web服务器中注册Servlet程序 (配置 WEB-INF目录 web.xml )
  在服务器中注册servlet:
  <!-- 注册Servlet 程序, 为Servlet class 起一个名字 -->
    <servlet>
   <servlet-name>HelloServlet</servlet-name>
   //此标签中的内容是继承了HttpServlet的子类的全名称(包名加类名)
   <servlet-class>cn.itcast.servlet.HelloServlet</servlet-class>
    </servlet>
    <!-- 配置Servlet 访问 路径 -->
    <servlet-mapping>
   <servlet-name>HelloServlet</servlet-name>
   //此标签是对外暴露一个访问路径
   <url-pattern>/hello</url-pattern>
    </servlet-mapping>
 5、通过在浏览器上输入 /hello  访问 cn.itcast.servlet.HelloServlet 程序

Servlet需要注意的事项:
 1、Servlet访问过程
  * Servlet是由tomcat服务器调用执行的,因为没有main函数所以不能单独执行
 2、Servlet API在哪里?
 JDK 导入包 来自JRE环境 rt.jar (java.io java.util 来自rt.jar )
 Servlet 导入包
  1) MyEclipse Servlet 需要 jar 来自JavaEE 环境
  右键工程属性 ---- build path ---- liberaries ----- add Liberary ---- MyEclipse Liberary
  2) tomcat环境中 需要jar E:\apache-tomcat-6.0.14\lib\servlet-api.jar
3、编写web.xml后 一定要重启服务器
介绍一下如何手动编译一个Servlet并执行:
 1、在tomcat/webapps 下新建网站目录结构
 Root(一个文件夹名字随便起但不要是中文的)
   ---- *.html *.jsp (在Root文件夹中科院放*.html *.jsp)
   ---- WEB-INF (在Root文件夹中创建一个WEB-INF,注意文件名必须是大写WEB-INF)
   ---- classes (在WEB-INF文件夹中创建一个classes文件夹,里面是存放.class文件的)
   ---- lib (在WEB-INF文件夹中创建一个lib文件夹,里面是程序运行所需要的jar包)
   ---- web.xml  (在WEB-INF文件夹中创建一个web.xml,是配置web应用所需要的配置)
 2、编译Servlet程序位于classes目录:
  javac -classpath E:\apache-tomcat-6.0.14\lib\servlet-api.jar -d . HelloServlet.java
  //解释E:\apache-tomcat-6.0.14\lib\servlet-api.jar是servlet运行所依赖的jar包,其实tomcat中也有servlet运行时所需要的jar包
 3、在WEB-INF配置web.xml
这是一个servlet结论:1、编译Servlet 需要API (servlet-api.jar) 2、如果Servlet有包结构,在编译后,在classes目录下生成目录结构
下面介绍一下servlet:
 Servlet技术是sun公司最早推出时,并不是仅面向于HTTP协议的 ,Servlet接口规范与协议无关的
 * Servlet技术基于请求-响应模型的
 GenericServlet 通用的Servlet,只是实现了与协议无关API ,并没有提供任何与协议相关API
 但是HttpServlet就不一样了它是一个面向HTTP协议 Servlet程序,提供了与协议相关的API
 自定义Servlet都是面向HTTP协议,如果实现Servlet接口,或者继承GenericServlet. 使得开发更加复杂,所以简单说开发只需要继承HttpServlet 拥有与HTTP协议相关的API使得开发由复杂变简单
那么就说一下servlet的生命周期:
 什么是Servlet生命周期:是描述Servlet对象从创建到销毁的过程,Servlet接口中定义了三个方法,描述了Servlet生命周期
 void init(ServletConfig config)  Servlet对象初始化方法,init 方法在Servlet对象被第一次访问时执行,只执行一次
 void service(ServletRequest req, ServletResponse res)  Servlet对象提供服务的方法,service方法每有一个用户访问服务器Servlet都会执行一次
 void destroy()  Servlet对象销毁的方法,destroy 正常关闭服务器时执行

讲解几个问答题:
 问题1:service方法和 doGet doPost 什么关系 ???
  在HttpServlet中 service方法内部,根据请求方式自动调用doGet 或者 doPost方法执行
  *servlet_src.zip文件是servlet源码
 问题2:如何让Servlet在服务器启动时,加载创建对象 ,调用init
  <servlet>
    <servlet-name>invoker</servlet-name>
    <servlet-class>
     org.apache.catalina.servlets.InvokerServlet
    </servlet-class>
    <load-on-startup>2</load-on-startup>(配置load-on-startup使Servlet在服务器启动时创建对象完成 init参数0-9)
  </servlet>
 问题3:init() 和 init(ServletConfig)的关系
   GenericServlet内部覆盖了init(ServletConfig)并且还有一个为参数的init方法,在有参数init方法中会调用无参数init
   init(ServletConfig) 是Servlet生命周期的方法
  *****建议 自定义Servlet只需要覆盖无参数 init 就可以了
这是对Servlet生命周期的一个小结:
 1、Servlet生命周期 init(ServletConfig) service(ServletRequest,ServletResponse) destroy
 2、init方法默认在第一次访问Servlet时调用,只执行一次 (通过配置 load-on-startup 让Servlet在服务器启动时初始化)
 3、service每次请求都会执行一次,HttpServlet中重写service,根据请求方式调用doGet或者doPost
    开发Servlet无需覆盖service只需要 覆盖doGet和doPost
 4、destroy方法 在服务器关闭时调用 ,销毁Servlet
 5、GenericServlet中 在init(ServletConfig)  调用 无参数init,如果自定义Servlet想进行初始化,只需要覆盖无参数init方法
 6、当doGet和doPost 代码逻辑相同时,互相调用简化编程
在xml中URL-Pattern的三种配置方式:
 1、完全路径匹配 以/开始 不能包含统配符* 例如: /hello /init
 2、目录匹配 以/开始, /*结尾 例如: /*  /aa/*  /aaa/bbb/*
 3、扩展名匹配 不能以/开始,以*开始 例如: *.do  *.action
 错误方式:/*.do
 它们的优先级:完全匹配 > 目录匹配 > 扩展名匹配
 
自我感觉比较绕的路径问题:
比如说在
WebRoot下 新建 1.html
在WebRoot/aa 下新建 2.html
在1.html 和 2.html 分别通过 超链接 访问 HelloServlet

路径分为相对路径和绝对路径两种写法
1. 相对路径,根据当前资源路径 与 目标资源路径,寻找相对位置关系,通过 . (当前目录) 和 .. (上一级目录) 访问目标资源
1.html 访问 HelloServlet
当前路径 http://localhost/项目名称/1.html
目标路径 http://localhost/项目名称/hello

位于同一个目录中 ./hello 、hello  ===== 替换当前路径最后一个资源

2.html 访问 HelloServlet
当前路径 http://localhost/项目名称/aa/2.html
目标路径 http://localhost/项目名称/hello

上一级目录中 ../hello 代表替换上一级目录资源

***** 相对路径,总需要分析当前路径与目标路径对应关系,编写规则会根据当前路径不同而不同

2、绝对路径
带有协议完整路径 (跨网站) http://localhost/项目名称/hello
以/ 开始路径 (同一个站点内) : /项目名称/hello

服务器端和客户端对于/ 的区别
客户端访问路径:/项目名称/hello
服务器内部路径:/hello
路径结论:web访问中所有资源路径,都使用绝对路径