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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 小石姐姐 于 2017-12-20 11:52 编辑

【软件的架构】
1.c/s架构的软件
        1.1        client/server 客户端和服务端的软件,都是pc端安装的软件
        1.2         优点          :效果炫,一部分的代码写到客户端(速度快)
        1.3         缺点          :服务端更新,服务器端都需要更新

2.b/s架构的软件
        2.1        browes/server 浏览器和服务器端的软件,不需要安装到pc端,值鱼药有一个浏览器即可        
        2.2        优点     :服务器端更新,客户端浏览器不需要进行更新
        2.3        缺点    :效果不炫,所有的代码都运行在服务器端,导致服务器压力过大
                *效果                 :使用HTMLS,css3 可以做出很炫的效果
                *服务器端压力   :搭建服务器的集群,而且还有ajax技术

【web的资源】
1. 静态资源
        *HTML CSS JS 图片

2. 动态资源               
        * PHP                        :
        * ASP                        :
        * serverlet/JSP

【服务器】:
* 硬件 :其实就是一台配置很高的电脑
* 软件 :必须在一台电脑上安装服务器软件,这台电脑称之为WEB服务器

常见服务器
* Apache    : 发布PHP的
* IIS              : 发布ASP的
* WebShere : IBM公司研发的,收费的大型的服务器软件,支持EE的所有的开发规范
* WebLogic : BEA公司研发, 收费的大型的服务器软件,支持EE的所有的开发规范
* Tomcat      : Apache组织研发,免费的小型的服务器软件支持Server/JSP的开发规范
* JBoss

【WEB动态资源目录】
Website
        |----静态资源
        |----WEB-INF :必须有
                        |----web.xml :必须的
                        |----classes :可选的  放java代码
                        |----lib         :可选的

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

【发布一个WEB项目到Tomcat中】.
1. 发布一个WEB工程到Tomcat中共有三种方式:

1.1  方式一:直接将项目copy到webapps下
        * 将工程复制到webapps即可.
1.2  方式二:配置tomcat的虚拟路径**一般不用**
* 在tomcat/conf/server.xml文件中进行配置:
* 在<Host>标签下配置:
        * <Context path="/itheima" docBase="C:/website"/>
1.3  方式三:配置tomcat的虚拟路径-推荐
* 在tomcat/conf/Catalina/localhost/xxx.xml
* 配置<Context docBase="C:/website"/>
* xxx作为虚拟路径的名称.

【Tomcat常见的问题:】
【没有配置JAVA_HOME 引发Tomcat一闪而过】
        *一定要配置JAVA_HOME环境变量

【端口号冲突的问题】
        *一种:将占用端口的应用结束
                *netstat -ano
                *打开任务管理器结束
        *二种:修改自身的应用的端口号
                *tomacat/conf/server.xml

【servlet】:负责和前台页面进行对话

【HTTP协议】
*前台----请求---->>>后台

*前台<<<----响应----后台        

*核心:一次请求必须对应一次响应
*协议:
        *什么是协议: 规定双方需要遵守的规则
*HTTP协议:
        *什么是HTTP协议: 用来规定浏览器与服务器之间需要遵守的规则
*HTTP协议的作用: 规范浏览器和服务器之间的数据传递
        HTTP协议的特点:
                *基于请求和响应的模型.
                        *必须先有请求后有响应
                        *请求和响应必须成对出现
                *默认端口号是80.
         HTTP协议的版本:(面试题会提问)
                * 1.0        :每次响应后即刻关闭了连接.
                * 1.1        :现在使用.不是每次响应后挂断,等待长时间以后没有请求会挂断.
【HTTP协议的详解】
  【请求部分】
        * 请求行
                * 提交方式:
                        * 提交方式有很多,常用的GET和POST:
                        * GET和POST的区别:
                                * GET的提交的参数会显示到地址栏上,而POST不显示.
                                * GET往往是有大小限制的,而POST没有大小的限制.
                                * GET没有请求体,而POST有请求体.

                * 提交路径:
                * 协议版本:
        *请求头
                * 都是键值对的形式显示的.一般一个key对应一个value,也有个别的是一个key对应多个value.
【User-Agent,Referer,If-Modified-Since这三个需要记忆】
                * User-Agent                :代表浏览器的类型. --- 文件下载:下载中文文件:IE使用URLEncodor进行编码,而Firefox使用Base64编码.
                * Referer                        :代表的是网页的来源. --- 防盗链.
                * If-Modified-Since        :通常与响应中的头Last-Modified一起使用查找本地缓存.
        * 请求体
                * 就是POST提交方式的提交的参数.         
  【响应部分】
        * 响应行:
                * 协议版本
                * 状态码                :
                        * 200        :成功
                        * 302        :重定向
                        * 304        :查找本地缓存
                        * 404        :资源不存在(路径错了,表单的提交的地址)
                        * 500        :服务器内部错误(Java代码出异常了)
                * 状态码描述
        * 响应头:键值对,一般一个key对应一个value,也有一个key对应多个value.
                【Last-Modified, Content-Dispostion,Location,Refresh需要记忆】
                * Last-Modified                        :与请求中的If-Modified-Since一起使用查找本地缓存.
                * Content-Dispostion        :文件下载的时候使用的一个头信息.
                * Location                                :重定向的跳转的路径.
                * Refresh                                :定时刷新/定时跳转.
        * 响应体:显示浏览器的页面的内容.

