#tomcat环境变量配置
CATALINA_HOME与CATALINA_BASE区别:
CATALINA_HOME(安装目录):多个tomcat实例公用信息的位置,就是bin和lib的父目录
CATALINA_BASE(工作目录):指向每个Tomcat实例目录私有信息的位置,就是conf、logs、temp、webapps和work的父目录
环境变量path
%JAVA_HOME%\bin
%CATALINA_HOME%\lib
%CATALINA_HOME%\bin
打包:
//jar
jar -cvf test.jar -c test
//war
war:jar -cvf test.war -c test
#Tomcat配置文件
##context.xml与JNDI
如果应用配置在高性能的应用服务器(如WebLogic或Websphere等)上,我们可能更希望使用应用服务器本身提供的数据源,对于tomcat服务器配置JNDI,可以配置在context文件中,context文件的配置及作用范围如下:
<?xml version="1.0" encoding="UTF-8"?>
<Context>
<!--oracle数据源-->
<Resource
name="intedb_oracle"
auth="Container"
type="javax.sql.DataSource"
driverClassName="oracle.jdbc.OracleDriver"
url="jdbc:oracle:thin:@www.yitong.com.cn:19101:XE"
username="YTTRAIN"
password="YTTRAIN"
maxActive="20"
maxIdle="10"
maxWait="10000" />
<!--mysql数据源-->
<Resource
name="intedb_mysql"
auth="Container"
type="javax.sql.DataSource"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/test"
username="root"
password="student"
maxActive="20"
maxIdle="10"
maxWait="10000" />
</Context>
spring中注入JNDI数据源配置
<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName">
<value>java:comp/env/intedb_oracle</value>
</property>
</bean>
context.xml的作用范围:
- $CATALINA_BASE/conf/context.xml(tomcat server级别):所有webApp共享
- $CATALINA_BASE/conf/Catalina/${hostname}/context.xml(host级别):某个主机上的所有webapp共享
- $CATALINA_BASE/conf/Catalina/ h o s t n a m e / {hostname}/ hostname/{webAppName}.xml(web App级别):某个主机下的某个Web使用
- {WebApp}/META-INF/context.xml(Web App级别):当前App使用,这是开发者自己在项目META-INF下添加
上述的${webAppName}.xml虚拟路径可以配置指向应用的实际目录(有时候我们的项目不放在tomcat的webapps目录下,这时候就需要一个虚拟路径来指向应用的实际目录)
helloword.xml
<Context
path="/helloword" //上下文路径,可以省略,因为文件名就是上下文路径
docBase="D:/project/helloword" //项目实际目录
reloadable="true"> //项目classes目录下的class文件修改时tomcat服务器是否会重新加载WEB应用
<Resource
name="intedb_oracle"
auth="Container"
type="javax.sql.DataSource"
driverClassName="oracle.jdbc.OracleDriver"
url="jdbc:oracle:thin:@www.yitong.com.cn:19101:XE"
username="YTTRAIN"
password="YTTRAIN"
maxActive="20"
maxIdle="10"
maxWait="10000" />
</Context>
##web.xml
//当没有对应Servlet映射时交给该Servlet,用于处理所有静态资源
<servlet>
<servlet-name>default</servlet-name>
<servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>0</param-value>
</init-param>
<init-param>
<!--没有URL匹配时是否展示目录-->
<param-name>listings</param-name>
<param-value>false</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<!-- The mapping for the default servlet -->
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<!--处理所有JSP请求-->
<servlet>
<servlet-name>jsp</servlet-name>
<servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
<init-param>
<param-name>fork</param-name>
<param-value>false</param-value>
</init-param>
<init-param>
<param-name>xpoweredBy</param-name>
<param-value>false</param-value>
</init-param>
<load-on-startup>3</load-on-startup>
</servlet>
<!-- The mappings for the JSP servlet -->
<servlet-mapping>
<servlet-name>jsp</servlet-name>
<url-pattern>*.jsp</url-pattern>
<url-pattern>*.jspx</url-pattern>
</servlet-mapping>
tomcat目录下conf/web.xml会和Web项目中web.xml的配置合并。DefaultServlet映射所有请求,当请求不会被映射到其他Servlet时会使用DefaultServlet,这也是为什么我们请求一个静态资源(js、css、html等)时可以访问;JspServlet用于处理jsp或jspx为后缀的请求,通过对JSP页面进行编译和执行Servlet来返回一个动态页面,这也是Tomcat支持JSP页面的机制。
当我们使用SpringMVC时,如果将DispatcherServlet的映射请求也使用“/”或“/*”,则会覆盖DefaultServlet的配置,而使静态资源无法访问或加载
- / : 会匹配到/login这样的路径型url,不会匹配到模式为*.jsp这样的后缀型url(静态资源js、css、html等还是会被匹配)
- /*:会匹配所有url:路径型的和后缀型的url(包括/login,*.jsp,*.js和*.html等)
可以使用以下几种方式来处理:
方式一:
<!--DefaultServlet使用更精准的url匹配来替代DispatcherServlet处理-->
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.js</url-pattern>
<url-pattern>*.html</url-pattern>
<url-pattern>*.css</url-pattern>
<url-pattern>*.png</url-pattern>
</servlet-mapping>
方式二:
<!--通过Spring的<mvc:resource>来配置资源映射-->
<mvc:resources mapping="/scripts/**" location="/scripts/"/>
<mvc:resources mapping="*.html" location="/"/>
方式三(推荐):
<!--默认的default-servlet-name是default,如果tomcat中改变其名称需要指定-->
<mvc:default-servlet-handler default-servlet-name="default"/>
##server.xml
参考:https://blog.csdn.net/qq_29028175/article/details/53363738
##tomcat-user.xml
参考:http://www.365mini.com/page/tomcat-manager-user-configuration.htm
#JSP
##指令
##脚本
##标准动作元素
##内置对象