文章目录
一、IntelliJ IDEA配置Tomcat
使用IntelliJ IDEA配置Tomcat(详细操作)
参考URL: https://www.cnblogs.com/weixinyu98/p/9822048.html
IDEA配置本地tomcat启动项目
参考URL: https://blog.csdn.net/fengchao2016/article/details/83023725
二、IntelliJ IDEA 远程调试 Tomcat 的方法
IntelliJ IDEA 远程调试 Tomcat 的方法
参考URL: https://blog.csdn.net/qq_35246620/article/details/78507324
三、IDEA中的war和war exploded的区别
IDEA中的war和war exploded的区别
参考URL: https://www.jianshu.com/p/5719458486ff
-
war
war模式这种可以称之为是发布模式,就是先将WEB工程打成war包,然后再将其上传到服务器进行发布 。 -
war exploded
war exploded模式是将WEB工程以当前文件夹的位置关系上传到服务器,即直接把文件夹、jsp页面 、classes等等移到Tomcat 部署文件夹里面,进行加载部署。因此这种方式支持热部署,一般在开发的时候也是用这种方式。
此时在tomcat的文件目录中不会有解压的war文件夹。如果用idea, 它会在${user.home}/.IntelliJIdea/system/tomcat 目录下生成项目的文件夹,里面包含了tomcat的配置,日志等信息。
如果用idea,它会在如下目录下生成项目的文件夹
C:\Users\she\.IntelliJIdea2018.1\system\tomcat\Unnamed_webrelay
在其目录下的
/conf/Catalina/localhost 目录下有 *.xml 配置文件,指定了项目的路径
C:\Users\she\.IntelliJIdea2018.1\system\tomcat\Unnamed_webrelay\conf\Catalina\localhost\ROOT.xml
四、web.xml
一般的web工程中都会用到web.xml,web.xml主要用来配置,可以方便的开发web工程。web.xml主要用来配置Filter、Listener、Servlet等。但是要说明的是web.xml并不是必须的,一个web工程可以没有web.xml文件。
1. web.xml文件常用元素详解
1、schema
web.xml的模式文件是由Sun公司定义的,每个web.xml文件的根元素中,都必须标明这个 web.xml使用的是哪个模式文件。其它的元素都放在之中。
2. 上下文参数
<context-param>
<param-name>logbackConfigLocation</param-name>
<param-value>classpath:logback.xml</param-value>
</context-param>
**声明应用范围内的初始化参数。它用于向 ServletContext提供键值对,即应用程序上下文信息。**我们的listener, filter等在初始化时会用到这些上下文中的信息。在servlet里面可以通过getServletContext().getInitParameter(“context/param”)得到。
- 过滤器
如下demo,StatisticsFilter是自定义实现javaxs.servlet.Filter接口的类。
<!-- 时间统计 -->
<filter>
<filter-name>statistics</filter-name>
<filter-class>cn.xxx.xxx.filter.StatisticsFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>statistics</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
- 监听器
<listener>
<listerner-class>com.listener.SessionListener</listener-class>
</listener>
最重要的一个元素:
用来声明一个servlet的数据,主要有以下子元素:
- 指定servlet的名称
- 指定servlet的类名称
- 指定web站台中的某个JSP网页的完整路径
- 用来定义参数,可有多个init-param。在servlet类中通过* getInitParamenter(String name)方法访问初始化参数
- 指定当Web应用启动时,装载Servlet的次序。当值为正数或零时:Servlet容器先加载数值小的servlet,再依次加载其他数值大的servlet。当值为负或未定义:Servlet容器将在Web客户首次访问这个servlet时加载它。
- 用来定义servlet所对应的URL,包含两个子元素
- 指定servlet的名称
- 指定servlet所对应的URL
五、Servlet
JavaWeb——Servlet(全网最详细教程包括Servlet源码分析)
参考URL: https://blog.csdn.net/qq_19782019/article/details/80292110
Servlet(Server Applet),全称Java Servlet,未有中文译文。是用Java编写的服务器端程序。其主要功能在于交互式地浏览和修改数据,生成动态Web内容。狭义的Servlet是指Java语言实现的一个接口,广义的Servlet是指任何实现了这个Servlet接口的类,一般情况下,人们将Servlet理解为后者。
Servlet是SUN公司提供的一门用于开发动态WEB资源的技术。SUN公司在其API中提供了一个Servlet接口,用户若想开发一个动态WEB资源(即开发一个Java程序向浏览器输出数据),需要完成以下2个步骤:
- 编写一个Java类,实现Servlet接口;
- 把开发好的Java类部署到WEB服务器中。
1. Servlet 的工作原理
Servlet接口定义了Servlet与servlet容器之间的契约。这个契约是:Servlet容器将Servlet类载入内存,并产生Servlet实例和调用它具体的方法。但是要注意的是,在一个应用程序中,每种Servlet类型只能有一个实例。
用户请求致使Servlet容器调用Servlet的Service()方法,并传入一个ServletRequest对象和一个ServletResponse对象。ServletRequest对象和ServletResponse对象都是由Servlet容器(例如TomCat)封装好的,并不需要程序员去实现,程序员可以直接使用这两个对象。
ServletRequest中封装了当前的Http请求,因此,开发人员不必解析和操作原始的Http数据。ServletResponse表示当前用户的Http响应,程序员只需直接操作ServletResponse对象就能把响应轻松的发回给用户。
对于每一个应用程序,Servlet容器还会创建一个ServletContext对象。这个对象中封装了上下文(应用程序)的环境详情。**每个应用程序只有一个ServletContext。每个Servlet对象也都有一个封装Servlet配置的ServletConfig对象。**
Servlet的工作模式
- 客户端发送请求至服务器
- 服务器启动并调用Servlet,Servlet根据客户端请求生成响应内容并将其传给服务器
- 服务器将响应返回客户端
2. WEB工程加载web.xml过程
WEB工程加载顺序与元素节点在文件中的配置顺序无关。即不会因为 filter 写在 listener 的前面而会先加载 filter。WEB容器的加载顺序是:ServletContext -> context-param -> listener -> filter -> servlet。并且这些元素可以配置在文件中的任意位置。
加载过程顺序如下:
- 启动一个WEB项目的时候,WEB容器会去读取它的配置文件web.xml,读取和两个结点。
- 紧急着,容创建一个ServletContext(servlet上下文),这个web项目的所有部分都将共享这个上下文。
- 容器将转换为键值对,并交给servletContext。
- 容器创建中的类实例,创建监听器。