1.运行与停止
bin/目录下的startup.sh用于启动服务。其他XXXX.sh 见名知意。
图1-1 tomcat默认主页
2.指定jvm参数启动tomcat
问:有时web应用依赖的库较多,加载的类也多,它们会占用永久代空间,容易出现 tomcat permSpace outOfMemory 异常,怎么解决?
答:linux下环境变量相关知识见: http://blog.csdn.net/chuchus/article/details/42835897。
startup.sh会调用catalina.sh,而后者中会用JAVA_OPTS这个环境变量,在280行左右(tomcat version:7),见图1-2
图2-1 tomcat启动脚本中涉及java_OPTS环境变量的部分
这个变量默认是空的,需要我们定。可以使用export 命令引入"-XX:MaxPermSize=256m "参数。
具体命令为: export JAVA_OPTS=“-XX:MaxPermSize=256m”
注意等号左右不能有空格。成功后可以验证,见图2-2
图2-2 设置JVM参数启动tomcat
3.tomcat配置文件
conf/server.xml
该配置文件的第68行配置了服务端口,Tomcat的默认服务端口是8080,可以修改。如果需要让tomcat在多个端口同时提供服务,只需要复制<service>标签,并修改端口等相应参数。
阿里云服务器centos 7直接改为80也是可以的,并不需要调整防火墙。
conf/tomcat-users.xml
指定管理员角色与用户名密码,用于可视化远端管理你的webApp。例子:
<role rolename="manager-gui"/> <user username="tomcatUser" password="tomcatPsd" roles="manager-gui"/>
地址为 http://host/index.jsp
图2 可视化部署应用
web应用配置文件
webapp/YOURNANE/WEB-INF/web.xml
<welcome-file-list>
此标签用来配置首页。如
<welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>index.jsp</welcome-file> </welcome-file-list>
上面的配置信息指定该web应用的首页依次是index.html、index.jsp这几个网页。
<context-param>
这些参数在整个应用中被共享
<context-param> <param-name>context/param</param-name> <param-value>avalible during application</param-value> </context-param>
<servlet>
用来配置服务端的程序,可以配置多个。
<servlet> <servlet-name>MainServlet</servlet-name> <servlet-class>com.wes.controller.MainServlet</servlet-class> <init-param> //写在配置中的一些参数,仅这个servlet可以访问 <param-name>param1</param-name> <param-value>avalible in servlet init()</param-value> </init-param> <load-on-startup>1</load-on-startup> //启动次序,1表示最先 </servlet>
读取context-param与servlet-param的代码
import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; public class MainServlet extends HttpServlet{ public void init() throws ServletException ...{ System.out.println("下面参数param1是在servlet中存放的"); System.out.println(this.getInitParameter("param1")); System.out.println("下面的参数是存放在servletcontext中的"); System.out.println(getServletContext().getInitParameter("contextParam123")); } }
<filter>
用来过滤,接受请求时过滤后送给servlet,将servlet返回结果再过滤一次返回给用户。
<filter> <filter-name>WebServiceFilter</filter-name> <filter-class>com.likeyichu.webservice.filter.WebServiceFilter</filter-class> </filter> <filter-mapping> <filter-name>WebServiceFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
不同标签之间的次序
有时eclipse会对web.xml文件报错,如图:
图3 web.xml中的标签次序
很可能的原因就是标签之间的次序不对,按照它提示的次序放标签就可以了。
最简单的网页部署
在 webapps\下放一个文件夹A,里面有B.html 那么重新启动tomcat后,输入 http://ip:port/A/B.html即可访问。
网页放到\webapps\ROOT\目录下,效果就是http://ip:port/xx.html这种URL路径。
换html网页时不需要重启Tomcat服务。
Jsp/Servlet部署
假设你的webapp名称为qing,那么部署目录结构见下图:
图4 web应用目录结构
若干个jsp文件放在qing\目录下即可。
jsp文件用到了其他java依赖类,需要放在lib\或classes\目录中。
classes目录下放的是后缀为.class的文件,类com.likeyichu.A的class文件就应该在classes\com\likeyichu\A.class位置。
lib目录也是用来存放用到的java类的,要放在这里的是.jar文件。
对于javaWeb而言,WEB-INF是一个特殊的文件夹,Web容器会包含该文件夹下的内容,但客户端浏览器无法访问WEB-INF路径下的任何内容。
web.xml位于WEB-INF文件夹内,