• Java EE入门(十)——Tomcat和Servlet基础


    Java EE入门(十)——Tomcat和Servlet基础
      iwehdio的博客园:https://www.cnblogs.com/iwehdio/

    导图

    1、Web基础概念回顾

    • 软件架构:
      • C/S:客户端/服务器端。
      • B/S:浏览器/服务器端。
    • 资源分类:
      • 静态资源:所有用户访问后得到的结果都是一样的。
      • 动态资源:每个用户访问访问相同资源后得到的结果可能不一样。
      • 静态资源可以直接被浏览器解析,动态资源被访问需要先被转换为静态资源,再返回浏览器。
    • 网络通信三要素:
      • IP地址:设备在网络中的唯一标识。
      • 端口:应用程序再计算机中的唯一标识。
      • 传输协议:规定了数据传输的规则。
    • 服务器软件:接受用户的请求,处理请求并作出响应。
    • 服务器:安装了服务器软件的计算机。
    • Web服务器软件:可以部署Web项目,让用户通过浏览器来访问。动态资源必须在Web服务器中运行,也叫Web容器。

    2、Tomcat

    • 启动Tomcat:
      • bin 目录下的 start.bat 。
      • 浏览器访问:ip地址:端口号。端口号默认8080。
      • 启动时出现的问题:
        • 命令行黑窗口一闪而过:JAVA_HOME环境变量未正确配置。
        • 启动报错:端口号已被占用。查看占用端口号的进程的PID:命令行下输入netstat -ano;或更改 conf 下的 server.xml 的Connector端口号,一般更改为80。
    • 关闭Tomcat:
      • bin 目录下的 shutdown.bat。
      • 在 Tomcat 命令行中 ctrl+c 。
    • 部署项目的方式:
      1. 直接将项目放到 webapps 目录下。
        • 访问方式:ip:端口号/项目名称/资源名称。/项目名称是项目的访问路径,称为虚拟目录。
        • 简化部署:将项目打包为 .war 压缩包,再将其 放置到 webapps 下,自动解压缩。
      2. 在其他目录下通过配置文件部署。
      • 配置方式: conf 下的 server.xml 的 host 标签体中配置:<Context docBase="/项目路径" path="/虚拟目录" />
      1. 为每个项目单一热配置
      • 配置方式:conf/Catalina/localhost 下创建 文件名.xml文件。
      • 在文件中编写 <Context docBase="/项目路径" />
      • 虚拟目录就是 xml 文件的名称。
    • Java动态项目的目录结构:
      • 根目录下有 WEB-INF 目录。该目录下有:
      • web.xml :web项目的核心配置文件。
      • classes 目录:放置字节码文件的目录。
      • lib 目录:放置依赖 jar 包。
    • IDEA集成:
      • 导入:Run 下的 Edit Configurations 。选择 Tomcat Server,配置Tomcat的目录。
      • 创建项目:创建Java Enterprise 项目,勾选 Web Application。
      • 热部署:将 Edit Configurations 下的 Tomcat Server中的,On Update action 和 On frame deactivation 置为 Update resources。

    3、Servlet

    serber applet:运行在服务器端的小程序。

    Servlet就是一个接口,定义了Java类被浏览器访问到(用Tomcat识别)的规则(接口)。

    • 使用方法:自定义一个类,实现 Servlet 接口,复写方法。

    • 使用步骤:

      1. 创建 JavaEE 项目。

      2. 定义一个类,实现 Servlet 接口。

      3. 实现接口中的所有抽象方法。

        public class ServletDemo1 implements Servlet {
            @Override
            public void init(ServletConfig servletConfig) throws ServletException {
            }
            @Override
            public ServletConfig getServletConfig() {
                return null;
            }
            @Override
            public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
            }
            @Override
            public String getServletInfo() {
                return null;
            }
            @Override
            public void destroy() {
            }
        }
        
      4. 配置 Servlet 。在 web.xml 配置文件中。

        <servlet>
            <servlet-name>Servlet名</servlet-name>
            <servlet_class>全类名</servlet_class>
        </servlet>
        
        <servlet-mapping>
        	<servlet-name>Servlet名</servlet-name>
            <url-pattern>子路径</url-pattern>
        </servlet-mapping>
        
        • servlet 标签中,将 Servlet名 与全类名捆绑,全类名即各级包名.类名。
        • servlet-mapping 标签中,将 Servlet名 与所要映射子路径捆绑。
    • Servlet 执行原理:

      1. 当服务器接收到客户端浏览器的请求后,会解析 url 路径,获取所要访问的 Servlet 资源路径。
      2. 查找 web.xml 文件,是否有对应的 <url-pattern> 标签体内容。
      3. 如果有,通过 Servlet 名找到对应的<servlet_class>全类名。
      4. Tomcat 将全类名对应的类加载进内存,并创建对象。
      5. 调用其方法。
    • Servlet 的方法与生命周期:

      • init():初始化方法,在 Servlet 被创建时执行,只会执行一次。
        • 默认情况下,第一次被访问时,Servlet 被创建。
        • 可以指定 Servlet 被创建的时机,<load-on-startup></load-on-startup>。为负数时表示第一次被访问时创建,为0或正整数时为在服务器启动时创建。
        • 一个 Servlet 在内存中只存在一个对象,Servlet 是单例的。多个用户同时访问时,可能出现线程安全问题。尽量不要在 Servlet 中定义成员变量,即使定义了也不要对其进行修改。
      • service():提供服务的方法,每次 Servlet 被访问时都会被执行一次。
      • destroy():销毁方法,在服务器正常关闭时执行,只会执行一次。
        • 在 Servlet 被销毁前执行,用于释放资源。
      • ServletConfig():获取 Servlet 的配置对象 ServletConfig对象。
      • getServletInfo():获取 Servlet 的一些信息。
    • Servlet 3.0 注解配置:可以不在 web.xml 中配置。

      • 创建 JavaEE 项目时可以不创建 web.xml 。
      • 在类上使用 @WebServlet(urlPatterns="/子路径")注解进行配置。可以简写为@WebServlet("/子路径")
    • IDEA 与 Tomcat 配置:

      • IDEA 会为每个 Tomcat 部署的项目单独建立一份配置文件。
      • 工作空间项目和 Tomcat 部署的 web 项目的内容相同,但是存储空间不同。Tomcat 真正访问的是Tomcat 部署的 web 项目,对应于工作空间项目下的所有资源。
      • WEB-INF 目录下的资源不能直接被浏览器访问。
    • Servlet 体系结构:

      • GenericServlet抽象类:是 Servlet 接口的实现,对除了 service() 方法作为抽象,需要在子类中重写。如果继承该类,只需要实现 service() 方法。
      • HttpServlet抽象类:是 GenericServlet 抽象类的子类,是对 http 协议的一种封装。需要复写 doGet() 和 doPost() 方法,分别用于不同的请求方式。
    • urlpartten 配置:

      • 一个 Servlet 可以定义多个访问路径,在注解上的配置方式为:@WebServlet({"/路径1","/路径2"})
      • 路径配置规则:
        • 单层路径:/xxx
        • 多层路径:/xxx/xxx 。(*是通配符,/*表示任意路径)
        • 扩展名匹配:*.扩展名。(即任意路径 . 扩展名可访问到)

    iwehdio的博客园:[https://www.cnblogs.com/iwehdio/](https://www.cnblogs.com/iwehdio/)
  • 相关阅读:
    【JEECG技术文档】JEECG online 表单填值规则使用说明
    【JEECG技术文档】JEECG 接口权限开发及配置使用说明
    【JEECG技术文档】JEECG 组织机构导入V3.7
    【JEECG技术文档】Online唯一校验使用说明
    h5 文件下载
    babel (三) babel polly-fill
    babel (二) update to v7
    babel(一)
    noode inquirer
    node path
  • 原文地址:https://www.cnblogs.com/iwehdio/p/12382115.html
Copyright © 2020-2023  润新知