web3出来以后java

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了web3出来以后java相关的知识,希望对你有一定的参考价值。

思维导图:

一、 页面跳转方式

html超链接的方式
javascript方式跳转
window.location.href = "跳转的地址"
java方式跳转
转发
概述
由服务器端进行的页面跳转
方法
(1)获取转发器====》RequestDispatcher rd = request.getRequestDispatcher("/跳转的地址")
(2)实现转发====》转发器对象.forward(request,response);
通常简写:request.getRequestDispatcher("/跳转的地址").forward(request,response);
特点
(1)地址栏不发生变化,显示的是上一个页面的地址
(2)请求次数:只有1次请求,因为转发是服务端行为。
(3)根目录:http://localhost:8080/项目地址/,包含了项目的访问地址
(4)请求域中数据不会丢失
重定向
概述
由浏览器端进行的页面跳转
方法
response.sendRedirect("要跳转的地址");
特点
(1)地址栏:显示新的地址
(2)请求次数:2次
(3)根目录:http://localhost:8080/ 没有项目的名字
(4)请求域中的数据会丢失,因为是2次请求
注意事项
什么时候使用转发,什么时候使用重定向?
如果要保留请求域中的数据,使用转发,否则使用重定向。
以后访问数据库,增删改使用重定向,查询使用转发。
转发或重定向后续的代码是否还会运行?
无论转发或重定向后续的代码都会执行
重定向和转发的区别

二、 JDBC API

主要功能

与数据库建立连接、执行SQL 语句、处理结果
常用对象
DriverManager
依据数据库的不同,管理JDBC驱动
Connection
负责连接数据库并担任传送数据的任务
PreparedStatement
由 Connection 产生、负责执行SQL语句
ResultSet
负责保存Statement执行后所产生的查询结果
java通过jdbc连接Oracle数据库进行交互的步骤
1、加载JDBC驱动
Class.forName(JDBC驱动类);
2、与数据库建立连接
Connection conn=DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:orcl","scott","admin");
3、发送SQL语句,并得到返回结果
4、处理返回结果
5、释放资源

1.response对象

【服务器端回应客户端的请求】
response对象包含响应客户请求的有关信息,但是jsp中很少直接用到它。它是HttpServletResponse类的实例。response对象具有页面作用域,即访问一个页面时,该页面内的response对象只能对这次访问有效,其它页面的response对象对当前页面无效。

3.请求转发与请求重定向
请求重定向:客户端行为,response.sendRedirect(),从本质上讲等同于两次请求,前一次的请求对象不会保存,地址栏的URL地 址会改变。

请求转发:服务器行为,request.getRequestDispatcher().forward(request,response);是一次请求,转发后请求会保存,地址 栏的URL地址不会改变

【生活例子】假设老王去办理某个护照
【重定向】老王先去了A局,A局的人说:“这个事不归我们管,去B局”,然后,你就从A局退了出来,自己乘车去了B局。

【转发】:你去了A局,A局看了以后,知道这个事情其实应该B局来管,但是他没有把你退回来,而是让你坐一会儿,自己到后面办公室联系了B局的人,让他们办好后送了过来。

【案例演示】
regester.jsp(注册界面--用户名和爱好-提交到response.jsp)、response.jsp、request.jsp(接收用户名和爱好)3个页面。

1.在response.jsp页面实现请求重定向:response.sendRedirect(request.jsp)
在request.jsp页面接收用户名和爱好,如果能接收说明前置请求的对象被保存,如果没有,说明是一次新的请求。
【结果】用户名和爱好都是null,地址栏改变了,跳转了request.jsp。(regester.jsp本身是提交给response.jsp去处理的,但是response对象做了一个请求重定向,相当于让客户端发了一个新的请求,然后请求到了request.jsp页面),由于是一次新的请求,上一次的请求无法被保存。

2.在response.jsp页面实现请求转发:
request.getRequestDispatcher("request.jsp").forward(request,response);

【结果】能传递参数,地址栏不会发生改变。

