Java学习打卡:第90、91天
javaWeb —JSP
Servelet
之前大概介绍了HTML+CSS和JavaScript,但是只能解决的是界面问题,当时虽然提到JSON可以实现前后端的交互,JavaScript和java交互,但是提交的表单是怎么给到我们的后台的数据库,这里还需要其他的技术手段
在学习了解servlet之前,先了解一下Java EE和JAVASE的相关知识
JAVA SE是java的标准版本,包含基础类库。这套基础类库包括基础语法、面向对象、异常、IO、集合、反射等模块的内容
JAVA EE是一个比较大的规范,JAVA EE规范中包括13个子规范(每一个子规范还包含其它的子规范)
而C/S架构和B/S架构已经提过两次了,这里就不再赘述了;主要是面向B/S架构,就是web应用。
S是指的软件服务器,Tomcat就是一个软件,默认端口是8080.
比如这里输入一个网址
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表示小程序 服务端小程序
之前学习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
安装软件是学习servlet必须迈过的坎;和Mysql一样,当时博主遇到了安装可能出现的所有的问题;真是难啊;这次也不例外,所以专门在这里分享一下解决问题的过程
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 的进程。
前面的关闭线程经常都要使用到所以要记住,就是netstat -ano | findstr 8080
之后关闭服务 taskkill pid id -f就可以;这里我们可以将关闭服务的命令改一个名字,将shutdown改成stop;直接在DOS窗口中就可以执行,不然会和其他的命令冲突
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转发获得资源,返回相应给用户,用户的浏览器上画出相关的页面
SUN公司定义了规范Servelet,创建的目录下可以放入html,css,js等文件。就是在我们创建的项目的目录下,放入的文件名必须为WEB-INF; 这是规范,都是大写,并且中间以-连接;
WEB-INF固定三个文件夹
所以这里就没什么技术含量,直接固定的写
开发的步骤就是编写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>
这样就可以在用户的浏览器访问服务器的动态资源,这里的路径必须以”/“开始,代表的是资源的名称
接下来就是开发动态资源并将结果显示到浏览器中,也就是一个完整的项目,真正让项目得到应用