使用java很多年,一开始的时候很深入的研究了一下javaSE,后来以为对java很了解了,现在发现还有太多的不了解,所以又从javaEE开始研究和总结,目的在于想对java有更深入的理解,也想在网上跟大家交流,如果总结出来的东西对大家又帮助那是更好,谢谢各位朋友关注、指导、交流。
JavaEE体系规范:(未完待续)
1、JSP规范
jsp页面的三大元素:指令、动作、java脚本
1.1、指令
page指令:
page指令指定页面属性,是对页面整体的定义
比如:language、contentType、pageEncoding
include指令
该指令静态包含一个html或jsp页面
taglib指令:
taglib指令用于引用外部标签库
1.2、动作元素
jsp:attribute
jsp:body
jsp:element
jsp:fallback
jsp:forward
jsp:getProperty
jsp:include
jsp:output
jsp:param
jsp:params
jsp:plugin
jsp:setProperty
jsp:userBean
1.3、脚本
声明:<%!%>
表达式:<%=%>
Java脚本:<%%>
2、Servlet规范
3、JDBC规范
3.1、JDBC简介
Jdbc是Java Datebase Connectivity的缩写,它是连接java程序和数据库服务器的纽带。如图所示,jdbc的实现封装了与各种数据库服务通信的细节。Java程序通过jdbc API来访问数据库,有以下优点:
(1)、简化访问数据库的程序代码,无须涉及与数据库服务器通信的细节。
(2)、不依赖于访问数据库平台,同一个java程序可以访问多种数据库服务器。
3.2、接口和类
Driver接口和DriverManager类:前者表示驱动器,后者表示驱动器管理器。
Connection接口:表示数据库连接。
Statement接口:负责执行SQL语句。
PreparedStatement接口:负责执行预准备的SQL语句。????
CallableStatement接口:负责执行SQL存储过程。
ResultSet接口:表示SQL查询语句返回的结果集。
Driver接口和DriverManager类
所有JDBC驱动器都必须实现Driver接口。
DriverManager类用来建立和数据库的连接及管理JDBC驱动器。DriverManager类的方法都是静态的,主要包括以下几种。
- registerDriver(Driver driver):在DriverManager中注册JDBC驱动器。
- getConnection(String url,String user,String pwd):建立和数据库的连接,并返回表示数据库连接的Connection对象。
- setLoginTimeOut(int seconds):设定等待建立数据库连接的超时时间。
- setLogWriter(PrintWriter out):设定输出JDBC日志的PrintWriter对象。
Connection接口
Connection接口代表java程序和数据库的连接,主要包括以下方法:
- getMetaData():返回表示数据库的元数据的DatabaseMetaData对象。元数据包含了描述数据库的相关信息,如数据库中的表结构就是一种元数据。
- createStatement():创建并返回Statement对象。
- prepareStatement(String sql):创建并返回PreparedStatement对象。
Statement接口(执行)
Statement接口提供了3个执行SQL语句的方法:
- execute(String sql):执行各种SQL语句。该方法返回一个boolean类型的值,如果为true,表示所执行的SQL语句具有查询结果,可通过Statement的getResultSet()方法获得这一查询结果。
- executeUpdate(String sql):执行SQL的insert、update、和delete语句。该方法返回一个int类型的值,表示数据库中受该SQL语句影响的记录的数目。
- executeQuery(String sql):执行SQL的select语句。该方法返回一个表示查询结果的ResultSet对象。
PreparedStatement接口
PreparedStatement接口继承了Statement接口,用来执行预准备的SQL语句。在访问数据库时,可能会遇到这样的情况,某条SQL语句被多次执行,仅仅其中的参数不同。
Insert into tb_name(id,name,age,address,email) values(1,’zhxx’,10,’北京人才教育基地’,’zhxx_edu@126.com’);
Insert into tb_name(id,name,age,address,email) values(2,’zh’,11,’轻松学堂’,’zhxx@126.com’);
。。。。。。
Insert into tb_name(id,name,age,address,email) values(?,?,?,?,?);
Jaiewjfwajfeoijwafejewawajfoiwajfoiawjfwajf1wzhxxfj11jfoaefawa@fewajfewajfwj
PreparedStatement的使用步骤如下:
(1)、通过Connection对象的preparedStatement()方法生成PreparedStatement对象。
(2)、调用PreparedStatement的setXXX方法,给参数赋值,占位符。
(3)、执行SQL语句:
ResultSet rs = preStmt.executeQuery();
ResultSet接口
ResultSet接口表示select查询语句得到的结果集。调用ResultSet对象的next方法,可以使游标定位到结果集中的下一条记录。调用ResultSet对象的getXXX()方法,可以获得一条记录中的某个字段的值。
ResultSet接口提供了一下常用的getXXX()方法:
- getString(int columnIndex):返回指定字段的String类型的值,参数columnIndex代表字段的索引。
- getString(String columnName):返回指定字段的String类型的值,参数columnName代表字段的名字。
- getInt(int columnIndex):返回指定字段的int类型的值,参数columnIndex代表字段的索引。
- getInt(String columnName):返回指定字段的int类型的值,参数columnName代表字段的名字。
- getFloat(int columnIndex):返回指定字段的float类型的值,参数columnIndex代表字段的索引。
- getFloat(String columnName):返回指定字段的float类型的值,参数columnName代表字段的名字。
3.3、数据源
JDBC2.0提供了javax.sql.DataSource接口,它负责建立与数据库的连接,当在应用程序中访问数据库时不必写连接数据库的代码,可以直接从数据源获得数据库连接。
数据源与数据库连接池
在数据源中事先建立了多个数据库连接,这些数据库连接保存在连接池(Connection Pool)中.当java程序访问数据库时,只需从连接池中取出空闲状态的数据库连接,当访问数据库结束后,再将数据库连接放回连接池,这样做可以提高访问数据库的效率。
3.4、连接池
常用开源数据库连接池
- 动态代理学习
-
dbcp
- 在Apache官网(http://www.apache.org/)下载一下jar包
commons-dbcp.jar 、commons-logging.jar 、commons-pool.jar
-
c3p0
下载:https://www.mchange.com/projects/c3p0/
使用:https://blog.csdn.net/u013817349/article/details/50847904
-
druid
Druid是Java语言中最好的数据库连接池。Druid能够提供强大的监控和扩展功能。
Druid是一个开源项目,源码托管在github上,源代码仓库地址是 https://github.com/alibaba/druid 。同时每次Druid发布正式版本和快照的时候,都会把源码打包,你可以从上面的下载地址中找到相关版本的源码
下载地址:http://central.maven.org/maven2/com/alibaba/druid/
Druid使用:https://www.cnblogs.com/longshiyVip/p/5117441.html
4、JNDI
5、XML
6、JMS
7、JTA
8、JTS
9、RMI
Java RMI
用于不同虚拟机之间的通信,这些虚拟机可以在不同的主机上、也可以在同一个主机上;一个虚拟机中的对象调用另一个虚拟上中的对象的方法,只不过是允许被远程调用的对象要通过一些标志加以标识。以下编写一个简单的案例:
声明接口:
package com.rmi.server;
import java.rmi.Remote;
import java.rmi.RemoteException;
public interface IHello extends Remote {
String sayHello(String name) throws RemoteException;
public int sum(int a, int b) throws RemoteException;
}
接口实现类;
import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;
public class HelloImpl extends UnicastRemoteObject implements IHello{
protected HelloImpl() throws RemoteException {
super();
}
@Override
public String sayHello(String name) throws RemoteException {
return "hello"+name;
}
@Override
public int sum(int a, int b) throws RemoteException {
return a+b;
}
}
开启服务:
import java.rmi.Naming;
import java.rmi.registry.LocateRegistry;
public class HelloServer {
public static void main(String[] args) {
try {
IHello iHello = new HelloImpl();
LocateRegistry.createRegistry(8888);
Naming.bind("rmi://localhost:8888/iHello", iHello);
System.out.println(">>INFO:远程IHello对象绑定成功!");
} catch(Exception e) {
e.printStackTrace();
}
}
}
10、IDL
11、JavaMail
12、JAF
13、EJB
Python入门好教程:https://edu.csdn.net/course/detail/26732
Python面向对象精讲:https://edu.csdn.net/course/detail/26786
Python案例集锦:https://edu.csdn.net/course/detail/26534