本帖最后由 小石姐姐 于 2018-5-23 14:46 编辑
Servlet
ServletContext---域对象(重点)
作用:1.1用来获得全局初始化参数
1.2用来获得文件的MIME的类型.
1.3作为域对象存取数据.---------掌握点
1.4用来读取web项目下的文件-----掌握点
范围:整个web工程.
创建:服务器启动的时候,tomcat服务器为每个web项目创建一个单独的ServletContext对象(一个项目只有一个ServletContext对象)
销毁:服务器关闭的时候,或者项目从服务器中移除的时候.
set/getAttribute
Enumeration---枚举
协议:规定双方需要遵守的规则.
###HTTP协议:
```
用来规定浏览器与服务器之间需要遵守的规则.
作用:规范浏览器和服务器之间的数据传递.
特点:请求和响应的模型,现有请求后有相应,请求和相应必须承兑出现.
默认端口号80
版本:
1.0 每次响应后即刻关闭了连接.
1.1 现在使用,不是每次响应后挂断,等待长时间以后没有请求会挂断.
请求头:
都是键值对的形式显示的.一般一个key对应一个value,也有个别的是一个key对应多个value.
User-Agent 代表浏览器的类型.----文件下载:下载中文文件:IE使用URLEncodor进行编码而Firefox使用Base64编码.
Referer 代表的是网页的来源---防盗链
If-Modified-Since 通常与响应中的头Last-Modified一起使用查找本地缓存.
响应行:
状态吗:
200:成功
302:重定向
304:查找本地缓存
404:资源不存在
500:服务器内部错误
响应头:键值对,一般一个key对应一个value,也有一个key对应多个value.
Last-Modified 与请求中的If-Modified-Since一起使用查找本地缓存
Content-Dispostion:文件下载的使用使用的一个头信息.
Location:重定向的跳转的路径
Refresh:定时刷新/定时跳转
```
#Servlet的概述
```
运行在web服务器上的晓得java程序,用来接受和响应从客户端发送过来的请求,通常使用http协议.
是sun公司提供的一个动态网页开发技术.
他的 作用:用来处理从客户端浏览器发送的请求,并且可以对请求做出相应.
使用:编写一个类实现Servlet接口,将编写的这个类配置到服务器中.
* 配置:
<!-- 配置Servlet -->
<servlet>
<!-- Servlet的名称 -->
<servlet-name>test1</servlet-name>
<!-- SErvlet的全路径 -->
<servlet-class>com.itheima.a_servlet.ServletDemo1</servlet-class>
</servlet>
<!-- Servlet的映射 -->
<servlet-mapping>
<!-- Servlet的名称 -->
<servlet-name>test1</servlet-name>
<!-- Servlet的访问路径 -->
<url-pattern>/ServletDemo1</url-pattern>
</servlet-mapping>
* 访问:
http://localhost:8080/day09/ServletDemo1
Servlet的实现关系
Servlet 接口(接口)
|
GenericServlet 通用的Servlet(类)
|
HttpServlet HttpServlet(类)
编写一个类继承HttpServlet,重写doGet和doPost方法.
```
##所有处理请求和响应的代码通过doGet()的重写去操作处理的
##处理请求部分使用HttpServletRequest类的对象来完成(继承自ServletRequest接口)
##处理响应部分使用HttpServletResponse类的对象来完成(继承自ServletResponse接口)
```
配置(web.xml文件)
```
##用户登录页面案例实现-步骤分析
```
步骤一.创建数据库和表
步骤二.创建包和类
步骤三.引入jar包(需要用到的有:mysql的数据库驱动包,c3p0连接池的jar包,还有dbutils的包)
步骤四.引入login的页面
步骤五.编写Servlet-->Service-->DAO
```
#Servlet的生命周期(面试点)
```
生命周期:就是一个对象从创建到销毁的过程.
Servlet声明周期:Servlet从创建到销毁的过程.
何时创建:用户第一次访问Servlet创建Servlet的实例.
何时销毁:当项目从服务器中移除的时候,或者关闭服务器的时候.
```
###用户第一次访问Servlet的时候,服务器会创建一个Servlet的实例,那么Servlet中init方法就会执行,任何一次请求服务器都会创建一个新的线程访问Servlet中的service的方法.在service方法内部根据请求的方式的不同调用doxxx的方法.当Servlet中服务器中移除掉,或者关闭服务器,Servlet的实例就会被销毁,那么destroy方法就会执行.
##开发中的路径的编写:
```
相对路径:都是需要找位置相对关系.不能以/开始.
绝对路径:不需要找位置相对关系.以/开始
*绝对路径中分为客户端路径和服务器端路径
**客户端路径一定要加工程名. /day09/demo
**服务器端路径不需要加工程名. /demo
```
##案例二登陆成功以后5秒钟跳转到另一个页面.
###技术分析
```
使用http协议中的Refresh头信息
Refresh之前已经介绍可以定时页面跳转.需要使用程序设置头信息才可以.
```
##案例三记录网站的登录成功的人数
###技术分析ServletContext
####在服务器启动的时候ServletContext就会被创建.一个web项目创建一个ServletContext对象.在服务器关闭的时候销毁.
```
使用ServletContext对象,用于存取数据.
三个方法:
void setAttribute(String name,Object object)在这个servlet上下文中绑定对象到给定的属性名。
Object getAttribute(String name)返回具有给定名称的servlet容器属性,如果没有该名称的属性,则返回null。
removeAttribute(String name)从servlet上下文中删除给定名称的属性
```
```
步骤一.在服务器启动的时候初始化一个变量count的值为0.将count存入到ServletContext中.
步骤二.创建一个类Demo1继承HttpServlet接口,重写doGet()和doPost()方法,接受表单提交的参数,封装到实体对象中,
步骤三.调用业务层处理数据,根据处理结果完成页面跳转(判断登录是否成功)
如果登录成功了记录次数count++.实现页面跳转功能,利用refresh(response.setHeader("Refresh","5;url=/day/demo2"))---跳转到demo2中
步骤四.创建一个类Demo2继承HttpServlet接口,重写doGet()和doPost()方法,获得count的值,将这个值响应到浏览器中.
```
创建一个html--->表单-->提交路径---->web.xml配置文件,通过映射找到继承servlet接口的.class(.java)文件--->启用service方法匹配相应的doXXX()方法,进入方法中--->实现代码块--->代码中request.getXXX方法获取提交的参数,先将参数封装到一个user类中,判断数据库中是否含有这个user对象,如果有,--->响应给浏览器,,,登陆成功交给一个dao把uresponse.getWriter().printlnser对象传过去
#文件下载(解决乱码)
```
文件下载的方式
一种:超链接下载.直接将文件的路径写到超链接的href中.---前提:文件类型,.浏览器不支持
二种:手动编写代码的方式写完文件的下载.
*设置两个头和一个流
*Content-Type :文件的MIME的类型
*Content-Disposition :以下载的形式打开文件.
*InputStream :文件的输入流.(输入流是固定的 getOutputStream() )
```
##Cookie&Session
```
Cookie是有大小和个数的限制(客户端)
Session没有大小和个数的限制(服务器端)(域对象)
```
###Session(域对象)
```
创建:服务器第一次调用getSession()创建session
销毁:三种情况
第一种:session过期,默认过期事件为30分钟(在tomcat中的web.xml文件配置中有设置到)针对自己项目配置session过期时间.单位是分钟
第二种:非正常关闭服务器.如果正常关闭session序列化到硬盘
第三种:手动调用session.invalidate();
范围:一次会话(含多次请求)(根本原因:存SessionID的Cookie是会话级别的)
```
|
|