4.javaweb连接Oracle数据库
//javaweb项目连接Oracle数据库步骤如下
//预备步骤
//1.打开Oracle新建数据表,并向表中添加一条数据
//2.将Oracle架包导入项目中---放入lib文件夹中
//3.将架包导入工程;鼠标移到该包上;右键-->build path-->add to build path;

//使用步骤
//1.注册驱动类
Class.forName("oracle.jdbc.driver.OracleDriver");
//2.连接数据库
String url = "jdbc:oracle:thin:@localhost:1521:orcl";
Connection conn = DriverManager.getConnection(url, "scott", "123");
//3.执行sql语句
String sql = "select * from tb_user where uname = ? and upwd = ?";
//4.操作数据
PreparedStatement ps = conn.prepareStatement(sql);
//给占位符设置值
ps.setString(1, username);
ps.setString(2,password);
//返回结果集
ResultSet rs = ps.executeQuery();
//判断结果集
if(rs.next())//如果有下一个值
//转发---
//out.print("<script>alert('登录成功')</script>");
request.getRequestDispatcher("index.jsp").forward(request, response);
else
//重定向---新的请求方式
//out.print("<script>alert('登录失败')</script>");
response.sendRedirect("login.jsp");

//5.关闭连接
rs.close();
ps.close();
conn.close();

jdbc连接数据库的步骤:
准备阶段:
1.编写sql数据表
2.导入指定的架包

步骤如下:
1.加载驱动 ClassName

2.创建连接

String url = "jdbc:sqlserver://localhost:1433;DatabaseName=stu"
Connection conn = DriverManager.getConnection("url","sa","123");

3.创建执行对象

String sql = "select * from student";
prepareStatement ps = conn.prepareStatement(sql);

4.返回一个查询的结果集对象

