JDBC操作数据库和Tomcat的配置
JDBC
Java数据库连接技术(Java DataBase Connectivity),能实现Java程序对各种数据库的访
问
由一组使用Java语言编写的类和接口(JDBC API)组成,它们位于java.sql以及javax.sql中
JDBC访问数据库的步骤
(1)Class.forName()加载驱动
(2)DriverManager获取Connection连接
(3)创建Statement执行SQL语句
(4)返回ResultSet查询结果
(5)释放资源
示例一:查询数据库MySchool中的student信息,添加两条学生信息,并重新创建一个数据库。
代码展示:
public class student {
private String StudentNo;
private String StudentName;
private String Sex;
private String GradeID;
private String Phone;
private String Address;
private String Emaill;
private String IdentityCard;
public String getStudentNo() {
return StudentNo;
}
public void setStudentNo(String studentNo) {
StudentNo = studentNo;
}
public String getStudentName() {
return StudentName;
}
public void setStudentName(String studentName) {
StudentName = studentName;
}
public String getSex() {
return Sex;
}
public void setSex(String sex) {
Sex = sex;
}
public String getGradeID() {
return GradeID;
}
public void setGradeID(String gradeID) {
GradeID = gradeID;
}
public String getPhone() {
return Phone;
}
public void setPhone(String phone) {
Phone = phone;
}
public String getAddress() {
return Address;
}
public void setAddress(String address) {
Address = address;
}
public String getEmaill() {
return Emaill;
}
public void setEmaill(String emaill) {
Emaill = emaill;
}
public String getIdentityCard() {
return IdentityCard;
}
public void setIdentityCard(String identityCard) {
IdentityCard = identityCard;
}
@Override
public String toString() {
return "student{" +
"StudentNo='" + StudentNo + '\'' +
", StudentName='" + StudentName + '\'' +
", Sex='" + Sex + '\'' +
", GradeID='" + GradeID + '\'' +
", Phone='" + Phone + '\'' +
", Address='" + Address + '\'' +
", Emaill='" + Emaill + '\'' +
", IdentityCard='" + IdentityCard + '\'' +
'}';
}
}
import java.sql.*;
public class BaseDao {
public Connection getCon()throws Exception{
//加载驱动
Class.forName("com.mysql.jdbc.Driver");
String url="jdbc:mysql://192.168.136.30:3306/MySchool";
//驱动管理器来获取连接
Connection conn = DriverManager.getConnection(url, "root", "ok");
return conn;
}
// public void showTables() throws Exception {
// //获取连接
// Connection conn = getCon();
// //通过连接获取Statement对象
// Statement stmt = conn.createStatement();
// String sql = "show tables";//定义好sql语句
// ResultSet rs = stmt.executeQuery(sql);//获取查询语句的结果集
// while(rs.next()){//对结果集遍历
// System.out.println(rs.getString("Tables_in_MySchool"));
// }
// }
public ResultSet query(String sql,int id,String name)throws Exception{
//获取连接
Connection conn = getCon();
//通过连接获取Statement对象
// Statement stmt = conn.createStatement();
// ResultSet rs = stmt.executeQuery(sql);
PreparedStatement pst = conn.prepareStatement(sql);
pst.setObject(1,id);
pst.setObject(2,name);
ResultSet rs = pst.executeQuery();
return rs;
}
public int update(String sql)throws Exception{
//获取连接
Connection con = getCon();
//通过连接获取Statement对象
Statement stmt = con.createStatement();
int num = stmt.executeUpdate(sql);
return num;
}
public void close(Connection conn,Statement stmt,ResultSet rs) throws SQLException {
if (conn != null) {
conn.close();
}
if (stmt != null) {
stmt.close();
}
if (rs != null) {
rs.close();
}
}
}
import cn.kgc.kb09.entity.student;
import org.junit.Test;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import static org.junit.Assert.*;
public class BaseDaoTest {
@Test
public void getCon() throws Exception {
BaseDao dao = new BaseDao();
Connection conn = dao.getCon();
System.out.println(conn);
dao.close(conn,null,null);
}
// @Test
// public void showTables() throws Exception {
// BaseDao dao = new BaseDao();
// dao.showTables();
// }
@Test
public void query() throws Exception {
BaseDao dao = new BaseDao();
String sql = "select * from student where StudentNo=? or StudentName like ?";
ResultSet rs = dao.query(sql,1014,"李%");
ArrayList<student> stuList = new ArrayList<>();
while (rs.next()) {
student s=new student();
s.setStudentNo(rs.getString("StudentNo"));
s.setStudentName(rs.getString("StudentName"));
s.setPhone(rs.getString("Phone"));
s.setSex(rs.getString("Sex"));
s.setGradeID(rs.getString("GradeID"));
s.setAddress(rs.getString("Address"));
s.setEmaill(rs.getString("Emaill"));
s.setIdentityCard(rs.getString("IDentityCard"));
stuList.add(s);
}
for (student student : stuList) {
System.out.println(student);
}
dao.close(null,null,rs);
}
@Test
public void update() throws Exception {
BaseDao dao = new BaseDao();
String sql = "insert into student(StudentNo,StudentName,Sex,Phone,Address)" +
"values(1037,'三灯','男','788441','北京'),(1060,'四灯','女','47774444','日本')";
int num = dao.update(sql);
System.out.println(num > 0 ? "插入成功" : "插入失败");
}
//使用jdbc创建一个库,切换到这个库
@Test
public void testDo()throws Exception{
BaseDao dao = new BaseDao();
Connection con = dao.getCon();
Statement stmt = con.createStatement();
String creatDatabase = "create database if not exists userControl";
stmt.execute(creatDatabase);
String changeDatabase = "use userControl";
stmt.execute(changeDatabase);
String createTable = "create table if not exists " +
"user_info(uid int(11) auto_increment primary key," +
"uname varchar(30),password varchar(30))";
stmt.execute(createTable);
}
}
结果展示:
SQL注入(一种安全问题):
解决方法:不使用statement而使用preparedStatement
在进行JDBC连接数据库之前还需导入jar包和Tomcat的安装
Tomcat
开源小型web服务器 ,完全免费,主要用于中小型web项目,只支持Servlet和JSP 等少
量javaee规范(就是JavaWeb编程接口)
Java Web
说到Tomcat,就不得不提到Java Web。
Java web,是用java技术来解决相关web互联网领域的技术的总称。web包括:web服务器和web客户端两部分。
java在最早web客户端的应用有java applet程序,不过这种技术在很久之前就已经被淘汰了。java在服务器端的应用非常丰富,
比如Servlet,jsp和第三方框架等等。java技术对web领域的发展注入了强大的动力
简单的说,就是使用java语言实现浏览器可以访问的程序内容。称之为Java Web。
B/S架构:Browser/Server
C/S架构:Client/Server
web资源分类
所谓web资源即放在Internet网上供外界访问的文件或程序,又根据它们呈现的效果及原理不同,将它们划分为静态资源和动态资源。
静态web资源:固定不变数据文件(静态网页 HTML、CSS文件、文本、音频、视频)
静态web技术:HTML+CSS+JavaScript
动态web资源:一段服务程序,运行后,生成的数据文件
动态web技术:servlet,jsp,php, .net ,ruby、python等等
常见的web服务器
Tomcat:由Apache组织提供的一种Web服务器,提供对jsp和Servlet的支持。它是一种轻量级的javaWeb容器(服务器),也是当前应用最广的JavaWeb服务器(免费)。
Jboss:是一个遵从JavaEE规范的、开放源代码的、纯Java的EJB服务器,它支持所有的JavaEE规范(免费)。
GlassFish: 由Oracle公司开发的一款JavaWeb服务器,是一款强健的商业服务器,达到产品级质量(应用很少,收费)。
Resin:是CAUCHO公司的产品,是一个非常流行的应用服务器,对servlet和JSP提供了良好的支持,性能也比较优良,resin自身采用JAVA语言开发(收费,应用比较多)。
WebLogic:是Oracle公司的产品,是目前应用最广泛的Web服务器,支持JavaEE规范,而且不断的完善以适应新的开发要求,适合大型项目(收费,用的不多,适合大公司)。
Tomcat下载及环境配置
下载链接:http://tomcat.apache.org
下载后的包:apache-tomcat-8.5.45.zip
解压缩后的包:apache-tomcat-8.5.45
Tomcat安装目录介绍:
bin:可以执行文件。
conf:tomcat服务器的配置文件
lib:tomcat启动后需要依赖的jar包
logs:tomcat工作之后的日志文件
webapps:是tomcat布暑工程的目录。
work:jsp文件在被翻译之后,保存在当前这个目录下,session对象被序列化之后保存的位置
配置环境:
(1)右击我的电脑,打开属性
(2)点击高级系统设置
(3)点击环境变量
(4)点击下面的系统变量新建
(5)变量名:CATALINA_HOME
(6)变量值就是解压路径名:D:\1\apache-tomcat-8.5.45
(7)点击三次确定,环境配置就完成了。
启动Tomcat:
进入Tomcat目录下的bin文件
找到startup.bat文件,双击打开
如果Tomcat控制台出现中文乱码问题,解决办法:
1.打开你安装Tomcat的所在目录
2. 打开后选择conf目录。
将里面的logging.properties文件用编辑器打开,
打开后在47行找到:
java.util.logging.ConsoleHandler.encoding = UTF-8
注释掉,修改为:
java.util.logging.ConsoleHandler.encoding = GBK;
重新启动start.bat就可以了。
出现以下界面就代表你的Tomcat启动成功了:
测试Tomcat是否启动成功:
在浏览器地址栏输入http://locathost:8080/
若出现下图界面,则启动成功:
到这一步的Tomcat已成功安装完成了。