Servlet基础知识
概述
什么是JavaSE?
- Java 标准版本
- SUN公司为java程序员提供的一套基础类库
这套类库中包括:基础语法、面向对象、异常、IO、集合、反射、线程…..
什么是JavaEE?
Java 企业版
- JavaEE 是sun公司为我们程序员提供的一套庞大的类库
-
什么是API?包括什么?
API : 应用程序编程接口(这里描述的接口不是interface)
-
B/S优缺点
优点
不需要安装特定的客户端软件,只要有浏览器就行
-
缺点
所有数据都在服务器端,服务器一旦发生不可抗力,数据丢失严重,相对来说不安全
-
C/S优缺点
优点
速度快
- 数据相对安全
-
缺点
升级麻烦(升级的时候每一个客户端都需要升级)
- 需要安装特定的客户端软件,才能访问服务器
浏览器请求服务器(request),服务器响应浏览器(response)
Servlet
两个英语单词的合并,Serv表示服务器 let 小程序
关于Servlet规范
作用
- 在Servlet规范中,指定了【动态资源文件】开发步骤
- 在Servlet规范中,指定了Http服务器调用动态资源文件规则
在Servlet规范中,制定了http服务器去管理动态资源文件实例对象规则
概述二
在浏览器输入 http://localhost:8080 弹出小猫的页面,表示服务器可以使用
127.0.0.1表示本地地址开关服务器
开启 在cmd窗口中
- 进入到tomcat7的bin目录下
- startup 回车
关闭 在cmd中
- 进入到tomcat7的bin目录下
- 执行shutdown
- 已改名 现在为stop
现在已经配置好了环境变量
- 直接在cmd窗口敲入startup/stop即可开关服务器
- 为了避免windows系统的shutdown命令冲突 将tomcat的shutdown 重命名为stop
-
部署
访问
当部署完成之后就可以在网页上进行访问
http://localhost:8080/FirstWebApp/login.html
协议://IP地址:端口号/URI目录结构要求
java文件 必须放在 WEB-INF里面(新建)
WEB-INF里面必须按照下面的方式写 classes (里面放字节码文件)
- lib (里面放库 例如jdbc的jar包)
web.xml (请求路径/servlet)
HTTP
http请求协议包内部空间
按照自上而下划分,分为4个空间
空间划分:
1. 请求行 [ url:请求地址 http://127.0.0.1/index.html
method:请求方式 (get/post) ]
2. 请求头 [ 请求参数信息【get】]
3. 空白行 [ 没有任何的内容(起到隔离的作用)]
4. 请求体 [ 请求参数信息【如果是post,那么请求参数会存放在请求体中】]
**
http 响应协议包内部空间
按照自上而下划分,分为4个空间
空间划分
- 状态行 [ Http 状态码]
- 响应头 [ content-type 指定浏览器采用对应编译器
- 对响应体二进制数据进行解析]
- 空白行
- 响应体[可能被访问静态资源文件/命令/动态资源文件]
IDEA
IDEA中配置tomcat
File——>Sittings ——>Build, Execution, Deployment——>Aplication Servers 左上角加号 添加tomcat服务器
在IDEA中配置tomcat开关
run——>Edit config…..——>左上角加号——>Tomcat server ——>Local(本地开关) ——>ok
在IDEA中创建网站
File——>Modlue——>java Enterprise——>web Application——>起名 ——>ok
IDEA中快速创建Servlet实现类
alt+ins——>Create New Servlet ——> 写上包名——>写上类的名称 ——>下面对勾一定要取消
IDEA中的动态资源和静态资源修改自动更新
run ——> EditCongif…. ——>Server——> on….和 on …. 都改为 update resources——> 后面show打上对勾
设置好之后一定要以 debug的方式来启动(才好用)
IDEA网站内部结构
src文件: 存放作为动态资源文件的JAVA文件
web文件夹:存放作为静态资源文件【图片,html,css,js】
存放网站运行时的依赖的jar
存放网站的核心配置文件
WEB-INF :依赖的jar/核心配置文件【web.xml】
lib文件夹:依赖的jar
web.xml:通知tomcat当前网站那些java类时动态资源文件
注意:
静态文件【图片,视频,html css js 全部放到web文件夹下】
- 把一个网站交给Tomcat管理叫做发布
- run——>Edit config——>Deployment——>右侧➕——>Application context:(给你的网站起一个名字(必须是/开头))
- 上面的做法就是发布一个网站
Servlet接口实现类
- Servlet接口来自于Servlet规范下的一个接口,这个接口存在于Http服务器,提供jar包
- Tomcat服务器下,lib文件下,有一个Servlet-api.jar存放Servlet接口
- Servlet规范中,Http服务器能调用的【动态资源文件】必须是一个Servlet接口实现类
class Father implement Servlet{
// 合法的动态资源文件
}
动态资源文件就是一个实现了 Servlet接口的class【只有这样的类才能被tomcat调用】
Servlet接口中的抽象方法
- init()
- getServletConfig()
- getServletInfo()
- destroy() —————-以上四个方法对于Servlet接口实现类没用
- service() ————有用
Tomacat根据Servlet规范去调用Servlet接口实现类 Tomcat有权创建Servlet接口实现类实例对象 Servlet one = new OneServlet();
Servlet接口实现类开发步骤
第一步:创建一个java类,继承HttpServlet父类,使之成为Servlet接口实现类
- 为什么不直接实现Servlet接口?
因为为了解决你的开发难度,实现接口需要重写5个方法但是有很多方法用不上。
第二步:重写HttpServlet父类两个方法。 doGet()/doPost()
接口中的service()已经在HttpServlet抽象类中覆写了
第三步: 将servlet实现类信息【注册】到tomcat服务器中
【网站】——>【web】——>【WEB-INF】 ——> web.xml
- 将servlet实现类的类路径地址交给tomcat
web.xml写法
<servlet>
<!--这里面声明一个变量来存储servlet接口实现类的类路径-->
<servlet-name>mm</servlet-name>
<!--在这里面声明一个servlet接口实现类-->
<servlet-class>com.yixuexi.controller.OneServlet</servlet-class>
</servlet>
<!--为了降低用户访问Servlet接口实现难度,需要设置简短的请求别名,用户直接输入别名即可-->
<servlet-mapping>
<servlet-name>mm</servlet-name>
<!--设置简短的请求别名-->
<!--别名必须以斜线开头-->
<url-pattern>/one</url-pattern>
</servlet-mapping>
<!--此时在tomcat的内存中,会声明一个mm变量 里面保存了Servlet实现类路径-->
<!--
如果现在浏览器向tomacat索要OneServlet地址时:
http://localhost:8080/myWeb/one
-->
生命周期
网站中所有的Servlet接口实现类的对象,只能由http服务器来创建
开发人员不能手动创建Servlet实现类对象
在默认的情况下,当http服务器接收到对于当前Servlet接口实现类第一次请求时,会自动创建这个Servlet接口实现类的实例对象
http://localhost:8080/myWeb/one
访问Servlet接口实现类
在手动配置情况下,可以要求Http服务器在启动的时候,自动创建Servlet实现类的对象
<servlet>
<servlet-name>mm</servlet-name>
<servlet-class>com.yixuexi.controller.OneServlet</servlet-class>
<load-on-startup>1</load-on-startup> // 这里面填写大于0的整数
</servlet>
这个Servlet对象就会在Http服务器启动的时候创建
- 在Http服务器在运行期间,一个Servlet接口实现类只能被创建出一个实例对象
- 在Http服务器关闭的时候,所有的Servlet实现类对象进行销毁
Http状态码
介绍
三位数字组成的一个符号
http服务器在推送相应包之前,根据本次请求处理情况,将http状态码写入到状态行中
作用:
如果httpf服务器针对本次请求,返回了对应的资源文件可以通过http状态码通知浏览器应该如何处理这个结果
如果http服务器针对本次请求,无法返回对应的资源文件,通过状态码向浏览器解释不能提供服务的原因
分类
组成 100—-599分为5个大类
1XX
最具特征的100 通知浏览器本次返回的资源文件,并不是一个独立的资源文件,需要浏览器在接收响应包之后,需要向http服务器再索要其他的依赖文件
2XX
最具特征的 200 通知浏览器本次返回的资源文件时独立完整的资源文件,不需要再去找其他的依赖文件
3XX
最具特征的302 通知浏览器本次返回的不是一个资源文件的内容,而是一个资源文件的地址 ,需要浏览器根据地址发起请求,索要资源文件
response.sendRedirect(“资源文件地址”) 写入到响应头的location中,此时tomcat会把302状态码写到状态行中
4XX
404 通知由于服务端里面没有定位到被访问的资源文件。因此无法提供相关的帮助
405 通知浏览器,在服务端中已经去定位到了被访问到资源文件(servlet),但是这个Servlet对于浏览器所采用的请求方式不能处理
5XX
500 通知浏览器,在服务端已经定位到被访问的资源文件(servlet)这个servlet可以接收浏览器采用请求方式,但是Servlet再处理请求期间,由于java异常导致处理失败