Tomcat学习笔记(含servlet)

一.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行)。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值