Tomcat学习目录
一.Tomcat基础知识
1.JavaEE十三种规范是什么?(cv)
1.JDBC(java Database Connectivity):
JDBC API为访问不同的数据库提供了一种统一的途径,就像ODBC一样,JDBC对开发者屏蔽了一些细节问题,同时,JDBC对数据库的访问也具有平台无关性。
2.JNDI(Java Name and Directory Interface)
JNDI API 被用于执行名字和目录服务。它提供了一致的模型用来存取和操作企业级的资源如DNS和LDAP,本地文件系统,或应用服务器中的对象。
3.EJB(Enterprise JavaBean)
一个框架开发和实施分布式商务逻辑,由此很显著简化了具有可伸缩性和高度复杂的企业级应用开发。
4.RMI(RemoteMethod Invoke)
RMI协议调用远程对象上方法。它使用了序列化方式在客户端和服务器端传递数据
5.Java IDL(接口定义语言)/CORBA
公共对象请求代理结构(Common Object Request Breaker Architecture)
6.JSP(Java Server Pages)
Jsp页面由html代码和嵌入其中的Java新代码所组成。用来生成动态页面
7.Java Servlet
Servlet提供的功能大多和jsp类似,不过实现方式不同。JSP通过大多数的html代码中嵌入少量的java代码,而servlet全部由java写成。
8.XML(Extensible Markup Language)
XML是一种可以用来定义其他标记语言的语言
9.JMS(Java Message Service)
JMS是用于和面向消息的中间件相互通信的应用程序接口(API)
10.JTA(Java Transaction Architecture)
Java事务API。允许应用程序执行分布式事务处理——在两个或多个网络计算机资源上访问并且更新数据。
11.JTS(Java Transaction Service)
JTS是CORBA OTS事务监控的基本的实现。JTS规定了事务管理器的实现方式。该事务管理器是在高层支持Java Transaction API (JTA)规范,并且在较底层实现OMG OTSspecification的Java映像。JTS事务管理器为应用服务器、资源管理器、独立的应用以及通信资源管理器提供了事务服务。
12.JavaMail
JavaMail是用于存取邮件服务的API,它提供了一套邮件服务器的抽象类。不仅支持SMTP服务器,也支持IMAP服务器。
13.JAF(JavaBeans Activation Framework)
JAF是一个专用的数据处理框架,它用于封装数据,并为应用程序提供访问和操作数据的接口.也就是说,JAF让Java程序知道怎么对一个数据源进行查看,编辑,打印等.
2.JavaEE和JavaWeb的区别
J2EE是Java的企业应用开发,涵盖了B/S和C(Client客户端)/S(Server服务器),注重的是结构和框架,我们所熟知的struts2、hibernate和spring即ssh就是j2ee的一些基本框架。
JavaWeb是指Java在B(Browser浏览器)/S(Server服务器)方面的开发,做的是网络应用;
3.Tomcat是什么?
由上可知JavaEE有13个核心技术规范,而Tomcat只并不能全部支持这些规范,只实现了Servlet和JSP这两个规范。而其他服务器比如JBoss、Weblogic都是完全支持的JavaEE13种规范的,所以人们往往更愿意叫Tomcat为轻量级的服务器,也有叫它Servlet/JSP容器的。这也是为什么我们新建了一个Tomcat服务器就能够直接生成Servlet和JSP这两个api(如下图),而不需要像JDBC那样直接导入依赖。
4.Tomcat服务器和Web服务器的区别?
Tomcat服务器 = Web服务器 + Servlet/JSP容器(Web容器)。
Web服务器的作用是接收客户端的请求,给客户端作出响应。但是很明显,服务器不止静态资源呀,所以客户端发起请求后,如果是动态资源,Web服务器不可能直接把它响应回去(比如JSP),因为浏览器只认识静态资源。所以对于JavaWeb程序而言,还需要JSP/Servlet容器,JSP/Servlet容器的基本功能是把动态资源转换成静态资源。
2.Tomcat静态资源和动态资源分别指什么?
简而言之:
Tomcat静态资源是指如html,jsp这类前端网页界面;
Tomcat动态资源是指在src下的java中的类
3.Tomcat处理servlet过程(代完善)
(1)servlet接口存在一个init方法:public void init(ServletConfig config) throws ServletException;
当servlet 第一次被调用的时候,反射构造 servlet类对象并调用它的init方法(仅调用一次);
(2)响应每次请求的时候 ,构建一个javax.servlet.ServletRequest 和 javax.servlet.ServletResponse实例。
(3)调用servlet的service方法(service被HttpServlet重写,会根据请求类型调用doGET,doPOST等方法,这也是我们为什么要重写doGET,doPOST方法的原因),将ServletRequest对象 和 ServletResponse 对象当作参数传入。
(4)当servlet类关闭的时候,调用servlet的destroy方法,并卸载servlet类。
4.ServletConfig是什么?
字面意思:是Servlet的配置信息,其内部存在4个get方法。
public String getServletName();//获取Servlet的名字
public ServletContext getServletContext();//获取
public String getInitParameter(String name);//根据Servlet名字获取初始参数信息
public Enumeration getInitParameterNames();//获取初始参数名字的枚举类型。
二.创建Tomcat服务器
前提:先在本地下载Tomcat服务器,并添加到路径中去。
官网网站:https://tomcat.apache.org/download-80.cgi
环境配置:https://www.cnblogs.com/weixinyu98/p/9822048.html
第一步:创建一个Web服务器
1.先在Application servers中建立服务器
建立服务器时,服务器会自动生成一个servlet:name包,包内含jsp-api.jar和servlet-api.jar
2.创建一个web文件
1.建立一个java文件或maven项目
2.在java文件上右键:add Framework Support
3. 将web项目部署(发布)到服务器中,就可以发静态资源
1.Run->Edit Configurations->Tomcat Servlet->local 来创建Tomcat服务器的配置
2.修改配置名和端口号(当服务器只有一个maven项目时不用修改端口号)
3.在Deployment上部署网站(如下图)
4.在Application Context给本网站取个名字如"/myWeb"或不取名字"/"
第二步:在Web服务器的基础上生成Tomcat服务器
经过以上步骤我们已经能够在服务器上发表简单的静态资源文件了,但是我们又该如何发布动态资源文件呢?
在上述步骤的基础上进行以下操作:
1.把servlet-api.jar添加External Libraries中:project Structure->Module->Dependencies->添加包
2.用java文件继承HttpServlet,并重写doGET和doPOST函数
//com.junjun.java.HelloServlet
public class HelloServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// 通过响应对象向Tomcat索要输出流PrintWriter(这个输出流是原来就存在的,不是生成的)
PrintWriter Out=resp.getWriter();
// 通过输出流将执行结果以二进制形式写入响应体(这是Http回应协议包里的响应体)
// write的int c是ASCII码,本质上和char c是一样的。要区分int c和int i
Out.write("调用了doGet后会在浏览器页面上显示/n");
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
this.deGet(req, resp);
}
}
3.在web.xml中配置servlet
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<!-- 第一个servlet的设置-->
<servlet>
<servlet-name>mm</servlet-name>
<servlet-class>com.junjun.java.HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>mm</servlet-name>
<url-pattern>/sdsds</url-pattern>
</servlet-mapping>
</web-app>
4. 在浏览器上输入http://localhost:8080/myWeb/sdsds就能访问这个servlet动态资源了
四.关于Tomcat项目的文件目录分析
1.src目录
用来存放动态资源文件,若要调用需要在web.xml中注册控制器
2.web分析
调用web目录下的index.jsp,用http://localhost:8080/myweb/index.jsp.
若Application Context指定为/,则服务器默认进入网址为http://localhost:8080/index.jsp
3.web-INF分析
WEB-INF是Java的WEB应用的安全目录。客户端无法访问,只有服务端可以访问。即转发是可以访问的,但是重定向是不能访问的
4.index.jsp
当我们点击开启Tomcat服务器会访问http://localhost:8080/myweb/地址,
实际上http://localhost:8080/myweb/完全等同于浏览器手动访http://localhost:8080/myweb/index.jsp
五.Tomcat中web.xml的作用
1.指定欢迎页面
注意:如果存在多个欢迎界面,则按出现的先后顺序来确立优先级。
<welcome-file-list>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
<welcome-file>index1.jsp</welcome-file>
</welcome-file-list>
2.命名与定制URL
<servlet>
<servlet-name>mm</servlet-name>
<servlet-class>com.junjun.java.HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>mm</servlet-name>
<url-pattern>/sdsds</url-pattern>
</servlet-mapping>
3.定制初始化参数
获取参数值:在servlet中调用getServletConfig().getInitParameter(“contextConfigLocation”)获得参数名对应的值。
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvc-servlet.xml</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>/</url-pattern>
4、指定错误处理页面
通过“异常类型”或“错误码”来指定错误处理页面。
<error-page>
<error-code>404</error-code>
<location>/error404.jsp</location>
</error-page>
<error-page>
<exception-type>java.lang.Exception<exception-type>
<location>/exception.jsp<location>
</error-page>
5、设置过滤器
通过过滤器过滤url请求
<filter>
<filter-name>XXXCharaSetFilter</filter-name>
<filter-class>net.test.CharSetFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>XXXCharaSetFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
6.设置监听器
通过过滤器过滤url请求
<listener>
<listener-class>net.test.XXXLisenet</listener-class>
</listener>
7、设置会话(Session)过期时间
其中时间以分钟为单位,假如设置60分钟超时:
<session-config>
<session-timeout>60</session-timeout>
</session-config>
五.Tomcat架构
六Tomcat使用过程中常见问题解决方案
1.当Tomcat报错时,控制台会出现中文乱码如下:
【解决方案】:
找到Tomcat /config/logging.properties文档,将其中ConsoleHandler.encoding=UTF-8改为GBK就行(很可能在47行)。