Tomcat的安装与第一个servlet程序的部署

     使用servlet首先要配置tomcat环境,tomcat这是一个servlet运行的容器,简单来说,由于编译好的servlet程序由于里面没有主方法,就必须有一个中间件响应客户端请求然后调用servlet,这个中间件就是tomcat容器,而且是一个必不可少的容器,当然还有很多其他的容器,但是运用最广的还是tomcat。

    tomcat的下载安装与安装非常的简单,这里就不再赘述,需要注意的时候,必须要配置一个环境变量:JAVA_HOME,然后改环境变量的值指向JDK的安装路径即可。

    下面来说说tomcat里的各个文件夹的作用于用途:

    1、bin目录下主要存放的是运行tomcat所必须的处理文件,如startup.bat、shutdonw.bat等等;

    2、conf目录下主要存放的是配置tomcat的通用配置文件主要是xml格式,下面说说这几个配置文件的作用

        server.xml文件中存放的是tomcat提供Web服务的端口,我们可以在<Connector prot="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectoPort="8443">这里可以将8080改成任何你想的端口;

        tomcat-user.xml这个文件用来配置tomcat的用户登录信息,context.xml文件的<Context>改成<Context reloadable="true">,这样我们在配置王tomcat之后可以无需重新启动tomcat就可以将配置加载,必须要说的是,这并不是总是有效的,有时候还是会出现需要重新启动tomcat的情况。

    3、lib目录下存放的是一些运行tomcat所必须的jar包

    4、temp目录用来存放临时文件

    5、webapps目录是最重要的目录,这里面存放的是一些webapp的根目录,你可以在webapps下新建自己的webapp文件夹,然后部署自己的webapp,具体的配置方法,下面在介绍。

    6、work目录保Web应用运行过程中,编译生成的class文件。

    7、logs目录用来保存tomcat每次运行后产生的日志。

    部署了tomcat环境,并且了解了tomcat的结构之后,下面我们开始部署自己的第一个webapp,部署webapp有两种方式,一种是图形界面部署,一种是直接在webapps目录下新建文件进行部署,这里我们采用了第二种,而且也推荐采用第二种,这种方式更加简洁灵活和方便。下面就采用第二种方式来部署一个超级简单的webapp。

    1、在webapps目录下新建一个自己webapp的根目录my,然后在my目录下新建一个文件夹"WEB-INF"注意这里的大小写,必须一模一样,在my目录下,我们新建自己的主页index.html,这个主页中我们先新建一个非常简单的表单,其内容如下:

	<form action="/my/HelloWorldServlet" method="get">
		<input type="text" name="test">
		<input type="submit" value="提交">
	</form>

对于form表单中提交的“my/HttpTest”暂时不必理会,其中提交方式为“get”


    2、在WEB-INF目录下我们暂时新建两个文件文件,classes和lib,同时新建一个web.xml的空文件, 这里同样也要严格注意大小写,classes目录用来存放我们编译好的额servlet文件,lib用来存放运行servlet所需要的一些jar包,而web.xml文件中的内容为了保险起见,我们直接从webapps\examples\WEB-INF\web.xml文件中直接拷贝过来,拷贝过来的内容中,我们仅仅保留“头”和<web-app...>这一对标签,其他的先全部删除。

    3、编写我们的第一个servlet小程序,这里servlet做一个说明,其实它也是一个java小程序,不过与普通的java程序不同的有两点,一是它没有主方法,由tomcat来调用,二是它必须继承自HttpServlet这个类,表示它是一个servlet程序。具体的写法如下:

import java.io.IOException;
import java.io.PrintWriter;


import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;




public class HelloWorldServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;


    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp)
        throws ServletException, IOException {
        //如果要想显示中文,则即必须在获取流之前,先添加如下的代码,设置好解析用的字符集
        resp.setContentType("text/html;charset=gbk");


        PrintWriter out = resp.getWriter();


        //这个字符串里的内容就是在浏览器上显示的内容
        String str = "<html><title></title><body>你好Hello World Servlet!!!</body></html>";
        //将流中的内容写出去,
        out.println(str);
        out.flush();
        out.close();
        System.out.println("doget...");
    }


    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp)
        throws ServletException, IOException {
        PrintWriter out = resp.getWriter();
        String str = "<html><title></title><body>你好Hello World Servlet!!!</body></html>";
        out.println(str);
        out.flush();
        out.close();
        System.out.println("dopost...");
    }
}
将上述java程序编译之后的class文件放入 webapps\my\WEB-INF\classes目录下,注意这里我们没有存放在包下,所以直接放入classes目录下即可,如果有包,则需要将整个包拷贝过来。

    4、上述所有的工作做完之后,还需要最关键的一步配置,将我们配置的servlet的信息写入配置文件web.xml中,这里我们打开my\WEB-INF\web.xml文件,在这个文件中我们先前已经修改过一次,这次我们需要在<web-app>元素中添加子元素,完整的web.xml文件的内容如下:

<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
                      http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
  version="3.0"
  metadata-complete="true">

<servlet>
    <servlet-name>my</servlet-name>
    <servlet-class>HelloWorldServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>my</servlet-name>
    <url-pattern>/HelloWorldServlet</url-pattern>
</servlet-mapping>

</web-app>
其中<servlet>元素和<servlet-mapping>元素是成对出现的,<servlet>存放servlet的名称和类文件的名称及位置(如果有包,则必须带上包名),<servlet-mapping>则是存放servlet名称和响应servlet所必须配置的格式,其中“/”代表的是webapp的根目录,也就是说我们只有在浏览器中输入 “http://127.0.0.1:8080/my/HelloWorldServlet”时,servlet才会有响应。这个时候我们回头看看第一步中的form表单的写法:

<form action="/my/HelloWorldServlet" method="get">
这里的表单提交后跳转的页面的写法,也必须要符合我们servlet的响应规则,有一点不同的是,这里不能直接写/HelloWorldServlet,而是必须带上my文件,或者我们直接写成

<form action="http://127.0.0.1:8080/my/HelloWorldServlet" method="get">
也是可以的。

    到此为止,一个简单的servlet程序就部署完成了,下面来进行验证。

在浏览器中输入:http://localhost:8080/my/index.html显示如下的页面,



然后我们点击提交按钮,如果出现如下的页面则说明部署成功,如果出现404错误,则表明部署失败


    最后,我总结了一下部署过程中容易出错的地方:

        1、xml文件没有配置正确,注意xml文件的格式要求是非常严格的,这一点不同于html,所以在配置的时候,要格外注意,特别是  <url-pattern>/HelloWorldServlet</url-pattern>中的斜线,一定不能掉,所以推荐直接从examples下的web.xml文件中拷贝文件并且修改,而不是手打,还有如果class文件部署在包下,则一定要将完整的包名加上去,如com.xn.HelloWorldServlet。

        2、index.html文件中的跳转地址没有写正确,绝对路径或者相对路径都行,但一定要正确。

        3、注意清理缓存。

        4、如果在web.xml文件中一定要注意,一个<servlet.../>元素和<servlet-map.../>元素中的<servlet-name.../>子元素的值一定要相同,允许一个<servlet>对应一个或多个<servlet-map>,但是<servlet-map>必须有一个且只能有一个<servlet>





评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值