ResultSet rs = ps.executeQuery();
参考技术A 思维导图:一、 页面跳转方式HTML超链接的方式javascript方式跳转window.location.href = "跳转的地址"java方式跳转转发概述由服务器端进行的页面跳转方法(1)获取转发器====》RequestDispatcher rd = request.getRequestDispatcher("/跳转的地址")(2)实现转发====》转发器对象.forward(request,response);通常简写:request.getRequestDispatcher("/跳转的地址").forward(request,response);特点(1)地址栏不发生变化,显示的是上一个页面的地址(2)请求次数:只有1次请求,因为转发是服务端行为。(3)根目录:http://localhost:8080/项目地址/,包含了项目的访问地址(4)请求域中数据不会丢失重定向概述由浏览器端进行的页面跳转方法response.sendRedirect("要跳转的地址");特点(1)地址栏:显示新的地址(2)请求次数:2次(3)根目录:http://localhost:8080/没有项目的名字(4)请求域中的数据会丢失,因为是2次请求注意事项什么时候使用转发,什么时候使用重定向?如果要保留请求域中的数据,使用转发,否则使用重定向。以后访问数据库,增删改使用重定向,查询使用转发。转发或重定向后续的代码是否还会运行?无论转发或重定向后续的代码都会执行重定向和转发的区别二、 JDBC API主要功能与数据库建立连接、执行SQL 语句、处理结果常用对象DriverManager依据数据库的不同,管理JDBC驱动Connection负责连接数据库并担任传送数据的任务PreparedStatement由 Connection 产生、负责执行SQL语句ResultSet负责保存Statement执行后所产生的查询结果java通过jdbc连接Oracle数据库进行交互的步骤1、加载JDBC驱动Class.forName(JDBC驱动类);2、与数据库建立连接Connection conn=DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:orcl","scott","admin");3、发送SQL语句,并得到返回结果4、处理返回结果5、释放资源1.response对象【服务器端回应客户端的请求】response对象包含响应客户请求的有关信息,但是jsp中很少直接用到它。它是HttpServletResponse类的实例。response对象具有页面作用域,即访问一个页面时,该页面内的response对象只能对这次访问有效,其它页面的response对象对当前页面无效。3.请求转发与请求重定向请求重定向:客户端行为,response.sendRedirect(),从本质上讲等同于两次请求,前一次的请求对象不会保存,地址栏的URL地 址会改变。请求转发:服务器行为,request.getRequestDispatcher().forward(request,response);是一次请求,转发后请求会保存,地址 栏的URL地址不会改变【生活例子】假设老王去办理某个护照【重定向】老王先去了A局,A局的人说:“这个事不归我们管,去B局”,然后,你就从A局退了出来,自己乘车去了B局。【转发】:你去了A局,A局看了以后,知道这个事情其实应该B局来管,但是他没有把你退回来,而是让你坐一会儿,自己到后面办公室联系了B局的人,让他们办好后送了过来。【案例演示】regester.jsp(注册界面--用户名和爱好-提交到response.jsp)、response.jsp、request.jsp(接收用户名和爱好)3个页面。1.在response.jsp页面实现请求重定向:response.sendRedirect(request.jsp)在request.jsp页面接收用户名和爱好,如果能接收说明前置请求的对象被保存,如果没有,说明是一次新的请求。【结果】用户名和爱好都是null,地址栏改变了,跳转了request.jsp。(regester.jsp本身是提交给response.jsp去处理的,但是response对象做了一个请求重定向,相当于让客户端发了一个新的请求,然后请求到了request.jsp页面),由于是一次新的请求,上一次的请求无法被保存。2.在response.jsp页面实现请求转发:request.getRequestDispatcher("request.jsp").forward(request,response);【结果】能传递参数,地址栏不会发生改变。4.javaweb连接Oracle数据库//javaweb项目连接Oracle数据库步骤如下//预备步骤//1.打开Oracle新建数据表,并向表中添加一条数据//2.将Oracle架包导入项目中---放入lib文件夹中//3.将架包导入工程;鼠标移到该包上;右键-->build path-->add to build path;//使用步骤//1.注册驱动类Class.forName("oracle.jdbc.driver.OracleDriver");//2.连接数据库String url = "jdbc:oracle:thin:@localhost:1521:orcl";Connection conn = DriverManager.getConnection(url, "scott", "123");//3.执行sql语句String sql = "select * from tb_user where uname = ? and upwd = ?";//4.操作数据PreparedStatement ps = conn.prepareStatement(sql);//给占位符设置值ps.setString(1, username);ps.setString(2,password);//返回结果集ResultSet rs = ps.executeQuery();//判断结果集if(rs.next())//如果有下一个值//转发---//out.print("<script>alert('登录成功')</script>");request.getRequestDispatcher("index.jsp").forward(request, response);else//重定向---新的请求方式//out.print("<script>alert('登录失败')</script>");response.sendRedirect("login.jsp");//5.关闭连接rs.close();ps.close();conn.close();jdbc连接数据库的步骤:准备阶段:1.编写sql数据表2.导入指定的架包步骤如下:1.加载驱动 ClassName2.创建连接String url = "jdbc:sqlserver://localhost:1433;DatabaseName=stu"Connection conn = DriverManager.getConnection("url","sa","123");3.创建执行对象String sql = "select * from student";prepareStatement ps = conn.prepareStatement(sql);4.返回一个查询的结果集对象ResultSet rs = ps.executeQuery(); 参考技术B 思维导图:一、 页面跳转方式HTML超链接的方式javascript方式跳转window.location.href = "跳转的地址"java方式跳转转发概述由服务器端进行的页面跳转方法(1)获取转发器====》RequestDispatcher rd = request.getRequestDispatcher("/跳转的地址")(2)实现转发====》转发器对象.forward(request,response);通常简写:request.getRequestDispatcher("/跳转的地址").forward(request,response);特点(1)地址栏不发生变化,显示的是上一个页面的地址(2)请求次数:只有1次请求,因为转发是服务端行为。(3)根目录:http://localhost:8080/项目地址/,包含了项目的访问地址(4)请求域中数据不会丢失重定向概述由浏览器端进行的页面跳转方法response.sendRedirect("要跳转的地址");特点(1)地址栏:显示新的地址(2)请求次数:2次(3)根目录:http://localhost:8080/没有项目的名字(4)请求域中的数据会丢失,因为是2次请求注意事项什么时候使用转发,什么时候使用重定向?如果要保留请求域中的数据,使用转发,否则使用重定向。以后访问数据库,增删改使用重定向,查询使用转发。转发或重定向后续的代码是否还会运行?无论转发或重定向后续的代码都会执行重定向和转发的区别二、 JDBC API主要功能与数据库建立连接、执行SQL 语句、处理结果常用对象DriverManager依据数据库的不同,管理JDBC驱动Connection负责连接数据库并担任传送数据的任务PreparedStatement由 Connection 产生、负责执行SQL语句ResultSet负责保存Statement执行后所产生的查询结果java通过jdbc连接Oracle数据库进行交互的步骤1、加载JDBC驱动Class.forName(JDBC驱动类);2、与数据库建立连接Connection conn=DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:orcl","scott","admin");3、发送SQL语句,并得到返回结果4、处理返回结果5、释放资源1.response对象【服务器端回应客户端的请求】response对象包含响应客户请求的有关信息,但是jsp中很少直接用到它。它是HttpServletResponse类的实例。response对象具有页面作用域,即访问一个页面时,该页面内的response对象只能对这次访问有效,其它页面的response对象对当前页面无效。3.请求转发与请求重定向请求重定向:客户端行为,response.sendRedirect(),从本质上讲等同于两次请求,前一次的请求对象不会保存,地址栏的URL地 址会改变。请求转发:服务器行为,request.getRequestDispatcher().forward(request,response);是一次请求,转发后请求会保存,地址 栏的URL地址不会改变【生活例子】假设老王去办理某个护照【重定向】老王先去了A局,A局的人说:“这个事不归我们管,去B局”,然后,你就从A局退了出来,自己乘车去了B局。【转发】:你去了A局,A局看了以后,知道这个事情其实应该B局来管,但是他没有把你退回来,而是让你坐一会儿,自己到后面办公室联系了B局的人,让他们办好后送了过来。【案例演示】regester.jsp(注册界面--用户名和爱好-提交到response.jsp)、response.jsp、request.jsp(接收用户名和爱好)3个页面。1.在response.jsp页面实现请求重定向:response.sendRedirect(request.jsp)在request.jsp页面接收用户名和爱好,如果能接收说明前置请求的对象被保存,如果没有,说明是一次新的请求。【结果】用户名和爱好都是null,地址栏改变了,跳转了request.jsp。(regester.jsp本身是提交给response.jsp去处理的,但是response对象做了一个请求重定向,相当于让客户端发了一个新的请求,然后请求到了request.jsp页面),由于是一次新的请求,上一次的请求无法被保存。2.在response.jsp页面实现请求转发:request.getRequestDispatcher("request.jsp").forward(request,response);【结果】能传递参数,地址栏不会发生改变。4.javaweb连接Oracle数据库//javaweb项目连接Oracle数据库步骤如下//预备步骤//1.打开Oracle新建数据表,并向表中添加一条数据//2.将Oracle架包导入项目中---放入lib文件夹中//3.将架包导入工程;鼠标移到该包上;右键-->build path-->add to build path;//使用步骤//1.注册驱动类Class.forName("oracle.jdbc.driver.OracleDriver");//2.连接数据库String url = "jdbc:oracle:thin:@localhost:1521:orcl";Connection conn = DriverManager.getConnection(url, "scott", "123");//3.执行sql语句String sql = "select * from tb_user where uname = ? and upwd = ?";//4.操作数据PreparedStatement ps = conn.prepareStatement(sql);//给占位符设置值ps.setString(1, username);ps.setString(2,password);//返回结果集ResultSet rs = ps.executeQuery();//判断结果集if(rs.next())//如果有下一个值//转发---//out.print("<script>alert('登录成功')</script>");request.getRequestDispatcher("index.jsp").forward(request, response);else//重定向---新的请求方式//out.print("<script>alert('登录失败')</script>");response.sendRedirect("login.jsp");//5.关闭连接rs.close();ps.close();conn.close();jdbc连接数据库的步骤:准备阶段:1.编写sql数据表2.导入指定的架包步骤如下:1.加载驱动 ClassName2.创建连接String url = "jdbc:sqlserver://localhost:1433;DatabaseName=stu"Connection conn = DriverManager.getConnection("url","sa","123");3.创建执行对象String sql = "select * from student";prepareStatement ps = conn.prepareStatement(sql);4.返回一个查询的结果集对象ResultSet rs = ps.executeQuery(); 参考技术C packageName 对应的是生成文件后java文件存放的包名,就是类的包名

