A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Black_Y 初级黑马   /  2018-5-21 15:43  /  585 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 小石姐姐 于 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是会话级别的)

```

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马