学习整理了使用Tomcat承载Servlet的一些东西,略作整理,避免后续重头再来。
一、什么是Servlet ?
Servlet是Java在服务器端的程序,通俗的讲就是:Servlet通过web服务器响应客户端的请求 -- 接受请求信息,处理后返回信息。
1.Servlet如何工作 ?
第一个客户端向web服务器发出访问请求时,当然请求带有某种“标签”(其实就是url中ip:port后面的那部分),标识需要web服务器中的某个Servlet做出响应;
web服务器根据客户端请求时带的“标签”,找到对应的Servlet;
创建一个Servlet实例,进入此Servlet的生命周期;
首先,自动自行其中的init()方法做初始化工作;
然后,调用其中的service(request,response)方法;
最后,通过response返回给web服务器客户端请求处理后的结果,web服务器再返回给客户端;
2.Servlet的生命周期
首先,第一个被创建时,init()被执行,Servlet生命周期开始;
然后,每次有客户端请求就执行一次service(request,response);
最后,有三种方式会使得当前Servlet执行destroy() -- reload web服务器/关闭web服务器/关机;
二、什么是Tomcat?
一句话,把上面介绍Servlet中的”web服务器“都换成Tomcat再去理解一遍。
事实上,Tomcat不仅仅是充当web服务器的角色,它还有Servlet容器的作用 -- 负责Servlet的生命周期。
三、使用Tomcat装载Servlet
1.下载安装Tomcat
下载可以直接去Tomcat官网去下载 -- http://tomcat.apache.org/; 左边有Download选项,进入其中选择对应的Tomcat版本,有windows/linux,32bits/64bits之分;
笔者下载的是《apache-tomcat-6.0.41-windows-x64.zip》;
安装的话更简单,直接选择一个目录解压缩即可;其实笔者这里默认各位已经安装了JDK,如果JDK都没装过,这篇文章还是不要看了,没用的;
2.配置Tomcat
个人分两个部分:
a.配置环境变量--将Tomcat安装目录,配置为TOMCAT_HOME(D:\Software\tomcat-6.0.41);笔者默认各位已经配置了JAVA_HOME;
b.配置Tomcat的管理用户名密码,打开tomcat安装目录--以笔者为例D:\Software\tomcat-6.0.41\conf--找到tomcat-users.xml,在<tomcat-users>...</tomcat-users>中间配置类似如下信息 -- <user roles="manager" password="passwd" username="username"/> ,则你的tomcat管理台登录用户名为username,密码为passwd;
3.编写Servlet程序
这一段其实是比较重要的,包含的东西多一些,但是理解起来应该不困难,不需要智商高的人,一般智商的都能够理解;
有三种方法来实现Servlet -- 实现javax.servlet.Servlet接口/继承javax.servlet.GenericServlet类/继承javax.servlet.http.HttpServlet类;
下面附一个向客户端返回"Hello,world!"的案例(使用继承javax.servlet.http.HttpServlet类的方法) -->
package com.first;
import javax.servlet.http.*;
import java.io.*;
public class HelloWorld extends HttpServlet
{
//只要初始化无参数的init()即可,有参数的init(config)会调用init()
//只在第一次Servlet实例被创建时执行一次,后续客户端访问不会被重复执行
public void init() throws Exception {}
//暂时不做详解
public Servletconfig getServletconfig() {return null;}
//每次用户访问都会调用一次
public void service(ServletRequest req, ServletResponse response)
{
//此处可能对req做某种处理,此例中没有编写这些逻辑,仅做客户端与服务器端通讯通道的模拟
//code......
//需要在返回response值中获取一个pw,才能给客户端发信息
PrintWriter pw = response.getWriter();
//实际返回给客户端的内容
pw.println("Hello,world!");
}
//暂时不做详解
public String getServletInfo() {return "";}
//三种方式会被执行-->1.reload tomcat; 2.shutdown tomcat; 3. shundown system;
public void destroy() {System.out.println("Destroy servlet!");}
}
4.部署Servlet程序
a.在tomcat安装目录下找到webapps目录,后续所有的应用程序(在这里指的是servlet程序)都会在此目录下进行相应部署;
b.在webapps下创建一个目录,名字任意取,避免中文即可,这个名字会是日后客户端访问该服务器应用程序时URL的重要组成部分;笔者取名MyWebsite ;
c.在MyWebsite下,新建目录WEB-INF(不可任意取名,就是这个名字,擦干泪不要问为什么);
d.在WEB-INF目录下,新建两个目录classes和lib(理由同上),从上层ROOT目录下,拷贝一个web.xml过来;
e.编辑web.xml,找到其中的<servlet></servlet>对和</servlet-mapping></servlet-mapping>对进行编辑,见笔者的例子:
<!--JSPC servlet mapping start-->
<servlet>
<!--任意的名称,用于此servlet在tomcat登记使用,但是要与下面的mapping中servlet-name对应起来-->
<servlet-name>hello</servlet-name>
<!--com.first是Servlet的包名,Hello是Servlet的类名-->
<servlet-class>com.first.Hello</servlet-class>
</servlet>
<servlet-mapping>
<!--同上-->
<servlet-name>hello</servlet-name>
<!--url即客户端浏览器访问此servlet需要输入的url,当然前面必须要其他必要的信息:IP:port/MyWebsite,任意定义-->
<url-pattern>/hello</url-pattern>
</servlet-mapping>
<!--JSPC servlet mapping end-->
5.启动Tomcat
进入tomcat安装目录下的bin目录,找到startup.bat(linux环境则是startup.sh),双击启动;
6.执行客户端访问
本机打开浏览器,输入http://127.0.0.1:8080/MyWebsite/hello , 回车,页面就会显示“Hello,world!”了. 大功告成!!!
总结:
a.tomcat跟jdk不知道什么时候会出现什么版本兼容问题,所以建议还是使用主流的版本,我测试通过的是tomcat6.x和jdk6;
b.对于测试用浏览器,开始使用chrom浏览器,报莫名其妙的错误,改用IE一点儿事没有,也着实郁闷一番;