Javaweb开发项目实例教程(idea版)——Servlet规范(上篇)
1.servlet规范来自于JAVAEE规范中的一种
2.作用:
1)在Servlet规范中,指定【动态资源文件】开发步骤
2)在Servlet规范中,指定Http服务器调用动态资源文件规则
3)在Servlet规范中,指定Http服务器管理动态资源文件实例对象规则
一、Servlet规范:
1.Servlet规范是Sun公司提供
2.Servlet规范指定动态资源文件调用管理规则
3.servlet规范涉及接口实现类由Http服务器厂商提供
4.tomcat对于servlet规范提供接口实现类在lib/servlet-api.jar
二、Servlet规范细节:
1.指定了Servlet接口实现类开发步骤
2.指定了Tomcat调用Servlet接口实现类规则
3.指定了Tomcat如何管理Servlet接口实现类的实例对象
4.指定了多个Servlet接口实现类之间调用规则
5.指定了多个Servlet接口实现类之间数据共享方案
三、Servlet接口实现类开发步骤
1.Servlet规范认为,只有作为Servlet接口的实现类才可以被称为动态资源文件只有动态资源文件才有资格被Tomcat服务器进行调用
2.开发步骤:
第一步:创建一个Java类继承与HttpServlet
第二步:重写doGet/doPost方法
第三步:在网站中web.xml中注册Servlet接口实现类
四、Servlet对象生命周期 【背】
1.一个网站中所有的Servlet接口实现类的实例对象应该由Http服务器负责创建
2.在正常情况下,只有在Tomcat接收到第一个针对当前Servlet接口实现类请求时才会创建其实例对象
通过命令干预,可以要求tomcat在启动时自动创建Servlet接口实现类
实例对象
web.xml
<servlet>
<servlet-name></servlet-name>
<servlet-class></servlet-class>
<load-on-startup>76</load-on-startup> 大于0的整数即可
</servlet>
3.一个Servlet接口实现类最多只能被创建一个实例对象
4.在Tomcat关闭时负责销毁掉网站中所有的Servlet接口实现类
实例对象
五、HttpServletResponse接口
1.介绍:
1)HttpServletResponse接口来自于Servlet规范
2)HttpServletResponse接口实现类由Http服务器厂商提供
3)HttpServletResponse接口可以将Servlet中运行结果写入到响应包
4)开发人员习惯于将HttpServletResponse接口修饰的对象称为【响应对象】
2.主要功能:
1)HttpServletResponse接口负责将Servlet运行结果以二进制形式写入到响应包中响应体
2)HttpServletResponse接口负责设置响应包中响应头中content-type属性控制浏览器采用对应的解析器和编译器对响应体中二进制数据进行处理
3)HttpServletResponse接口负责将一个请求地址写入到响应头中location属性中来控制浏览器下一次请求的方式
六、HttpServletRequest接口
1.介绍:
1)HttpServletRequest接口来自于Servlet规范
2)HttpServletRequest接口 实现类由Http服务器厂商提供
3)HttpServletRequest接口读取请求协议包内容
4) 开发人员习惯于将HttpServletRequest接口修饰对象称为【请求对象】
2.主要功能:
1) 读取请求包中请求行中信息【url,method】
2) 读取请求包中请求头或则请求体中参数信息
3) 代替浏览器向tomcat索要资源文件
七、默认欢迎资源文件设置
1. 默认欢迎资源文件:tomcat针对用户对当前网站发起默认请求,自动返回资源文件
2.? 默认请求:
1)正常请求:
http://localhost:8080/myWeb/one.html
2) 默认请求:
http://localhost:8080/myWeb/
3.tomcat遵守的默认欢迎资源文件定位规则:
1)规则位置:tomcat安装目录/conf/web.xml
4.自定义网站中的默认欢迎资源文件定位规则:
web.xml
<welcome-file-list>
<welcome-file></welcome-file>
</welcome-file-list>
八、Http状态码
1.介绍:
1)由Http服务器生成一个由三位数字组成符号
2) 表示本次通信的状态同时可以要求浏览器接收到响应包之后行为
3)分为5个大类 (1XX,2xx,3xx,4xx,5xx)
2.? 200: Http服务器将浏览器请求的资源文件进行了返回
3.? 302:Http服务器通知浏览器到响应头中location中读取请求地址并要求浏览器将得到请求地址更新到浏览器地址栏response.sendRedirect("请求地址")
4. 404: Http服务器通知浏览器本次索要的资源文件不存在
原因:
1)人为原因:
网站名不对
如果网站名正确,可能资源文件名称
tomcat没有在网站定位默认欢迎资源文件
设置请求地址没有按照uri格式(/网站名/资源文件名)设置
2)IEDA没有将最新网站内容交给tomcat
5.405:? Http服务器通知浏览器本次索要的资源文件已经被找到了,但是
这个资源文件对于浏览器请求方式无法接收
get
浏览器------------》servlet.doGet()
post
浏览器-----------》 servlet.doPost()
5.500:Http服务器通知浏览器本次索要的资源文件已经被找到了并且也可以接收浏览器的请求方式,但是由于资源文件在处理过程出现了异常因此无法提供服务
异常:并不是命令写错了,命令使用数据不满足条件
**一个异常至少遇到三次以上才有可能进行解决
九、常见异常:
1. jdbc-jar包忘记添加
ClassNotFoundException: com.mysql.jdbc.Driver
2. mysql服务器停止或则mysql服务器所在计算机ip地址写错
com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
3. 访问数据库不存在
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown database 'xxx'
4. 访问数据库使用密码不正确
java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES)
5. SQL命令书写错误
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'dname='888',loc='888' where deptno=5'
6. NullPointerException
十、servlet之间调用方式
1.前提条件:
针对浏览器某次请求,需要在服务端中由多个Servlet参与其中但是浏览器一次只能请求一个资源文件,导致用户为了得到服务结果需要手动通过浏览器发起多次请求,增加用户获得服务难度降低使用感受。导致用户流失
2.红线:? ?无论本次请求中涉及了多个Servlet,用户只需要手动发起一次请求
3.解决方案:? 重定向解决方案,请求转发解决方案
十一、重定向解决方案
1.工作原理:
2.依赖命令? response.sendRedirect("地址")
3.地址格式:
1)如果要求浏览器访问的其他网站的资源,地址采用URL?response.sendRedirect("http://www.baidu.com")
2)? 如果要求浏览器访问的当前网站的资源,地址采用URI
response.sendRedirect("/myWeb/two")
4.特征【背】
1)重定向过程中浏览器会发送多少次请求重定向过程中浏览器至少发送两次以上请求,但是只有第一次请求是用户手动发起的
2)在浏览器发送请求之后,如何判断服务端采用重定向方案解决请求在本次请求结束后,收到的状态码是302时就可以判定
3)通过重定向方案调用的Servlet接收的请求方式一定是GET.从第二次请求开始是通过浏览器地址发起的。因此发起请求方式一定是GET
十二、请求转发解决方案
1.工作原理
2.依赖命令:
//通过请求对象获得资源申请对象
RequestDispatcher? report =? ?request.getRequestDispatcher("地址");
//将资源申请对象发送给tomcat
report.forward(request,response)
3.地址:? ? ? "/资源文件名"
4.特征:
1)请求转发过程中,浏览器发送了多少次请求只发送了一次请求
2)请求转发过程中,为什么将请求对象和响应对象交给tomcat请求转发过程,两个Servlet应该共享同一个请求协议包,因此共享这个请求协议包关联的请求对象和响应对象
3)通过请求转发调用的Servlet接收的请求方式在同一次请求转发过程中,所有servlet接收请求方式保持一致
十三、HashMap与HashTable与ConcurrentHashMap [面试题]
十四、Servlet之间数据共享方案
1.ServletContext接口
2.Cookie类
3.HttpSession接口
4.HttpServletRequest接口
十五、ServletContext接口
1.介绍:
1)ServletContext接口来自于Servlet规范
2)ServletContext接口实现类由Http服务器厂商提供
3)ServletContext接口修饰对象被称为全局作用域对象
4)来自于同一个网站下Servlet都可以使用全局作用域对象进行数据共享
2. 使用:? myWeb网站中OneServlet通过全局作用域对象向TwoServlet提供共享数据
运行OneServlet
//1.通过请求对象向Tomcat索要当前网站中全局作用域对象ServletContext? ?application=? request.getServletContext()
//2.将数据添加到全局作用域对象中作为共享数据application.setAttribute("共享数据名",共享数据)
运行TwoServlet
//1.通过请求对象向Tomcat索要当前网站中全局作用域对象ServletContext? ?application=? request.getServletContext()
//2.从全局作用域对象读取数据Object 共享数据 = application.getAttribute("共享数据名");
3. 生命周期:[背]
1)在tomcat启动时,自动为当前网站创建一个全局作用域对象
2)在tomcat运行时,一个网站中有且只能有一个全局作用域对象
3)在tomcat关闭时,自动销毁网站中全局作用域对象
4. 存在问题:
1)如果不进行限制,无限向全局作用域对象添加数据。导致服务端计算机内存消耗殆尽
2)容易导致数据污染
最后奉上视频教程??,视频观看效果更佳!!走过路过别忘素质三连哦~~