来传智播客学到的第一天
来源:互联网 发布:笨办法学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访问中所有资源路径,都使用绝对路径
- 来传智播客学到的第一天
- 第一天来、希望能学到东西……
- 来传智播客学到的知识
- 今天是第一天所以写两个,这个是总结以前学到的一些知识看看自己以后的学习方向
- 博客的第一天
- 第一天的新鲜感
- 第一天的清晨
- 第一天的晚上
- 我的第一天
- blog的第一天
- BLOG的第一天
- 新年的第一天:
- 汇编的第一天
- Blog的第一天
- 新的第一天
- CSDN 的第一天
- 我的第一天
- 第一天的总结
- HashMap的存取之美
- 使用createrepo创建自己的yum源
- 读懂diff
- 数据库sql一些常考基础命令
- 如何编写自己单向链表(c语言)
- 来传智播客学到的第一天
- 哈希分布与一致性哈希算法简介
- ios开发HTML5
- 一个简单的CrackMe分析
- HTML5续
- vm虚拟机安装dos6.22
- 实习日志(6):Flex显示Servlet所传值
- 编译器对switch case结构的优化
- CrackMe技术等级自测3级一个CrackMe分析