Servlet --- Tomcat安装,简单静态资源相应,动态资源编写规范

Java学习打卡:第90、91天

javaWeb —JSP

内容导航

  • Servlet
    • 模拟Servlet
    • Tomcat安装配置
      • 问题:localhost:8080打开失败
      • Tomcat目录介绍
    • 模拟开发程序
      • 本质的解释
    • 动态资源开发 WEB-INF


Servelet


之前大概介绍了HTML+CSS和JavaScript,但是只能解决的是界面问题,当时虽然提到JSON可以实现前后端的交互,JavaScript和java交互,但是提交的表单是怎么给到我们的后台的数据库,这里还需要其他的技术手段

Servlet

在学习了解servlet之前,先了解一下Java EE和JAVASE的相关知识

JAVA SE是java的标准版本,包含基础类库。这套基础类库包括基础语法、面向对象、异常、IO、集合、反射等模块的内容

JAVA EE是一个比较大的规范,JAVA EE规范中包括13个子规范(每一个子规范还包含其它的子规范)

而C/S架构和B/S架构已经提过两次了,这里就不再赘述了;主要是面向B/S架构,就是web应用。

S是指的软件服务器,Tomcat就是一个软件,默认端口是8080.

Servlet --- Tomcat安装,简单静态资源相应,动态资源编写规范_第1张图片

比如这里输入一个网址

http://119.75.218.70:8080/egov/login.html

这里也就是从主机上8080也就是tomcat服务器上从egov文件夹下获取静态资源login.html;

这里后面的路径就是tomcat从服务器中调取不同的java程序来处理业务

上面的静态资源不需要java的代码操作,用户访问后直接显示在浏览器网页上,也就是画在网页上。但是这里的网址可能会对应不同的路径,不同的子路径可能完成的操作就是不一样的;,路径可以对应得是静态得HTML网页,也可能是一段java得程序 — 也就是存放的是动态资源文件。这里可以举一个例子

https://www.nowcoder.com/    这是总的路径   其中就包括了  DNS主机名是www.nowcoder.com
https://www.nowcoder.com/login   这里是登录的部分  后面的login就是该部分的资源
https://www.nowcoder.com/mockexam/MockExam  获取到的就是服务器mockexam路径下的MockExam资源
路径和文件是一一绑定的

后面的就是资源的代号; 服务器分软件服务器和硬件服务器,装有软件服务器的机器叫做硬件服务器。也就是装有Tomcat软件服务器的机器就是硬件服务器

Tomcat管理着服a务器上的一个文件夹,这个文件夹为webapps(web applications)web容器可以管理多个管理多个web application;其中的资源就有静态资源和非静态资源

浏览器 -------http--->Web服务器 -----Servelet---> 服务端java程序 ---jdbc--> 数据库
Browser               webServer                                          DBSever

Servelet就是一套规范的接口,这四者就是靠的JAVA EE中的jdbc和Servelet以及W3C的HTTP协议连接。方便解耦合

Serelet ---- Serv 表示服务器端 ,let表示小程序 服务端小程序

模拟Servlet

之前学习jdbc的时候用模拟程序来解释了一下JDBC;JDBC就是SUN公司定义的一套规范,也就是一套接口,这套接口比如有获取连接的Connection接口;Statement接口等,然后各个数据库厂家都实现了这些接口,比如Driver接口mysql厂家就实现了,mysql.cj.jdbc.Driver;开发过程中,就要将mysql的实现类的字节码导入;这里的资源就是下载mysql的时候在connector中

/**
* SUN公司制定的JavaEE规范:Servlet规范
* Servelet接口是Servelet规范中的核心接口  
*/

public interface Servelet{
    /*
    	服务端的小java程序必须将service方法实现
    */
    void service();
}


/*
	javaweb programmer 编写小java程序的时候,不能随意编写,必须实现Servelet接口
*/

public class DeleteServlet implements Servlet{
    public void service(){
        System.out.println("连接数据库,正在删除数据请稍后……");
	}
}

/*
	Tomcat WebServer Web服务器   
	web 容器
*/
public class Tomcat{
    public static void main(String[] args){
        Scanner s = new Scanner(System.in);
        System.out.println("服务器连接成功");
        System.out.println("请打开浏览器,在浏览器地址栏中输入到请求路径");
        //等待用户的访问
        String requestPath = s.next();
        System.out.println("你访问的路径是" + requestPath);
        //获取路径的java小程序,因为绑定在一起的,类似于配置文件
        FileReader file = new FileReader("Web.html");
        Properties pro = new Properties();
        pro.load(file);
        pro.getProperties(requestPath);  //LoginServlet
        //通过反射反射机制创建对象
        Class c = Class.forName(serveltClassName);
        Servlet servlet = (Servlet)c.newInstance();//都是实现的Servelet
        //面向Servelet接口调用方法
        servelet.service();
    }
}

那么这个输入的路径,这个路径和资源是一一绑定的关系,这个绑定关系的建立,就是靠programmer编写的配置文件,.xml,类似于之前写的properties;
Web.xml    
/login = LoginServlet
/delete = DeleteServlet
/save = SaveServlet
    
Servelt制定的接口,我们实现写程序的时候就不能随便写,必须要实现Servelet接口,并且要在配置文件中将程序和路径对应;这里程序的调用是依靠的Tomcat

Tomcat安装配置