nativeJavaType 对应的是本机类型是否是JAVA类型

outputFormat 对应的是生成文件后的文件类型

abiSourceFiles

面霸系列 - 12022年java初级面试题

2022初级java
难度:★
作者建议:需要理解,用转换为自己的语言表达出来

1.什么是cookie?session和cookie有什么区别?

cookie是Web服务器发送给浏览器的一块信息。浏览器会在本地文件中给每一个Web服务器存储cookie。以后浏览器在给特定的Web服务器发请求的时候,同时会发送所有为该服务器存储的cookie。下面列出了session和cookie的区别:

无论客户端浏览器做怎么样的设置,session都应该能正常工作。客户端可以选择禁用cookie,但是,session仍然是能够工作的,因为客户端无法禁用服务端的session。在存储的数据量方面session和cookies也是不一样的。session能够存储任意的Java对象,cookie只能存储String类型的对象。

2.JDK和JRE的区别是什么?

Java运行时环境(JRE)是将要执行Java程序的Java虚拟机。它同时也包含了执行applet需要的浏览器插件。Java开发工具包(JDK)是完整的Java软件开发包,包含了JRE,编译器和其他的工具(比如:JavaDoc,Java调试器),可以让开发者开发、编译、执行Java应用程序。

3.”static”关键字是什么意思?Java中是否可以覆盖(override)一个private或者是static的方法?

