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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 小石姐姐 于 2018-2-8 14:45 编辑
WEB中TOMCAT和Servlet的概述

【软件的架构】
C/S架构的软件:
* Client / Server 客户端和服务器端的软件. 都是需要在PC端安装的软件. 比如 QQ,迅雷,暴风...
* 优点:效果炫,一部分代码写到客户端(速度快).
* 缺点:服务器端更新,客户端都需要更新.
B/S架构的软件:
* Browser / Server 浏览器端和服务器端的软件. 不需要安装到PC端,只需要有一个浏览器即可. 比如 京东,网银,WEBQQ,WEB迅雷...
* 优点:服务器端更新,客户端浏览器不需要进行更新.
* 缺点:效果不炫,所有的代码运行都在服务器端,导致服务器压力过大.
    * 效果:使用HTML5,CSS3可以做出很炫效果.
    * 服务器端压力:搭建服务器的集群.而且还有AJAX技术.
【WEB的资源】
静态资源:
HTML,CSS,JS,图片...
动态资源:
PHP           :
ASP           :
Servlet/JSP   :
【服务器】
硬件:其实就是一台配置很高的电脑.
软件:必须在一台电脑上安装服务器软件.这台电脑称为是WEB服务器.
【常见WEB服务器】
Apache      :发布PHP的.LAMP:Linux Apache MySQL PHP.
IIS         :发布ASP的.
WebSphere   :IBM公司研发,收费的大型服务器软件,支持EE的所有的开发规范.
WebLogic    :BEA公司研发,收发的大型服务器软件,支持EE的所有的开发规范.
Tomcat      :Apache组织研发,免费的小型的服务器软件,支持Servlet/JSP的开发规范.
JBoss       :

【WEB动态资源目录结构】
website
    |-----静态资源
    |-----WEB-INF
               |-----web.xml :必须的
               |-----classes :可选的
               |-----lib     :可选的
Tomcat的安装:
【安装Tomcat】--- 解压即可.

【发布一个WEB工程到Tomcat中共有三种方式】
* 1.直接将工程copy到tomcat/webapps下.
* 2.配置tomcat虚拟路径:
* 3.配置tomcat虚拟路径:
【方式一:直接将项目copy到webapps下】
* 将工程复制到webapps即可.
【方式二:配置tomcat的虚拟路径-不推荐】
* 在tomcat/conf/server.xml文件中进行配置:
* 在<Host>标签下配置:
    * <Context path="/itheima"docBase="C:/website"/>
【方式三:配置tomcat的虚拟路径-推荐】
* 在tomcat/conf/Catalina/localhost/xxx.xml
* 配置<ContextdocBase="C:/website"/>
* xxx作为虚拟路径的名称.
【Tomcat常见问题】
【没有配置JAVA_HOME引发tomcat一闪消失】
* 一定要配置JAVA_HOME环境变量.
【端口号冲突的问题】
* 一种:将占用端口的应用结束.
    * netstat -ano
    * 打开任务管理器结束:
* 二种:修改自身应用的端口号.

    * tomcat/conf/server.xml

【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           :代表浏览器的类型. --- 文件下载:下载中文文件: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-Disposition    :文件下载的使用使用的一个头信息.
Location             :重定向的跳转的路径.
Refresh               :定时刷新/定时跳转.
响应体:显示浏览器的页面的内容.

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

常用方法



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


*EnumerationgetParameterNames()          ---用于获取表单中提交的所有的参数的名称.
【解决乱码问题】

浏览器向服务器携带中文?
        get方式
                get的参数都藏在请求行中,请求行中编码是固定ISO8859-1
                解决方案: 通过String的构造方式来解决  例如:  文件名是filename--->  new String(filename.getByte("ISO8859-1"),"UTF-8");
        post方式
                post的方式参数藏在请求体中,将请求体中的编码改成UTF-8就行了
                request.setCharacherEnconding("UTF-8");
               
服务器向浏览器输出中文的时候乱码解决???
        设置响应头
                响应头的编码是固定的ISO-8859-1,所有我们需要给浏览器能看懂的东西
                if(header.contains("Firefox")){
                        filename = base64EncodeFileName(filename);
                }else{
                        filename = URLEncoder.encode(filename, "UTF-8");
                }
                public static String base64EncodeFileName(String fileName) {
                        BASE64Encoder base64Encoder = new BASE64Encoder();
                        try {
                                return "=?UTF-8?B?"
                                                + new String(base64Encoder.encode(fileName
                                                                .getBytes("UTF-8"))) + "?=";
                        } catch (UnsupportedEncodingException e) {
                                e.printStackTrace();
                                throw new RuntimeException(e);
                        }
                }
        设置响应体
                getOutputStream
                getWriter

                setContextType("text/html;charset=UTF-8")---> setHeader("Context-Type","text/html;charset=UTF-8 ")  setCharaterEnconding("UTF-8");


1 个回复

正序浏览
棒棒哒,很详细,很认真,继续加油噢!~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马