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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© mlany 初级黑马   /  2017-12-27 16:26  /  987 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文


## 软件架构
* C/S:客户端与服务器端
* B/S:浏览器与服务器端

## web  资源
* 静态资源
        * HTML;,css..
* 动态资源
* PHP.ASP.Servlet/JSP

##  服务器
* Apache  ---PHP
* IIS   ----ASP
* websphere--- JAVA IBM  支持ee全部规范
* webLogic----- Java BEA  支持ee全部规范
* JBoss------
* TOMCAT------ 支持Servlet/JSP的开发规范

### WEB 动态资源目录结构

* website (站点)
        * 静态资源
        * WEB-INF(必须)
                * web.xml(必须)
                * classes(可选(编译后的java类))
                * lib(可选(jar包))

## Tomcat目录结构

* bin                :tomcat的执行的文件.
* conf                :tomcat的配置文件.
* lib                :tomcat运行的需要的jar包.
* logs                :tomcat的运行的日志文件.
* temp                :tomcat产生临时文件存放的路径.
* webapps        :tomcat发布的web项目的路径.
* work                :tomcat运行JSP的时候,JSP翻译成Servlet的代码存放的路径.

### 将一个web项目过程发布到Tomcat的三种方式
* 直接将工程拷贝到Tomcat/webapps下
        * 将工程复制到webapps即可
* 配置Tomcat虚拟路径
        * 在tomcat/conf/server.xml文件中进行配置:
        * 在<Host>标签下配置:
         * <Context path="/itheima" docBase="C:/website"/>
* 配置Tomcat虚拟路径(推荐)
* 在tomcat/conf/Catalina/localhost/xxx.xml
* 配置<Context docBase="C:/website"/>
* xxx作为虚拟路径的名称.
        * 在conf/Catalina/localhost/xxx.xml 配置<Context docBase=””/>

### HTTP协议
* 用于规定浏览器与服务器之间的访问规则
* 特点(基于请求和响应的模型)
        * 必须现有请求后又响应
        * 请求和响应必须成对出现
        * 默认端口 80
* HTTP版本
        * 1.0 每次响应后即可关闭连接
        * 1.1 (现在使用的版本)不是每次响应之后挂断,等待长时间没有请求会自动挂断

* 请求部分
        * 请求行
                * 提交方式(GET和POST)
                        * GET的提交的参数会显示到地址栏上,而POST不显示.
                        * GET往往是有大小限制的,而POST没有大小的限制.
                        * GET没有请求体,而POST有请求体.
        * 请求头
                * 都是键值对形式显示,一般一个key对应一个value也有一个key对应多个value
                * User-Agent :代表浏览器的类型
                * 作用 解决文件下载乱码问题
                        *  文件下载:下载中文文件:IE使用URLEncodor进行编码,而Firefox使用Base64编码.
                * Referer :代表的是网页的来源
                        * 作用 防盗链
                * IF-Modified-Since :通常与响应中的头Last-Modified一起使用查找本地缓存.
        * 请求体
                * 就是POST提交方式的提交的参数.

* 响应部分
* 响应行
        * 协议版本
        * 状态码
                *  200   302      304            404            500
                *  成功  重定向            查找本地缓存     资源不存在      服务内部错误
* 响应头  键值对一般一个key对应一个value,也有一个key对应多个value.
        * Last-Modified        :与请求中的If-Modified-Since一起使用查找本地缓存.
        * Content-Dispostion        :文件下载的使用使用的一个头信息
        * Location :重定向的跳转的路径.
        * ** Refresh :定时刷新/定时跳转. **
* 响应体 显示浏览器的页面内容

## Servlet
* 概述
        * 运行在web服务器上的一个java程序,用于接收和响应客户端的请求,通常使用HTTP协议
        * Servlet是SUN公司的提供的一个动态网页开发技术
* 作用
        * 用于接收和响应客户端的请求
* 使用
        * 编写一个类实现Servlet
        * 将实现类配置到web服务器中
* 配置
```
<!-- servlet 配置 -->
  <servlet>
          <!-- Servlet的名称 -->
  <servlet-name>servlet</servlet-name>
          <!-- SErvlet的全路径 -->
  <servlet-class>com.itheima.servet.ServletDemo1</servlet-class>
  </servlet>
   <!-- Servlet的映射 -->
  <servlet-mapping>
  <!-- Servlet的名称 与sevlet配置中的name标签值一致 -->
  <servlet-name>servlet</servlet-name>
  <!-- Servlet的访问路径 -->
  <url-pattern>ServletDemo1</url-pattern>
  </servlet-mapping>

```


### 使用ServletRequest接收参数
        * String getParameter(String name) --用于接收一个名称对应一个值的数据.
        * String[] getParameterValues(String name) --用于接收一个名称对应多个值的数据
        * Map getParameterMap() --用于接收表单中的所有的数据,Map的key是表单提交的参数名称,Map的value是提交参数的值.
        * Enumeration getParameterNames() ---用于获取表单中提交的所有的参数的名称.