【Servlet的概述】
        什么是Servlet:
                * 就是一个运行在WEB服务器上的小的Java程序,用来接收和响应从客户端发送过来的请求,通常使用HTTP协议.
                * Servlet就是SUN公司提供的一个动态网页开发技术.
        Servlet的作用:
                * 用来处理从客户端浏览器发送的请求,并且可以对请求作出响应
        使用Servlet:
                * 编写一个类实现Servlet接口.
                * 将编写的这个类配置到服务器中.

【使用ServltRequest接收参数】                        

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

【post请求中文乱码处理】
在java代码中加入        
                req.setCharacterEncoding("UTF-8")
【get请求中文乱码处理】                        
        String username = req.getParameter("username");               
        username = new String(username.getBytes("IOS-8859-1"),"UTF-8");

【响应中文乱码处理】
        req.setContenType("text/html;charset=UTF-8");

Servlet的生命周期:(*****)
生命周期:就是一个对象从创建到销毁的过程.
Servlet生命周期:Servlet从创建到销毁的过程.
                * 何时创建:用户第一次访问Servlet创建Servlet的实例
                * 何时销毁:当项目从服务器中移除的时候,或者关闭服务器的时候.
                ?用户第一次访问Servlet的时候,服务器会创建一个Servlet的实例,那么Servlet中init方法就会执行.任何一次请求服务器都会创建一个新的线程访问Servlet中的service的方法.在service方法内部根据请求的方式的不同调用doXXX的方法.(get请求调用doGet,post请求调用doPost).当Servlet中服务器中移除掉,或者关闭服务器,Servlet的实例就会被销毁,那么destroy方法就会执行.


Servlet的相关的配置:
【启动时创建Servlet】
        Servlet默认是在第一次访问的时候创建的.现在让Servlet在服务器启动的时候创建好.进行对Servlet的配置:
        在web.xml中在<servlet></servlet>标签中配置:
        * <load-on-startup>2</load-on-startup>  --- 传入正整数,整数越小,被创建的优先级就越高.
【url-pattern的配置】
url-pattern配置方式共有三种:
        1.完全路径匹配        :以 / 开始                                例如:        /ServletDemo4 , /aaa/ServletDemo5 , /aaa/bbb/ServletDemo6
        2.目录匹配                :以 / 开始 需要以 * 结束.        例如: /* ,/aaa/* ,/aaa/bbb/*
        3.扩展名匹配        :不能以 / 开始 以 * 开始的. 例如: *.do , *.action
        ***** 错误的写法        : /*.do

***** 完全路径匹配 > 目录匹配 > 扩展名匹配


开发中的路径的编写:
相对路径:都是需要找位置相对关系.不能以 / 开始的.
        * ./ 当前路径  ../上一级目录
        * 使用相对路径访问:
                * http://localhost:8080/day09/demo4-url/demo1.html
                * http://localhost:8080/day09/ServletDemo6
绝对路径:不需要找位置相对关系. 以 / 开始的.
        * 绝对路径中分为客户端路径和服务器端路径:
                * 客户端路径一定要加工程名.                /day09/ServletDemo6
                * 服务器端路径不需要加工程名.        /ServletDemo6

【使用Http协议中的Refresh头信息】
        Refresh之前已经介绍可以定时页面跳转.需要使用程序设置头信息才可以.
【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);


【ServletContext】重要*****
ServletContext的作用:
        * 1.用来获得全局初始化参数.
        * 2.用来获得文件的MIME的类型.
        * 3.作为域对象存取数据.
ServletContext是一个域对象.
    * 作用范围:整个web工程.
    * 创建:服务器启动的时候,tomcat服务器为每个web项目创建一个单独ServletContext对象.
    * 销毁:服务器关闭的时候,或者项目从服务器中移除的时候.

        * 4.用来读取web项目下的文件.

【读取web项目下的文件】
传统方式读取文件:
        * 使用的是相对路径,相对的JVM的路径.
        * 但是现在是一个web项目,相对于JVM的路径的.现在JVM已经交给tomcat管理.

使用ServletContext对象读取WEB项目下的文件
        * InputStream getResourceAsStream(String path); --- 根据提供路径读取文件返回一个文件的输入流.
        * String getRealPath(String path); --- 返回一个路径的磁盘绝对路径.

使用类的加载器
        .class.getClassLoader().getResourceAsStream(String path)                        







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