1、一、Servlet1、Servlet 概述1.1 B/S 架构(了解)1)什么是 B/S 架构客户端使用浏览器,服务端使用 web 浏览器,客户端跟服务器之间使用 HTTP协议进行通讯。2)优点客户端不需要单独安装(因为使用浏览器);C/S 架构比较麻烦的是需要单独安装每个客户端,并且一旦客户端版本发生改变,就需要再次安装。开发相对简单;C/S 架构需要我们分别在,客户端和服务器端编写相应的通信处理模块和自定义协议,而 B/S 架构使用标准的 HTTP 协议(即不再需要自定义协议),而且浏览器与 Web 服务器已经包含了相应的通信模块了。1.2 什么是 ServletSun 公司制订的一种用来
2、扩展 Web 服务器功能的组件规范。1)扩展 web 服务器功能早期(2000 年左右)的 Web 服务器:apache 的 web server、微软的iis。只能够处理静态资源(即需要事先将 html 文件写好),不能够处理动态资源的请求(即需要依据请求参数然后进行计算,生成相应的页面)。为了让这些 web 服务器能够处理动态资源的请求,需要扩展他们的功能。早期使用的是 CGI 技术(Common Gateway Interface 通用网关接口),可以使用很多语言编写,如 perl,C/C+等来开发 CGI 程序。但是 CGI 程序有几个问题,比如开发比较复杂(因为需要程序员自己去分析请
3、求参数)、性能不佳(因为当 Web 服务器收到请求之后,会启动一个 CGI 进程来处理请求)、CGI 程序依赖平台(可移植性不好)。现在,可以使用 Servlet 来扩展。当浏览器将请求发送给 Web 服务器(比如:apcahe 的 web server),Web 服务器会向 Servlet 容器发送请求,Servlet 容器负责解析请求数据包。当然,也包括网络通讯相关的一些处理,然后将解析之后的数据交给 Servlet 来处理(Servlet 只需要关注具体的业务处理,不用关心网络通讯相关的问题)。注意事项:可以不使用服务器,而直接向 Servlet 容器发送请求,因为Servlet 容器里
4、面也有个通信模块,所以也可直接把 Servlet 容器当作简单的 Web 服务器来使用。2)组件规范组件:是符合一定规范,并且实现部分功能的可以单独部署的软件模块。组建必须要部署到容器里面才能运行。容器:也是符合一定规范,并且提供组件的运行环境的程序。注意事项:单个的组件、单个的容器都是没意义的,都不能单独运行,需要放在一起才能运行。1.3 什么是 TomcatTomcat 本身是一个 Servlet 容器,即可以提供 Servlet 运行环境的一个程序,但是 Tomcat 还提供了 Web 服务器所具有的所有功能,所以我们也称 Tomcat 是一个 Web 服务器。Tomcat 的默认端口是
5、 8080。1)安装 Tomcat(www.apache.org 下载)Linux 系统下安装和配置的步骤step1:解压到/home/soft01 下step2:配置环境变量cd /home/soft01vi .bash_profileJAVA_HOME:jdk 的主目录CATALINA_HOME:tomcat 的主目录PATH:CATALINA_HOME/binstep3:启动 Tomcatcd /home/soft01/tomcat 主目录/binsh startup.sh 或者 sh catalina.sh run接下来,可以打开浏览器,输入 http:/localhost:8080,
6、验证是否配置成功。step4:关闭 Tomcatcd /home/soft01/tomcat 主目录/binsh shutdown.shWindows 系统下安装和配置的步骤step1:解压到某个盘下step2:配置环境变量JAVA_HOME(JDK 的主目录) 必须配置CATALINA_HOME(Tomcat 的主目录)可以不配置PATH(Tomcat 的 bin 目录)可以不配置“我的电脑” 右键“属性” ,打开“系统属性”的“高级”选项卡,找到“环境变量。新建“用户变量”。新建 JAVA_HOME。注意事项:新建系统变量或新建用户变量均可,建议新建用户变量。新建 CATALINA_HOM
7、E (可以不配置)。新建 PATH(可以不配置)。注意事项:如果环境变量中已经有 PATH,修改该 PATH 即可,使用“;”分号作分隔,如下所示:PATH C:Program FilesJavajdk1.6.0_06bin ;D:apache-tomcat-5.5.23binWindows 操作系统下以“;”分号为分隔符;linux 系统下以“:”冒号为分隔符。step3:启动 Tomcat进入启动 Tomcat 的 bin 目录下,双击 “startup.bat”。接下来,可以打开浏览器,输入 http:/localhost:8080,验证是否配置成功。step4:关闭 Tomcat进入启
8、动 Tomcat 的 bin 目录下,双击 “shutdown.bat”。2)Tomcat 目录结构简介bin 目录:存放启动和关闭服务器的一些脚本(命令)。common 目录:共享( 部署在该服务器上的所有程序都可以使用)的一些 jar 包。conf 目录:存放服务器的一些配置文件。webapps 目录:部署目录。work 目录:服务器运行时,生成的一些临时文件。1.4 如何写一个 Servlet(不使用开发工具)step1:先写一个 Java 类,实现 Servlet 接口或者继承 HttpServlet 抽象类。public class HelloWorldServlet extends
9、 HttpServlet /Tomcat 会自动调用 service,自己不用再去写方法调用了,所以必须把名字写对!public void service(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException/异常必须写两个,不能写成 Exception,也不能再多个异常/设置一个消息头 content-type,告诉浏览器返回的数据类型是一个 html 文档,以及编码格式。此外,还可以告诉服务器,在使用 out 输出时,使用指定的编码格式进行编码response
10、.setContentType(“text/html;charset=utf-8“);/通过响应对象,获得一个输出流PrintWriter out=response.getWriter();/调用流的方法进行输出,其实质是将处理结果写到了 response 对象上out.println(“Hello World“);/* out.close()不调用也可以,因为 Servlet 方法执行完毕,容器会自动调用out.close 方法 */out.close(); step2:执行编译操作:javac -d . HelloWorldServlet.java但是会报错,找不到某些类!其中 -d .
11、代表把编译后的文件放在当前文件夹下。把 Tomcat 安装目录中 common 中 lib 中的 servlet-api.jar 和刚编写类放一起(是编译时需要用的 jar)。再次编译:javac -cp servlet-api.jar -d . HelloWorldServlet.java,其中 -cp servlet-api.jar 表示告诉 Java 编译器去哪里找需要的 class 文件(到 servlet-api.jar的 jar 包中找)。step3:打包,即创建一个具有如下结构的文件夹:appname(文件夹名起应用名)|WEB-INF(必须大写)classes(文件夹,放 .c
12、lass 文件)lib(文件夹,放.jar 文件,可没有)web.xml(部署描述文件 url-pattern )将编译好的.class 文件放入 classes 文件夹中(如有包,则一起放入)。web.xml 文件内容:xmlns=“http:/ xmlns:xsi=“http:/www.w3.org/2001/XMLSchema-instance“ xsi:schemaLocation=“http:/ http:/ step3 创建的文件夹拷贝到 Servlet 容器特定的文件夹下面(拷贝到 Tomcat 的 webapps 目录下)。注意事项:也可以将 step3 创建的文件夹使用 ja
13、r 命令进行压缩,生成.war 为后缀的文件,然后拷贝。step5:启动 Servlet 容器,访问 Servlet。访问格式:http:/ip:port/appname/url-pattern比如在浏览器地址栏输入:http:/localhost:8080/web01/hello1.5 使用 MyEclipse 开发 Servletstep1:配置 MyEclipse,使得 MyEclipse 能够管理 Tomcat。1)点击工具栏上的“Run/Stop/Restart MyEclipse Servers”图标旁边的下拉箭头,选择“Configure Server” 。2)在弹出的对话框“P
14、references”中展开“MyEclipse”-“Servers”-“Tomcat”-“Tomcat5.X”注意事项:选择你目前电脑上 Tomcat 的版本,此处以 Tomcat5 为例。3)将 Tomat server 选项置为“Enable”(默认为“Disable”)。4)点击“Tomcat home directory”之后的“Browse”按钮,选择 Tomcat 主目录,确定,然后“Tomcat base directory”和“Tomcat temp directory”自动生成,点击“OK”。注意事项:两项可改可不改的:Tomcat 下的 JDK-“Tomcat JDK n
15、ame”是自己已安装的 JDK(Tomcat 也是 java 写的也得依赖 JDK)。建议 Tomcat 下的 Launch-“Tomcat launch mode”设置为 Run model,默认为 Debug mode 而该模式在有些时候会显示不正常。5)回到工具栏上的“Run/Stop/Restart MyEclipse Servers”图标旁边的下拉箭头,选择 Tomcat 5.x,点击“Start”。6)当在控制台显示“Server startup in XXX ms“,则 Tomcat 启动成功。注意事项:如果出现“Address already in use:JVM_Bind”异
16、常,则说明已经启动了一个 Tomcat。解决办法:运行 shutdown 命令,关闭之前开启的 Tomcat。step2:建立一个 Web Project(Web 工程),填写“Project name”,JDK 最好选5.0,其他选项默认,点击“Finish”。step3:编写 Java 类和 web.xml 文件。step4:部署项目到 Tomcat 服务器。1)点击工具栏“Deploy MyEclipse J2EE Project to Server”按钮。2)弹出对话框“Project Deployments”,点击“Add”按钮。3)弹出“New Deployment”对话框,选择“
17、Tomcat 5.x”,点击“Finish”,最后点击“OK“。注意事项:在对话框“Project Deployments”对话框有 4 个按钮,常用的为“Add”按钮:在 Tomcat 服务器上增加新应用。“Remove”按钮:删除 Tomcat 服务器上的新应用。“Redeploy”按钮:重新部署该应用,一般每次修改后都需要重新部署一下。step5:访问 Tomcat 服务器上的 Servlet 实例。访问格式:http:/ip:port/appname/url-pattern比如在浏览器地址栏输入:http:/localhost:8080/web01/hello注意事项:在 IDE 工具
18、(集成开发环境)中启动 Tomcat 部署项目后,不需要重新启动服务器,系统会自动部署。IDE 工具简化了 Servlet 的开发步骤:第 1 步 写一个 java 类 手动第 2 步 编译 自动第 3 步 打包 自动第 4 步 部署 不用手动拷贝,点一下第 5 步 启动服务器,访问 servlet 手动默认情况下,应用名和工程名相同。工程-属性-MyEclipse-Web-Web Context 可修改部署后的应用名。新建 Web 工程时也可以手动在 Context root RUL 中更改应用名。1.6 Servlet 是如何运行的比如,在浏览器地址栏输入:http:/ip:port/we
19、b01/hello(web01/hello 为请求资源路径)。step1:浏览器依据 ip 和 port 建立与 Servlet 容器之间的连接。step2:浏览器将请求数据打包(即按照 http 协议的要求,将相关数据封装成一个数据包,一般称之为请求数据包)并发送给 Servlet 容器。step3:Servlet 容器解析请求数据包,并将解析之后得到的数据放到已创建的request 对象上,同时,容器也已经创建好了一个 response 对象。step4:Servlet 容器依据请求资源路径(即/web01/hello)找到 Servlet 的配置,然后创建 Servlet 对象(根据 xml 文件里配置的类而创建)。