时隔一个月没更新博客的我来更新啦~
目录
一、什么是TomCat?
二、目录结构及作用
1.bin目录(存放命令的)
① setclasspath
② catalina
③ startup
④ shutdomn
2.conf目录(存放配置文件)
① server.xml
② web.xml
③ catalina.policy
④ catalina.properties
⑤ context.xml
⑥ tomcat-users.xml
⑦ tomcat-users.xsd
3.lib目录(存放jar包)
4.logs目录
5.temp目录
6.webapps目录
7.work目录
8.其他文件
三、session持久化示例
1.主要配置文件
2.示例:
一、什么是TomCat?
· Tomcat是Apache软件基金会(Apache Software Foundation)的Jakarta项目中的一个核心项目,由Apache、Sun和其他一些公司及个人共同开发而成。
· Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。
· Tomcat和IIS等Web服务器一样,具有处理HTML页面的功能,另外它还是一个Servlet和JSP容器,独立的Servlet容器是Tomcat的默认模式。不过,Tomcat处理静态HTML的能力不如Apache服务器。Tomcat为我们所需要发布的应用程序提供整个的生存环境。
· 除Tomcat外,web应用服务器还有jetty(比Tomcat更小巧,更适合用于嵌入式环境里面),weblogic,websphere(weblogic,websphere很大,很专业,但是需要付费),undertow等。
注意:有时我们会将Tomcat叫做web服务器,实际上tomcat更准确的叫法是应用服务器。 web服务器主要是指专门来处理html,css,图片等静态资源的服务器,必要apache服务器。
不知道Tomcat怎么下载的可以查看以下博客
JavaWeb环境的搭建_筱X的博客-CSDN博客_javaweb环境搭建支持web开发的eclipse的下载,jdk的下载及配置,服务器的下载https://blog.csdn.net/weixin_67235801/article/details/123740128?spm=1001.2014.3001.5501
二、目录结构及作用 1.bin目录(存放命令的)bin目录主要要来存放tomcat命令的目录,里面主要有两种类型的文件,一种是以.bat为扩展名的文件,一类是以.sh为扩展名的文件。其中.bat的文件是在windows平台的命令,.sh的文件是在linux平台的文件。
下面介绍一下该目录下的几个主要文件:
① setclasspathsetclasspath用于设置Java环境变量,如JAVA_HOME,JRE_HOME等
Java环境变量需要设置成JAVA_HOME,因为很多程序都是用这个变量去读取的。
② catalinacatalina 该文件也是用来配置环境的,如CATALINA_HOME,及tomcat的安装路径,我们可以在此目录设置Java的启动参数,
③ startup如最大最小堆空间大小:
JAVA_OPTS="$JAVA_OPTS -Xms256m -Xmx512m -Xmn128m -XX:PermSize=128m -XX:MaxPermSize=512m"
startup 用来给启动tomcat,当双击startup后,tomcat启动,读取catalina脚本配置启动环境,catalina又会调用setclasspath脚本,用来设置jdk需要的环境变量,如果系统没有定义JAVA_HOME环境变量,则在会报错退出。
④ shutdomnshutdomn用于停止tomcat服务
2.conf目录(存放配置文件)① server.xml该目录主要用来存放tomcat的配置文件, 重要的配置文件如下:
用于配置端口号,虚拟主机,默认加载项目,请求编码等等,是tomcat中最常使用的配置文件
② web.xml为所有的部署在该tomcat下的web应用通用的配置,与每个web应用的web.xml配合使用。例如:
③ catalina.policyDefaultServlet(默认配置),就算系统中没有配置任何的servlet,tomcat依然可以处理html,js,css等静态资源的请求,就是这个servelt起的作用;
JspServlet,当请求jsp页面时,则会用到这个servlet。
session过期时间配置session-timeout参数,也是在这个web.xml中配置的。
这个是tomcat安全相关的配置文件,主要使用安全策略文件可以在tomcat启动是附上 -security
④ catalina.properties安全配置,类加载设置,不需扫描的类,字符缓存等配置
⑤ context.xml所有在tomcat中发布的应用都会使用的公用配置,例如:发布的web应用的描述文件的位置及名称,及session持久化配置等。session持久化示例请参考第三部分的示例
⑥ tomcat-users.xmltomcat的角色(授权用户)配置文件,用于访问tomcat管理应用程序时的安全性设置,用server.xml中引用的默认的用户数据库域(UserDatabase Realm)使用它,所有的凭据都是默认被注释的
⑦ tomcat-users.xsd定义了 tomcat-users.xml 所使用到的标签,即tomcat-user.xml 的结构定义文件
3.lib目录(存放jar包)所有的部署在tomcat中的web应用公用的jar包
在项目中lib目录存放的jar包只适用于项目。
4.logs目录用于保存tomcat运行时的日志数据
catalina.{yyyy-MM-dd}.log tomcat自己的运行日志
localhost.{yyyy-MM-dd}.log 应用初始化日志,包含tomcat的启动和暂停时的运行日志,没有
catalina.{yyyy-MM-dd}.log 记录的全,只包含一部分
localhost_access_log.{yyyy-MM-dd}.txt tomcat访问日志,包括请求时间,资源,返回的状态码
manager.{yyyy-MM-dd}.log 是tomcat管理控制台应用的专有日志
在Linux系统中,tomcat将日志记入catalina.out文件,可以使用 tail -f catalina.out 进行跟踪。
5.temp目录6.webapps目录存放tomcat在运行期间产生的临时文件,可以清空该目录的文件,但不能删除该目录,可能会引发不可预知的错误。
tomcat默认的项目部署目录,在默认情况下,如果要发布应用可以直接将应用的war包放入该目录即可完成发布,也可以直接发布未压缩的目录,但要求该目录需要符合web应用规范。
doc tomcat文档
examples tomcat自带的web应用示例
host-manager tomcat主机管理应用程序
manager tomcat的管理应用程序
ROOT 如果项目部署为ROOT,则在地址栏直接输入:http://ip:port/ 就可以访问,即不用输入应用名
7.work目录8.其他文件用来部署应用中由jsp文件生成的java文件和编译之后的class文件,可以删除,删除后可以迫使tomcat重新生成jsp对用的java和class文件。
LICENSE tomcat开源许可文件
NOTICE tomcat说明文件
RELEASE-NOTES 版本说明文件
README.md 即 README.txt tomcat帮助文件
三、session持久化示例 1.主要配置文件session持久化主要是在context.xml文件中进行配置的,context.xml文件可以出现在两个位置上,其作用域不同,配置方式一致:
tomcat安装目录\conf 目录中的context.xml配置文件,该文件中的配置对部署在该tomcat中的所用应用都有效
所开发的web应用的META-INFO目录中,创建一个context.xml配置文件,放在此处的配置,只对所属的web应用有效
2.示例:
· 创建web工程
· 加入tomcat依赖
· 创建一个Customer实体bean,之后会将该bean放入session,注意:因为session需要进行持久化,所以该bean需要实现两个接口,分别为:HttpSessionActivationListener,Serializable
· 创建一个servlet,在用户访问该servlet时,将Customer存入session,已测试持久化
具体代码如下:
Customer:
public class Customer implements HttpSessionActivationListener, Serializable {
private String id;
private String name;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public void sessionDidActivate(HttpSessionEvent event) {
String name = ((Customer)event.getSession().getAttribute("cust")).getName();
System.out.println("钝化之后 = " + name);
}
@Override
public void sessionWillPassivate(HttpSessionEvent event) {
String name = ((Customer)event.getSession().getAttribute("cust")).getName();
System.out.println("钝化之前 = " + name);
}
@Override
public String toString() {
return "Custom [hljs-string" >", name=" + name + "]";
}
}
servlet:
@WebServlet("/login")
public class LoginServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doPost(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
Object cust_obj = req.getSession().getAttribute("cust");
if(Objects.isNull(cust_obj)) {
Customer cust = new Customer();
cust.setId("cust_001");
cust.setName("张三");
System.out.println("将客户信息放入session");
req.getSession().setAttribute("cust", cust);
} else {
System.out.println("客户信息已经放入session");
String name = ((Customer)req.getSession().getAttribute("cust")).getName();
System.out.println("从session获取客户信息,name = " + name);
}
}
}
今天的分享就到这里啦,有什么不懂的可以私信问我哦。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)