赞
踩
哈喽~大家好,这次我们来看看 JDBC 如何 连接 MySQL.
号外号外,我最近发现了一个非常棒的人工智能学习网站,它的内容通俗易懂,风趣幽默,让人印象深刻。我想和大家分享这个网站,点击链接即可访问。
目录
首先如何下载安装 MySQL (链接),如何下载安装 SQLyog (链接),以及怎样下载 mysql-connector-java.jar(链接),可以看看这三位大佬的,这里操作数据库用的是 SQLyog 这款软件。
好了之后,我们用 idea 创建项目,记得要勾选 Web应用程序。
然后将 mysql-connector-java.jar 放入在 WEB - INF 里面的 lib 里面(如果没有就自己创建一个,记得要打包文件)
JDBC 是 Java DataBase Connectivity (Java 数据连接)技术的简称,是一种可用于执行 SQL 语句的 Java API。它由一些 java 语言编写的类和接口组成;程序员通过使用 jdbc 可以方便地将 SQL 语句传送给几乎任何一种数据库。
(1) 与数据库建立连接。
(2) 向数据库发送 SQL 语句并执行这些语句。
(3) 处理数据返回的结果。
(1) Driver 接口:加载驱动程序。
(2) DriverManager 类:装人所需的 JDBC 驱动程序,编程时调用它的方法来创建连接。
(3) Connection 接口:编程时使用该类对象创建 Statement 对象。
(4) Statement 接口:编程时使用该类对象得到 ResultSet 对象。
(5) ResultSet 类:负责保存 Statement 执行后所产生的查询结果。
工作原理图

