Tomcat 【软件的架构】 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动态资源目录结构】 2.5规范的: website |-----静态资源 |-----WEB-INF |-----web.xml:必须的 |-----classes:可选的 |-----lib:可选的 Tomcat的安装: 【下载Tomcat】 【了解Tomcat的目录结构】 * bin:tomcat的执行的文件. * conf:tomcat的配置文件. * lib:tomcat运行的需要的jar包. * logs:tomcat的运行的日志文件. * temp:tomcat产生临时文件存放的路径. * webapps:tomcat发布的web项目的路径. * work:tomcat运行JSP的时候,JSP翻译成Servlet的代码存放的路径. 发布一个WEB项目到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 * 配置<Context docBase="C:/website"/> * xxx作为虚拟路径的名称. Tomcat常见问题: 【没有配置JAVA_HOME引发tomcat一闪消失】 * 一定要配置JAVA_HOME环境变量. 【端口号冲突的问题】 * 一种:将占用端口的应用结束. * netstat -ano * 打开任务管理器结束: * 二种:修改自身应用的端口号. * tomcat/conf/server.xml Servlet 协议: * 什么是协议:规定双方需要遵守的规则. 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 :代表浏览器的类型. --- 文件下载:下载中文文件: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 :定时刷新/定时跳转. * 响应体:显示浏览器的页面的内容. 【使用ServletRequest接收参数】 * String getParameter(String name):用于接收一个名称对应一个值的数据. * String[] getParameterValues(String name):用于接收一个名称对应多个值的数据. * Map getParameterMap():用于接收表单中的所有的数据,Map的key是表单提交的参数名称,Map的value是提交参数的值. * Enumeration getParameterNames():用于获取表单中提交的所有的参数的名称. 【Servlet的实现的关系】 Servlet:接口 | GenericServlet:通用的Servlet | HttpServlet:HttpServlet * 编写一个类继承HttpServlet,重写doGet和doPost方法. * 配置 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配置方式共有三种: 完全路径匹配:以 / 开始 例如:/ServletDemo4,/aaa/ServletDemo5 , /aaa/bbb/ServletDemo6 目录匹配 :以 / 开始 需要以 * 结束.例如: /* ,/aaa/* ,/aaa/bbb/* 扩展名匹配 :不能以 / 开始 以 * 开始的. 例如: *.do , *.action ***** 错误的写法: /*.do 如果访问地址: ***** 完全路径匹配 > 目录匹配 > 扩展名匹配 // 解决向页面输出中文的乱码问题!!! response.setContentType("text/html;charset=UTF-8"); 开发中的路径的编写: 相对路径:都是需要找位置相对关系.不能以 / 开始的. * ./ 当前路径 ../上一级目录 * 使用相对路径访问: * 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); 例如:头信息: xxx:aaa * addHeader(“xxx”,”bbb”);-->xxx:aaa,bbb * setHeader(“xxx”,”bbb”);-->xxx:bbb 【ServletContext对象】 在servlet类中获得ServletContext对象 ***** ServletContext对象存取数据,存的数据都是有一定的作用的范围的.这种对象称为是域对象. * 用来存取数据: Void setAttribute(String name,Object object) * 用来向ServletContext中存入数据. Object getAttribute(String name) * 用来从ServletContext中获取数据. Void removeAttribute(String name) * 用来从ServletContext中移除数据. 总结: ServletConfig:了解.获得Servlet的配置信息. * String getServletName();获得Servlet在web.xml中配置的name的值. * String getInitParameter(String name);获得Servlet的初始化参数的. * Enumeration(枚举:是一个接口) getInitParameterNames();获得所有Servlet的初始化参数的名称. ServletContext:重要 作用域最大 ServletContext的作用: * 1.用来获得全局初始化参数. * 2.用来获得文件的MIME的类型. * 3.作为域对象存取数据. ServletContext是一个域对象. * 作用范围:整个web工程. * 创建:服务器启动的时候,tomcat服务器为每个web项目创建一个单独ServletContext对象. * 销毁:服务器关闭的时候,或者项目从服务器中移除的时候. * 4.用来读取web项目下的文件. 【使用ServletContext对象读取WEB项目下的文件】 * InputStream getResourceAsStream(String path); --- 根据提供路径读取文件返回一个文件的输入流. * String getRealPath(String path); --- 返回一个路径的磁盘绝对路径. 读取数据: getResourceAsStream: getRealPath: 【功能一:读取全局初始化参数】 【功能二:获得文件的MIME的类型】 * 获得文件的MIME的类型. 类加载器读取文件
|