主要内容
记录下第一次使用tomcat的踩坑过程,要达到的效果为能够在tomcat上运行一个war包,这个包里包含一个servlet
前置
知道tomcat是一个容器,然后采用多线程运行servlet
maven配置
由于servlet不是在jdk标准包里,所以首先要在pom.xml里面添加servlet的包依赖,版本自己选:
1 | xml复制代码 <dependencies> |
一定要注意的是,scope填privided, 表示在最后打包的时候不将这个依赖放进去,因为在运行的时候都是使用tomcat的自带包。
然后将打包名称改成hello,这样最后会生成hello.war:
1 | xml复制代码 <build> |
maven打包默认是jar文件,将其修改成war:
1 | xml复制代码 <groupId>groupid</groupId> |
前三项都是自己设定的项目信息,只要在最后添加packaging一项就行,然后修改项目的结构,需要在src文件夹建立webapp这个包,其他两项java,resources都是已经存在的。最重要的是web.xml这个文件,这个之后再讲。
1 | shell复制代码├─java |
编写servlet
1 | java复制代码package test; |
配置web.xml
1 | xml复制代码<?xml version="1.0" encoding="UTF-8"?> |
前面两项的意思我也不太懂,不过我们一般只需要关注web-app这个标签下的内容,servlet-name可以自己随便指定,指定之后下面的配置都用这个名称来指代目标servlet,上面这个配置是用Hello指代test.HelloWorld这个实现了Servlet接口的类,注意包名带上。下面有一项url-pattern,表示你想让用户使用什么样的地址可以访问到这个servlet。
运行
上面都写好了之后,maven命令clean,compile, package三连,生成了一个hello.war,将这个文件放在tomcat的webapps目录下,然后进入到tomcat的bin文件夹里面,cmd输入
1 | shell复制代码startup |
然后浏览器输入localhost:8080/hello/Hello就可以看到servlet返回的信息了,其中hello是war文件的名称,后面的/Hello就是url-pattern的值,当然也可以设置成通配符,让其他url也能够连接到这个servlet
可能出现的问题
乱码
tomcat的输出按照目标系统语言,所以有可能乱码,解决方法,将tomcat下conf/logging.properties中java.util.logging.ConsoleHandler.encoding = UTF-8改成= GBK
端口被占用
这时候要修改tomcat的端口,将conf/server.xml里的Connector port=”8080”修改成想要的端口即可。
总结
踩了一天坑
本文转载自: 掘金