安装软件是学习servlet必须迈过的坎;和Mysql一样,当时博主遇到了安装可能出现的所有的问题;真是难啊;这次也不例外,所以专门在这里分享一下解决问题的过程

  • 首先安装TOmcat直接百度中输入Tomcat进入官网下载即可;还是和mysql一样;有两种版本,一种为Zip版本,一种为exe版本;个人喜好问题,我选择的是exe,这里路径选择的时候可以自定义路径;finish就完成
  • 之后就是配置环境变量;设置两个变量,设置为tomcat的安装路径;之后再path路径中配置tomcat的bin路径

问题:localhost:8080打开失败

  • 可能你没有打开tomcat.exe;要打开才可以加载出来
  • 如果是拒绝访问,可能是服务被占用;解决的办法就是
PS C:\Windows\system32> netstat -ano | findstr 8080
  TCP    0.0.0.0:8080           0.0.0.0:0              LISTENING       7340
PS C:\Windows\system32>  taskkill -pid 7340 -f
成功: 已终止 PID 为 7340 的进程。

Servlet --- Tomcat安装,简单静态资源相应,动态资源编写规范_第2张图片

前面的关闭线程经常都要使用到所以要记住,就是netstat -ano | findstr 8080

之后关闭服务 taskkill pid id -f就可以;这里我们可以将关闭服务的命令改一个名字,将shutdown改成stop;直接在DOS窗口中就可以执行,不然会和其他的命令冲突

Tomcat目录介绍

  • bin目录下是Tomcat的常用的命令,包括启动startup ,关闭stop等等
  • conf : configure 配置文件,包括properties配置的是非常简单的,但是xml的配置文件更复杂;是用来数据交换,可以作为配置文件
1catalina.org.apache.juli.AsyncFileHandler.level = FINE
1catalina.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs
1catalina.org.apache.juli.AsyncFileHandler.prefix = catalina.
1catalina.org.apache.juli.AsyncFileHandler.maxDays = 90
1catalina.org.apache.juli.AsyncFileHandler.encoding = UTF-8
  • lib 库,包含很多字节码,是Tomcat实现的核心程序;Tomcat的底层是依靠的java

  • logs 日志信息,其中有我们操作的日志信息

  • temp 临时文件

  • webapps 包括的是开发的应用程序,可以放很多应用程序

  • work JSP存放目录

模拟开发程序

开发程序的时候就是先开发再部署;开发可以再任何位置开发,但最后要进行资源的配置;所谓的配置就是将开发的项目放到我们的服务器小程序中;这样用户就可以直接访问主机的8080端口下的该项目了

这里先来模拟静态资源文件,就写一个静态的HTML页面来让用户访问

这里就不再写了,就之前写的那个HTML的目录吧,所谓的部署这里很简单:直接将开发的项目文件夹复制粘贴到webapps目录下就可以了

这样就算部署成功了,上面我们模拟的复杂过程都是给封装起来了,是有Tomcat直接完成的,所以十分简单。

这里我们再浏览器中输入路径的时候不需要写webapps了,直接写apps下一级目录;所以这里想要访问index.html;那么浏览器键入的地址就是

localhost:8080/imcfeng.com/index.html

这样就实现了访问了,Tomcat就是一个服务器软件,其中的底层要理解还是挺困难的,但是封装之后就可以直接建立连接,直接将路径和服务器中的静态资源给绑定在一起,用户通过路径就可以直接访问相关的资源

可以看到,成功通过Tomcat成功打开了我们编写的静态的页面资源文件

本质的解释

Tomcat就是一个服务端小程序,其主要目的就是搭建了用户和服务器之间的联系,自己开发的项目如果不部署那么只能自己访问,自己可以点击index.html就可以打开界面,这是服务器S端; 但是对于远方的用户来说,服务器端的资源是不可见的,它们能操作的只有浏览器也就是B端;输入URL才能访问服务器的资源;Tomcat就是一个中转站,用户发来请求;之后Tomcat转发获得资源,返回相应给用户,用户的浏览器上画出相关的页面

动态资源开发 WEB-INF

SUN公司定义了规范Servelet,创建的目录下可以放入html,css,js等文件。就是在我们创建的项目的目录下,放入的文件名必须为WEB-INF; 这是规范,都是大写,并且中间以-连接;

WEB-INF固定三个文件夹

  • classes : 存放项目的字节码
  • lib : 库,存放的是jar包,也就是classPath,这里的路径和Tomcat的路径不一样,这里的是局部的路径,上面的是全局的路径
  • web.xml : 将路径和资源绑定;因为这是动态资源,不绑定,Tomcat是找不到的

所以这里就没什么技术含量,直接固定的写

开发的步骤就是编写java程序文件,将文件放入项目的classes;之后再web.xml中写入配置信息

web.xml必须要是一个合法的文件,就是参照的Tomcat的xml文件,要写web-app标签;一个webapp只能对应一个xml文件。在服务器启动阶段会被解析。如果解析失败,那么app也会启动失败;这是由固定的规范

这里可以演示一下xml的编写


<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-name>servlet名称,随意servlet-name>
        <servlet-class>java文件名,如果有包要加上servlet-class>
    servlet>
    <servlet-mapping>
    	<servlet-name>servlet名称,随意servlet-name>
        <url-pattren>请求路径url-pattren>
    servlet-mapping>
web-app>

这样就可以在用户的浏览器访问服务器的动态资源,这里的路径必须以”/“开始,代表的是资源的名称

接下来就是开发动态资源并将结果显示到浏览器中,也就是一个完整的项目,真正让项目得到应用

你可能感兴趣的:(JAVAweb,tomcat,java-ee,java)