右击 root@localhost 创建 db1 (注:基字符集一定要 uft8,别问为什么,本人因为这被折磨了半小时)输入名称 user
或者用 sql 语句创建
- CREATE DATABASE db1;
-
- USE db1;
-
- CREATE TABLE `user`(
- `id` INT,
- `name` VARCHAR(30)
- );
-
- INSERT INTO `user` VALUES (1,'张一'),(2,'张二'),(3,'张三'),(4,'张四'),(5,'张五');
Class.forName("com.mysql.cj.jdbc.Driver");
Connection com = DriverManager.getConnection("jdbc:mysql://10.16.158.90:3306/db1", "root", "123456");
Statement stat = com.createStatement();
- String sql = "SELECT * FROM user";
- ResultSet rs = stat.executeQuery(sql);
- while (rs.next()){
- System.out.println(rs.getInt("id") + "\t" + rs.getString("name"));
- }
- com.close();
- stat.close();
- com.close();
代码连接起来
- package com.text.jdbc;
-
- import java.sql.*;
-
- public class jbdc {
- public static void main(String[] args) throws Exception {
-
- Class.forName("com.mysql.cj.jdbc.Driver");
- Connection com = DriverManager.getConnection("jdbc:mysql://10.16.158.90:3306/db1", "root", "123456");
- // DriverManager 注册驱动
- // Connection 数据库连接对象 url(指定连接的路径 语法:“jdbc:mysql://ip地址:端口号/数据库名称”)
- Statement stat = com.createStatement();
- //执行 sql 语句的对象
- String sql = "SELECT * FROM user";
- ResultSet rs = stat.executeQuery(sql);
- // 执行 增删改查 (DML)语句用 int executeUpdate(Sting sql);
- // 执行 DQL 语句 ResultSet executeQuery(String sql);
- // 对象释放 void close();
- while (rs.next()){
- System.out.println(rs.getInt("id") + "\t" + rs.getString("name"));
- }
-
- com.close();
- stat.close();
- com.close();
- }
- }
这里有个小细节,在步骤一中,注册驱动那,如果忘了驱动名或者敲错了,可以在 lib -> mysql-connector-java.jar -> jdbc -> Driver 里面查看
点击运行,控制台读取数据库的数据,完成连接。
首先我们创建好数据库(名为db1)数据表(名为student),并添加好数据 (这是我们的总表),如图:
在前面我们用 jdbc 类 打印出所有的数据表信息,这里我们换一种方式,升级版
这里我们创建 controller包(里面有 StudentController 类)、dao包(里面有 StudentDao 接口、StudentDaoImpl 类)、daomian 包(里面有 Student 类)、service 包(里面有 StudentService 接口、StudentServiceImpl 类),如图,并写入代码:
StudentController 类:
- package com.inxzw.domain.controller;
-
- import com.inxzw.domain.domain.Student;
- import com.inxzw.domain.service.StudentService;
- import com.inxzw.domain.service.StudentServiceImpl;
- import org.testng.annotations.Test;
-
- import java.util.ArrayList;
-
- public class StudentController {
-
- private StudentService service = new StudentServiceImpl();
-
- @Test
- public void findAll(){
- ArrayList<Student> list = service.findAll();
- for (Student stu : list){
- System.out.println(stu);
- }
- }
-
- public void findById(){
-
- }
-
- }
StudentDao 接口:
- package com.inxzw.domain.dao;
-
- import com.inxzw.domain.domain.Student;
-
- import java.util.ArrayList;
-
- public interface StudentDao {
-
- // 查询所有学生信息
- public abstract ArrayList<Student> findAll();
- //获取id
- public abstract Student findById(Integer id);
- // 新增信息
- public abstract int insert(Student stu);
- // 修改信息
- public abstract int update(Student stu);
- // 删除信息
- public abstract int delete(Integer id);
-
- }
StudentDaoImpl类:
- package com.inxzw.domain.dao;
-
- import com.inxzw.domain.domain.Student;
-
- import java.sql.*;
- import java.util.ArrayList;
- import java.util.Date;
-
- public class StudentDaoImpl implements StudentDao{
-
- @Override
- public ArrayList<Student> findAll(){
-
- Connection com = null;
- Statement stat = null;
- ResultSet rs = null;
-
- ArrayList<Student> list = new ArrayList<>();
- try {
- Class.forName("com.mysql.cj.jdbc.Driver");
- com = DriverManager.getConnection("jdbc:mysql://10.16.158.90:3306/db1", "root", "123456");
- stat = com.createStatement();
- String sql = "SELECT * FROM student";
- rs = stat.executeQuery(sql);
-
- while (rs.next()){
- // System.out.println(rs.getInt("id") + "\t" + rs.getString("name"));
-
- Integer sid = rs.getInt("sid");
- String name = rs.getString("name");
- Integer age = rs.getInt("age");
- Date birthday = rs.getDate("birthday");
-
- Student stu = new Student(sid,name,age,birthday);
- list.add(stu);
-
- }
-
- }catch (Exception e){
- e.printStackTrace();
- }finally {
- if (com != null)
- {
- try {
- com.close();
- } catch (SQLException e) {
- e.printStackTrace();
- }
- }
-
- if (stat != null)
- {
- try {
- stat.close();
- } catch (SQLException e) {
- e.printStackTrace();
- }
- }
-
- if (rs != null)
- {
- try {
- rs.close();
- } catch (SQLException e) {
- e.printStackTrace();
- }
- }
- }
- return list;
- }
-
- @Override
- public Student findById(Integer id) {
- return null;
- }
-
- @Override
- public int insert(Student stu) {
- return 0;
- }
-
- @Override
- public int update(Student stu) {
- return 0;
- }
-
- @Override
- public int delete(Integer id) {
- return 0;
- }
-
- }
Student 类:
- package com.inxzw.domain.domain;
-
- import java.util.Date;
-
- public class Student {
- private Integer sid;
- private String name;
- private Integer age;
- private Date birthday;
-
-
- public Student(Integer sid, String name, Integer age, Date birthday) {
- this.sid = sid;
- this.name = name;
- this.age = age;
- this.birthday = birthday;
- }
-
- public Integer getSid() {
- return sid;
- }
-
- public void setSid(Integer sid) {
- this.sid = sid;
- }
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- public Integer getAge() {
- return age;
- }
-
- public void setAge(Integer age) {
- this.age = age;
- }
-
- public Date getBirthday() {
- return birthday;
- }
-
- public void setBirthday(Date birthday) {
- this.birthday = birthday;
- }
-
- @Override
- public String toString() {//打印
- return "Student{" +
- "sid=" + sid +
- ", name='" + name + '\'' +
- ", age=" + age +
- ", birthday=" + birthday +
- '}';
- }
- }
StudentService 接口:
- package com.inxzw.domain.service;
-
- import com.inxzw.domain.domain.Student;
-
- import java.util.ArrayList;
-
- public interface StudentService {
-
- public abstract ArrayList<Student> findAll();
-
- public abstract Student findById(Integer id);
-
- public abstract int insert(String stu);
-
- public abstract int update(Student stu);
-
- public abstract int delete(Integer id);
-
- }
StudentServiceImpl 类:
- package com.inxzw.domain.service;
-
- import com.inxzw.domain.dao.StudentDao;
- import com.inxzw.domain.dao.StudentDaoImpl;
- import com.inxzw.domain.domain.Student;
-
- import java.util.ArrayList;
-
- public class StudentServiceImpl implements StudentService{
-
- private StudentDao dao = new StudentDaoImpl();
-
- public ArrayList<Student> findAll(){
- return dao.findAll();
- }
-
- public Student findById(Integer id){
- return null;
- }
-
- @Override
- public int insert(String stu) {
- return 0;
- }
-
- @Override
- public int update(Student stu) {
- return 0;
- }
-
- @Override
- public int delete(Integer id) {
- return 0;
- }
-
- }
在 StudentController 类(控制类) ,运行 findAll() ,记得要加 @Text ,点击运行。完成查询所有信息。
我们可以通过 id 来获取属性,eg:通过 id 为 5 来查询元组。代码如下:
StudentDaoImpl 类:
- public Student findById(Integer id) {
-
- Student stu = new Student();
- Connection com = null;
- Statement stat = null;
- ResultSet rs = null;
-
- ArrayList<Student> list = new ArrayList<>();
- try {
- Class.forName("com.mysql.cj.jdbc.Driver");
- com = DriverManager.getConnection("jdbc:mysql://10.16.158.90:3306/db1", "root", "123456");
- stat = com.createStatement();
- String sql = "SELECT * FROM student WHERE sid = '"+id+"' ";
- rs = stat.executeQuery(sql);
-
- while (rs.next()){
- // System.out.println(rs.getInt("id") + "\t" + rs.getString("name"));
-
- Integer sid = rs.getInt("sid");
- String name = rs.getString("name");
- Integer age = rs.getInt("age");
- Date birthday = rs.getDate("birthday");
-
- stu.setSid(sid);
- stu.setName(name);
- stu.setAge(age);
- stu.setBirthday(birthday);
- }
-
- }catch (Exception e){
- e.printStackTrace();
- }finally {
- if (com != null)
- {
- try {
- com.close();
- } catch (SQLException e) {
- e.printStackTrace();
- }
- }
-
- if (stat != null)
- {
- try {
- stat.close();
- } catch (SQLException e) {
- e.printStackTrace();
- }
- }
-
- if (rs != null)
- {
- try {
- rs.close();
- } catch (SQLException e) {
- e.printStackTrace();
- }
- }
- }
- return stu;
- }
StudentServiceImpl 类:
- public Student findById(Integer id){
- return dao.findById(id);
- }
StudentController 类:
- public void findById(){
- Student stu = service.findById(4);//查询3号记录
- System.out.println(stu);
- }
点击运行,完成查询。
StudentDaoImpl 类:
- @Override
- public int insert(Student stu) {
-
- Connection com = null;
- Statement stat = null;
- int result = 0;
-
- try {
- Class.forName("com.mysql.cj.jdbc.Driver");
- com = DriverManager.getConnection("jdbc:mysql://10.16.158.90:3306/db1", "root", "123456");
- stat = com.createStatement();
-
- Date d = stu.getBirthday();
- SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
- String birthday = sdf.format(d);
-
- String sql = "INSERT INTO student VALUES ('"+stu.getSid()+"','"+stu.getName()+"','"+stu.getAge()+"','"+birthday+"')";
- result = stat.executeUpdate(sql);
-
- }catch (Exception e){
- e.printStackTrace();
- }finally {
- if (com != null)
- {
- try {
- com.close();
- } catch (SQLException e) {
- e.printStackTrace();
- }
- }
-
- if (stat != null)
- {
- try {
- stat.close();
- } catch (SQLException e) {
- e.printStackTrace();
- }
- }
- }
- return result;
- }
StudentServiceImpl 类:
- public int insert(Student stu) {
- return dao.insert(stu);
- }
StudentController 类:
- public void insert(){
- Student stu = new Student(9, "张九", 29, new Date());
- int result = service.insert(stu);
-
- if (result != 0){
- System.out.println("添加成功");
- }else {
- System.out.println("添加失败");
- }
- }
点击运行,显示出添加成功,我们用 findAll() 来查看表信息,完成添加。
StudentDaoImpl 类:
- public int update(Student stu) {
- Connection com = null;
- Statement stat = null;
- int result = 0;
-
- try {
- Class.forName("com.mysql.cj.jdbc.Driver");
- com = DriverManager.getConnection("jdbc:mysql://10.16.158.90:3306/db1", "root", "123456");
- stat = com.createStatement();
-
- Date d = stu.getBirthday();
- SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
- String birthday = sdf.format(d);
-
- String sql = "UPDATE student SET sid = '"+stu.getSid()+"', name = '"+stu.getName()+"', age = '"+stu.getAge()+"',birthday = '"+birthday+"' WHERE sid = '"+stu.getSid()+"'";
- result = stat.executeUpdate(sql);
-
- }catch (Exception e){
- e.printStackTrace();
- }finally {
- if (com != null)
- {
- try {
- com.close();
- } catch (SQLException e) {
- e.printStackTrace();
- }
- }
-
- if (stat != null)
- {
- try {
- stat.close();
- } catch (SQLException e) {
- e.printStackTrace();
- }
- }
- }
- return result;
- }
StudentServiceImpl 类:
- public int update(Student stu) {
- return dao.update(stu);
- }
StudentController 类:
- @Test
- public void update(){
- Student stu = service.findById(5);
-
- stu.setName("张五点五");
-
- int result = service.update(stu);
- if (result != 0){
- System.out.println("修改成功");
- }else {
- System.out.println("修改失败");
- }
- }
点击运行,显示出修改成功,我们用 findAll() 来查看表信息,完成修改。
StudentDaoImpl 类:
- public int delete(Integer id) {
- Connection com = null;
- Statement stat = null;
- int result = 0;
-
- try {
- Class.forName("com.mysql.cj.jdbc.Driver");
- com = DriverManager.getConnection("jdbc:mysql://10.16.158.90:3306/db1", "root", "123456");
- stat = com.createStatement();
-
- String sql = "DELETE FROM student WHERE sid = '"+id+"'";
- result = stat.executeUpdate(sql);
-
- }catch (Exception e){
- e.printStackTrace();
- }finally {
- if (com != null)
- {
- try {
- com.close();
- } catch (SQLException e) {
- e.printStackTrace();
- }
- }
-
- if (stat != null)
- {
- try {
- stat.close();
- } catch (SQLException e) {
- e.printStackTrace();
- }
- }
- }
- return result;
- }
StudentServiceImpl 类:
- public int delete(Integer id) {
- return dao.delete(id);
- }
StudentController 类:
- @Test
- public void delete(){
- int result = service.delete(5);
-
- if (result != 0){
- System.out.println("删除成功");
- }else {
- System.out.println("删除失败");
- }
- }
点击运行,显示出删除成功,我们用 findAll() 来查看表信息,完成删除(我们删除了张五点五那一行信息)。
在这里我们完成了对数据表进行了增删改查操作,最后来看 StudentDaoImpl 类中发现我们已经写了 300 多行代码,而且我们还写了,非常多的重复代码,效率非常的底,所以为了减少代码量,这里我们需要优化。
我们创建一个新的包名叫 utils ,新建类 JDBCutils,然后创建配置文件 config.properties
在 JDBCutils 类里面:“构造私有方法、声明所需要的配置变量、注册驱动、获取数据库连接方法、释放资源方法” ,代码如下:
- private JDBCutils(){}
-
- // 声明所需要的配置变量
- private static String driverClass;
- private static String url;
- private static String username;
- private static String password;
- private static Connection con;
-
- //提供静态代码块,读取配置文件信息为变量赋值,注册驱动
- static {
- try {
- InputStream is = JDBCutils.class.getClassLoader().getResourceAsStream("config.properties");
- Properties prop = new Properties();
- prop.load(is);
-
- driverClass = prop.getProperty("driverClass");
- url = prop.getProperty("url");
- username = prop.getProperty("username");
- password = prop.getProperty("password");
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
-
- // 获取数据库连接方法
- public static Connection getConecction(){
- try {
- con = DriverManager.getConnection(url,username,password);
- } catch (SQLException e) {
- e.printStackTrace();
- }
- return con;
- }
-
- //释放资源方法
- public static void close(Connection con, Statement stat, ResultSet rs){
- if (con != null){
- try {
- con.close();
- } catch (SQLException e) {
- e.printStackTrace();
- }
- }
-
- if (stat != null){
- try {
- stat.close();
- } catch (SQLException e) {
- e.printStackTrace();
- }
- }
- }
-
- public static void close(Connection con, Statement stat){
- if (con != null){
- try {
- con.close();
- } catch (SQLException e) {
- e.printStackTrace();
- }
- }
-
- }
config.properties :
- driverClass = com.mysql.cj.jdbc.Driver
- url = jdbc:mysql://10.16.158.90:3306/db1
- username = root
- password = 123456
我们已经创建好了准备工作,下面来看看 findAll() 是如何优化的
首先,这两步是可以替换掉的
之前:
- Class.forName("com.mysql.cj.jdbc.Driver");
- com = DriverManager.getConnection("jdbc:mysql://10.16.158.90:3306/db1", "root", "123456");
之后:
com = JDBCutils.getConecction();
之前:
- if (com != null)
- {
- try {
- com.close();
- } catch (SQLException e) {
- e.printStackTrace();
- }
- }
-
- if (stat != null)
- {
- try {
- stat.close();
- } catch (SQLException e) {
- e.printStackTrace();
- }
- }
-
- if (rs != null)
- {
- try {
- rs.close();
- } catch (SQLException e) {
- e.printStackTrace();
- }
- }
之后:
JDBCutils.close(com, stat, rs);
现在看是不是感觉很爽?是不是省去了很多代码?点击运行,看看是否能跑起来。
ok,运行没问题,优化成功。
然后,findById()、insert()、update()、delete() 方法操作都一样,这里就不一一显示了。
首先,我们还是这张 student 这张表,对这张表进行增删改查操作。
我们要查询所有信息,其实方法都差不多,和上面的 MYSQL 的那 5 步是一样的,所以这里就不一一再次讲解了,直接看代码。
- <%@ page language="java" import="java.sql.Connection" contentType="text/html; charset=UTF-8"
- pageEncoding="GB18030"%>
- <%@ page import="java.sql.*" %>
- <%@ page import="java.util.Date" %>
- <!DOCTYPE html>
- <html>
- <head>
-
- <title>JSP 读取数据库</title>
- </head>
- <body>
- <table border="1" align="center">
- <%
- String driverClass="com.mysql.jdbc.Driver";
- String url="jdbc:mysql://localhost/db1?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=UTC";
- String user="root";
- String password="123456";
- Connection conn;
- try{
- Class.forName(driverClass);
- conn=DriverManager.getConnection(url, user, password);
- Statement stmt = conn.createStatement();
- // 查询所有信息
- String sql = "select * from student";
- ResultSet rs = stmt.executeQuery(sql);
- while(rs.next()){
- Integer id = rs.getInt("id");
- String name = rs.getString("name");
- Integer age = rs.getInt("age");
- Date birthday = rs.getDate("birthday");
-
- out.println(id + " " + name + " " + age + " " + birthday + "<br>");
- }
- }catch (Exception ex){
- ex.printStackTrace();
- }
- %>
- </table>
-
- </body>
- </html>
注意:这里有一个小细节,在mysql 6.0版本之上必须配置的操作!properties配置文件内,单独写上url的地址是不对的,需要在url文本末尾加上 ?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=UTC 这句话。一定要加上,
本人 Debug 了一个多小时,千万别被 java 语法迷惑了,一定要加上!!!
我们先看代码
- <%@ page language="java" import="java.sql.Connection" contentType="text/html; charset=UTF-8"
- pageEncoding="GB18030"%>
- <%@ page import="java.sql.*" %>
- <%@ page import="java.util.Date" %>
- <!DOCTYPE html>
- <html>
- <head>
-
- <title>JSP 读取数据库</title>
- </head>
- <body>
- <table border="1" align="center">
- <%
- String driverClass="com.mysql.jdbc.Driver";
- String url="jdbc:mysql://localhost/db1?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=UTC";
- String user="root";
- String password="123456";
- Connection conn;
- try{
- Class.forName(driverClass);
- conn=DriverManager.getConnection(url, user, password);
- Statement stmt = conn.createStatement();
-
- String sql = "insert into student(id,name,age,birthday) VALUES (10,'张十',23,'2000-12-23')";
- int rs = stmt.executeUpdate(sql);
- if(rs == 0 ){
- out.print("增加失败");
- }else {
- out.print("增加成功");
- }
- }catch (Exception ex){
- ex.printStackTrace();
- }
- %>
- </table>
-
- </body>
- </html>
注意:这里还有个细节(细节都是头发换来的,呜呜呜),我们服务器启动完成之后,这里一定要在浏览器执行一下,否则的话,对数据库没有任何操作。一定要记住!!!
刷新数据库,查看效果
这里我们要把 “张十” 的 id 改为 12,那么对应的语句是 UPDATE student SET id = 12 where name='张十',我们看下代码
- <%@ page language="java" import="java.sql.Connection" contentType="text/html; charset=UTF-8"
- pageEncoding="GB18030"%>
- <%@ page import="java.sql.*" %>
- <%@ page import="java.util.Date" %>
- <!DOCTYPE html>
- <html>
- <head>
-
- <title>JSP 读取数据库</title>
- </head>
- <body>
- <table border="1" align="center">
- <%
- String driverClass="com.mysql.jdbc.Driver";
- String url="jdbc:mysql://localhost/db1?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=UTC";
- String user="root";
- String password="123456";
- Connection conn;
- try{
- Class.forName(driverClass);
- conn=DriverManager.getConnection(url, user, password);
- Statement stmt = conn.createStatement();
- String sql="UPDATE student SET id = 12 where name='张十'";
- int rs = stmt.executeUpdate(sql);
- if(rs == 0 ){
- out.print("修改失败");
- }else {
- out.print("修改成功");
- }
- }catch (Exception ex){
- ex.printStackTrace();
- }
- %>
- </table>
-
- </body>
- </html>
点击运行,记得在浏览器运行一次,ok,完成修改
效果如下
我们将 id 为 12的条件删除掉,这里同样先给出语句 "DELETE FROM student WHERE id=12"
先来看代码
- <%@ page language="java" import="java.sql.Connection" contentType="text/html; charset=UTF-8"
- pageEncoding="GB18030"%>
- <%@ page import="java.sql.*" %>
- <%@ page import="java.util.Date" %>
- <!DOCTYPE html>
- <html>
- <head>
-
- <title>JSP 读取数据库</title>
- </head>
- <body>
- <table border="1" align="center">
- <%
- String driverClass="com.mysql.jdbc.Driver";
- String url="jdbc:mysql://localhost/db1?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=UTC";
- String user="root";
- String password="123456";
- Connection conn;
- try{
- Class.forName(driverClass);
- conn=DriverManager.getConnection(url, user, password);
- Statement stmt = conn.createStatement();
- String sql="DELETE FROM student WHERE id=12";
- int rs = stmt.executeUpdate(sql);
- if(rs == 0 ){
- out.print("删除失败");
- }else {
- out.print("删除成功");
- }
- }catch (Exception ex){
- ex.printStackTrace();
- }
- %>
- </table>
-
- </body>
- </html>
这里浏览器显示删除成功
刷新来看下效果
小结:大家在 StudentDaoImpl 类中有一个小细节,在 DriverManager.getConnection 中设置(“jdbc:mysql://ip地址:端口号/数据库名称”)ip 地址这里,在换地方写代码时,一定要记得改,我debug 了一小时才发现,我一直在想为什么上午下午在图书馆里面有用,晚上在寝室就没用了?血淋淋的痛啊~ 亲们,一定要记得改!(或者这里直接使用localhost)
java面试面试题,最新java简历,本人主页右侧关注公众号回复“java面试”获取资料
(求关注)持续更新中……
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。