“static”关键字表明一个成员变量或者是成员方法可以在没有所属的类的实例变量的情况下被访问。

Java中static方法不能被覆盖,因为方法覆盖是基于运行时动态绑定的,而static方法是编译时静态绑定的。static方法跟类的任何实例都不相关,所以概念上不适用。

4.是否可以在static环境中访问非static变量?

static变量在Java中是属于类的,它在所有的实例中的值是一样的。当类被Java虚拟机载入的时候,会对static变量进行初始化。如果你的代码尝试不用实例来访问非static的变量,编译器会报错,因为这些变量还没有被创建出来,还没有跟任何实例关联上。

5.Java支持的数据类型有哪些?什么是自动拆装箱?

Java语言支持的8中基本数据类型是:

byte、short、int、long、float、double、boolean、char自动装箱是Java编译器在基本数据类型和对应的对象包装类型之间做的一个转化。比如:把int转化成Integer,double转化成double,等等。反之就是自动拆箱。

6.Java中的方法覆盖(Overriding)和方法重载(Overloading)是什么意思?

Java中的方法重载发生在同一个类里面两个或者是多个方法的方法名相同但是参数不同的情况。与此相对,方法覆盖是说子类重新定义了父类的方法。方法覆盖必须有相同的方法名,参数列表和返回类型。覆盖者可能不会限制它所覆盖的方法的访问。

7.Java中,什么是构造函数?什么是构造函数重载?什么是复制构造函数?

当新对象被创建的时候,构造函数会被调用。每一个类都有构造函数。在程序员没有给类提供构造函数的情况下,Java编译器会为这个类创建一个默认的构造函数。

Java中构造函数重载和方法重载很相似。可以为一个类创建多个构造函数。每一个构造函数必须有它自己唯一的参数列表。