### Servlet的实现关系
* servlet(接口)----GenericServlet(实现servlet,通用的servlet与协议无关)-----HttpServlet(继承GenericServlet 使用Http协议)
* HttpServlt使用方式
        * 定义一个类继承HttpServlet 重写doGET和doPOST方法
        * 在web.xml中配置(和上面的配置一样)

## Servlet生命周期
* 生命周期:对象从创建到销毁的过程
* servlet生命周期
        * Servlet在内存中只只加载一次由init()方法初始化(在用户第一次请求Servlet)当客户端任何一次请求都会创建一个新的线程访问service方法,service根据请求的方式的不同调用doGet/doPost方法当servlet中服务器中移除,或者关闭服务器时,servlet被销毁,destroy方法执行

## Servlet的相关配置
* 启动时创建Servlet(默认是在第一次访问时被创建 现在让Servlet在服务器启动的时候创建好.进行对Servlet的配置)
        * 在web.xml中在`<servlet></servlet>`标签中配置
        * ` <load-on-startup>2</load-on-startup>`  --- 传入正整数,整数越小,被创建的优先级就越高.
        * 不能写1 Tomcat默认使用
        * 配置该标签后在启动服务器时就会创建有该标签的servlet


* url-pattern的配置
        * url-pattern配置方式共有三种:
        * 完全路径匹配  : 以`/` 开始   例如:`/ServletDemo4 , /aaa/ServletDemo5 , /aaa/bbb/ServletDemo6`
        * 目录匹配           : 以`/` 开始 需要以 * 结束.        例如: `/* ,/aaa/* ,/aaa/bbb/*`
        * 扩展匹配      :不能以`/` 开始 以`*`开始。例如: `*.do , *.action ` ** 注意 错误的写法: /*.do **
        * **优先级 **
                * ** 完全路径匹配 > 目录匹配 > 扩展名匹配 **


## Http response设置响应头

* addHeader(String name,String value);        --- 针对一个key对应多个value的响应头.
        * addDateHeader(String name,long date);
        * addIntHeader(String name,int value);

* setHeader(String name,String value);        --- 针对一个key对应一个value的响应头.
        * setDateHeader(String name,long date);
        * setIntHeader(String name,int value);
### 解决 response 向页面跳转的中文乱码问题
* 该方式只能应用于字符流
* ** response.setContentType("text/html;charset=UTF-8"); **

### response 设置响应头 跳转刷新
* ** response.setHeader("Refresh", "5;url=/web_02/login/index.html"); **
        * 参数
                * Refresh 设置响应头自动刷新
                * "5;url=/web_02/login/index.html" 固定格式  5秒后跳转该页面
##  ServleContext 域对象
* ** ServleContext 对象主要用于存储数据 存的数据有一定的作用范围,该对象被称为域对象 **
* 作用
        * 用来获得全局初始化参数
        * 用来获得文件的MIME的类型
        * ** 作为域对象存取数据 **
                * ** 作用范围: 整个web工程 **
                * ** 创建:服务器启动时Tomcat服务器会为每个web项目创建一个单独的ServletContext对象 **
                * ** 销毁:服务器关闭的时候,或者项目从服务器中移除的时候. **
        * ** 用于读取web项目下的文件 **
   
### 常用方法
* ** 存取数据 **
        * setAttribute(String name,Object object)
                * 用来向ServletContext中存入数据.
        * getAttribute(String name)
                * 用来从ServletContext中获取数据.       
        * removeAttribute(String name)   
                * 用来从ServletContext中移除数据.
* ** 用法 要用servletCount存取数据必须先在init方法中初始化 **
        * 在一个HttpServlet的子类中的init初始化方方法中
                * int count =0; this.getServletContext().setAttribute("count", count);
        * 在需要的servlet的类中调用
                *         int count = (int) this.getServletContext().getAttribute("count");   

* ** 读取文件 **
        * InputStream getResourceAsStream(String path);
                * 根据给定的文件路径获取一个文件输入流
                * 该方法获取文件路径写法(**/WEB-INF/classes/db.properties **)
        * ** 也可以用之前类的反射类的加载器获取输入流  **
                * ReadFileServlet.class.getClassLoader().getResourceAsStream("db.properties");
        *  String getRealPath(String path);
                *   返回一个路径的磁盘绝对路径
                *  用法 servletContext.getRealPath("/WEB-INF/classes/db.properties");

* ** 读取全局变量 **
        * String geInitParameter(String name)  
                * 根据指定的属性名称获取全局属性的值
        * Enumeration getInitParameterNames()
                * 获取全部的属性获取全部的全局属性名

* ** 获取文件的MIME的类型 **
        * String getMimeType(String file)

## ServletCofig  获得Servlet的配置信息
* String getServletName()  --获取Servlet在web.xml中配置的name的值
* String getInitParameter(String name);        ---获得Servlet的初始化参数的.
* Enumeration getInitParameterNames();                ---获得所有Servlet的初始化参数的名称.         

0 个回复

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