Java不支持像C++中那样的复制构造函数,这个不同点是因为如果你不自己写构造函数的情况下,Java不会创建默认的复制构造函数。

8.Java支持多继承么?

不支持,Java不支持多继承。每个类都只能继承一个类,但是可以实现多个接口。

9.接口和抽象类的区别是什么?

Java提供和支持创建抽象类和接口。它们的实现有共同点,不同点在于:

接口中所有的方法隐含的都是抽象的。而抽象类则可以同时包含抽象和非抽象的方法。类可以实现很多个接口,但是只能继承一个抽象类类如果要实现一个接口,它必须要实现接口声明的所有方法。但是,类可以不实现抽象类声明的所有方法,当然,在这种情况下,类也必须得声明成是抽象的。抽象类可以在不提供接口方法实现的情况下实现接口。Java接口中声明的变量默认都是final的。抽象类可以包含非final的变量。Java接口中的成员函数默认是public的。抽象类的成员函数可以是private,protected或者是public。接口是绝对抽象的,不可以被实例化。抽象类也不可以被实例化,但是,如果它包含main方法的话是可以被调用的。也可以参考JDK8中抽象类和接口的区别

10.什么是值传递和引用传递?

对象被值传递,意味着传递了对象的一个副本。因此,就算是改变了对象副本,也不会影响源对象的值。

对象被引用传递,意味着传递的并不是实际的对象,而是对象的引用。因此,外部对引用对象所做的改变会反映到所有的对象上。

11.进程和线程的区别是什么?

进程是执行着的应用程序,而线程是进程内部的一个执行序列。一个进程可以有多个线程。线程又叫做轻量级进程。

12.创建线程有几种不同的方式?你喜欢哪一种?为什么?

有三种方式可以用来创建线程:

继承Thread类实现Runnable接口应用程序可以使用Executor框架来创建线程池实现Runnable接口这种方式更受欢迎,因为这不需要继承Thread类。在应用设计中已经继承了别的对象的情况下,这需要多继承(而Java不支持多继承),只能实现接口。同时,线程池也是非常高效的,很容易实现和使用。

13.概括的解释下线程的几种可用状态。

线程在执行过程中,可以处于下面几种状态:

就绪(Runnable):线程准备运行,不一定立马就能开始执行。运行中(Running):进程正在执行线程的代码。等待中(Waiting):线程处于阻塞的状态,等待外部的处理结束。睡眠中(Sleeping):线程被强制睡眠。I/O阻塞(Blocked on I/O):等待I/O操作完成。同步阻塞(Blocked on Synchronization):等待获取锁。死亡(Dead):线程完成了执行。

14.hashCode()和equals()方法的重要性体现在什么地方?

Java中的HashMap使用hashCode()和equals()方法来确定键值对的索引,当根据键获取值的时候也会用到这两个方法。如果没有正确的实现这两个方法,两个不同的键可能会有相同的hash值,因此,可能会被集合认为是相等的。而且,这两个方法也用来发现重复元素。所以这两个方法的实现对HashMap的精确性和正确性是至关重要的。

15.HashMap和Hashtable有什么区别?

HashMap和Hashtable都实现了Map接口,因此很多特性非常相似。但是,他们有以下不同点:

HashMap允许键和值是null,而Hashtable不允许键或者值是null。Hashtable是同步的,而HashMap不是。因此,HashMap更适合于单线程环境,而Hashtable适合于多线程环境。HashMap提供了可供应用迭代的键的集合,因此,HashMap是快速失败的。另一方面,Hashtable提供了对键的列举(Enumeration)。一般认为Hashtable是一个遗留的类。

16.数组(Array)和列表(ArrayList)有什么区别?什么时候应该使用Array而不是ArrayList?

下面列出了Array和ArrayList的不同点:

Array可以包含基本类型和对象类型,ArrayList只能包含对象类型。Array大小是固定的,ArrayList的大小是动态变化的。ArrayList提供了更多的方法和特性,比如:addAll(),removeAll(),iterator()等等。对于基本类型数据,集合使用自动装箱来减少编码工作量。但是,当处理固定大小的基本数据类型的时候,这种方式相对比较慢。27.ArrayList和LinkedList有什么区别?

ArrayList和LinkedList都实现了List接口,他们有以下的不同点:

ArrayList是基于索引的数据接口,它的底层是数组。它可以以O(1)时间复杂度对元素进行随机访问。与此对应,LinkedList是以元素列表的形式存储它的数据,每一个元素都和它的前一个和后一个元素链接在一起,在这种情况下,查找某个元素的时间复杂度是O(n)。相对于ArrayList,LinkedList的插入,添加,删除操作速度更快,因为当元素被添加到集合任意位置的时候,不需要像数组那样重新计算大小或者是更新索引。LinkedList比ArrayList更占内存,因为LinkedList为每一个节点存储了两个引用,一个指向前一个元素,一个指向下一个元素。也可以参考ArrayList vs. LinkedList。

17.HashSet和TreeSet有什么区别?

HashSet是由一个hash表来实现的,因此,它的元素是无序的。add(),remove(),contains()方法的时间复杂度是O(1)。

另一方面,TreeSet是由一个树形的结构来实现的,它里面的元素是有序的。因此,add(),remove(),contains()方法的时间复杂度是O(logn)。

18.数据库连接池是什么意思?

像打开关闭数据库连接这种和数据库的交互可能是很费时的,尤其是当客户端数量增加的时候,会消耗大量的资源,成本是非常高的。可以在应用服务器启动的时候建立很多个数据库连接并维护在一个池中。连接请求由池中的连接提供。在连接使用完毕以后,把连接归还到池中,以用于满足将来更多的请求。

19.什么是Servlet?

Servlet是用来处理客户端请求并产生动态网页内容的Java类。Servlet主要是用来处理或者是存储HTML表单提交的数据,产生动态内容,在无状态的HTTP协议下管理状态信息。

20.说一下Servlet的体系结构。

所有的Servlet都必须要实现的核心的接口是javax.servlet.Servlet。每一个Servlet都必须要直接或者是间接实现这个接口,或者是继承javax.servlet.GenericServlet或者javax.servlet.http.HTTPServlet。最后,Servlet使用多线程可以并行的为多个请求服务。

21.解释下Servlet的生命周期。

对每一个客户端的请求,Servlet引擎载入Servlet,调用它的init()方法,完成Servlet的初始化。然后,Servlet对象通过为每一个请求单独调用service()方法来处理所有随后来自客户端的请求,最后,调用Servlet(译者注:这里应该是Servlet而不是server)的destroy()方法把Servlet删除掉。

22.doGet()方法和doPost()方法有什么区别?

doGet:GET方法会把名值对追加在请求的URL后面。因为URL对字符数目有限制,进而限制了用在客户端请求的参数值的数目。并且请求中的参数值是可见的,因此,敏感信息不能用这种方式传递。

doPOST:POST方法通过把请求参数值放在请求体中来克服GET方法的限制,因此,可以发送的参数的数目是没有限制的。最后,通过POST请求传递的敏感信息对外部客户端是不可见的。

客户端请求的参数值的数目。并且请求中的参数值是可见的,因此,敏感信息不能用这种方式传递。

doPOST:POST方法通过把请求参数值放在请求体中来克服GET方法的限制,因此,可以发送的参数的数目是没有限制的。最后,通过POST请求传递的敏感信息对外部客户端是不可见的。

以上是关于web3出来以后java的主要内容,如果未能解决你的问题,请参考以下文章

JavaJava_10 常量与变量

细说JavaJava变量初始化顺序

Web3.py - 即使安装了 web3,也无法导入“web3”

运行javac 报告javac不是内部或外部命令,但是运行javajava-version正常

web3.js--getBalance到web3.utils.fromWei,将值存储在一个变量中,用于表中

NUAACTF2020 - Web2 & Web3