文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

【javaWeb+tomcat+MySQL】综合案例-完整步骤

2023-09-03 20:31

关注

目录

一、前提

二、创建一个普通的java项目

三、添加Web Application

四、添加tomcat

五、测试tomcat是否连接成功

 六、在src目录下创建四个package

七、在WEB-INF下创建文件夹lib,导入两个jar包

 八、把druid.properties粘贴在src目录下

八、实体类、方法类、测试类、连接类(代码部分)

九、测试是否成功连接MySQL数据库 

十、数据库Student表的相关设置

十一、在web目录下,创建html、css、js文件

十二、Web→WEB-INF→index.jsp后缀改为.html

十三、验证JavaWeb项目下,能否对数据库表进行增删改查

十四、总结



一、前提

我用的软件版本:

我的idea版本为:IntelliJ IDEA 2021.1.2 x64

我的apache-tomcat版本为:apache-tomcat-9.0.68

我的apache-tomcat存放路径为:D:\programfiles\apache-tomcat-9.0.68

准备工作:

在本案例之前,我已经安装好了apache-tomcat,并在idea中打开本地html文件,验证是连接成功的。(关于安装apache-tomcat,并在idea中运行,打开本地html文件的案例,在上一篇有具体说明,在这里不赘述)

二、创建一个普通的java项目

File→New Project→命名为myWeb→点击下一步→完成

三、添加Web Application

在项目上,鼠标右键Add Framework Suppot

 2、勾选Web Application(4.0),勾选Creat web.xml,点击OK

 3、添加完成后,在项目路径下自动生成web文件夹

四、添加tomcat

点击右上方Add Configuration→点击+号→选择Tomcalt Server下的local

点击右下角Fix

 

 3、点击Deployment,把下方的Application context命名的后面的单词删掉,保留和项目名一致,我的项目名为myWeb;

五、测试tomcat是否连接成功

在项目目录下,找到index.jsp,在body标签内添加内容hello,点击右上角绿色三角运行

 服务器启动成功,网页自动弹出,效果如下:

 六、在src目录下创建四个package

在src目录下创建四个package,命名如下:(com后面的qingruan为公司名);

之所以要建四个package,是为了分工,不用所有代码凑在一起。

com.qingruan.dao:存放方法类StudentDao.java

com.qingruan.entity:存放实体类Student.java

com.qingruan.test:存放测试类TestDb.java

com.qingruan.util:存放连接数据库的类DbUtils.java

七、在WEB-INF下创建文件夹lib,导入两个jar包

把以下两个包粘贴到lib;(可上网搜)

 2、鼠标右键Add as Library,点击确定,把两个包添加到路径下;

 八、把druid.properties粘贴在src目录下

文件druid.properties存放的是数据库的名称、账号和密码。

关于java和MySQL版本和工具,以及相关设置的详细介绍在上一篇,这里不再赘述。

八、实体类、方法类、测试类、连接类(代码部分)

方法类StudentDao.java:

package com.qingruan.dao;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import java.util.ArrayList;import java.util.List;import com.qingruan.entity.Student;import com.qingruan.util.DbUtils;// dao  负责与数据库交互的,目前实现的技术是jdbcpublic class StudentDao {    private static PreparedStatement ps = null;    private static Connection cn = null;    private static ResultSet rs =null;        public int saveStu(Student stu) { // 传入一个学生对象        // 1.获得连接        try {            cn = DbUtils.getConnection();            // 2.获得预处理对象            String sql = "insert into student values(null,?,?,?,?,?,?)";            ps = cn.prepareStatement(sql);            // 3.赋予实际的参数            ps.setString(1, stu.getStu_number());            ps.setString(2, stu.getStu_name());            ps.setInt(3, stu.getStu_age());            ps.setString(4, stu.getStu_sex());            ps.setInt(5, stu.getStu_score());            ps.setString(6, stu.getStu_hiredate());            // 4.得到结果集            return ps.executeUpdate();        } catch (SQLException e) {            // TODO Auto-generated catch block            e.printStackTrace();        } finally{            DbUtils.close(null, ps, cn);// 5.释放资源        }        return 0;    }        public int updateStu(Student stu){        try {            cn = DbUtils.getConnection();            String sql="update  student set stu_number=?,stu_name=?,stu_age=?,stu_sex=?,stu_score=?,stu_hiredate=? where stu_id=?";            ps=cn.prepareStatement(sql);            ps.setString(1, stu.getStu_number());            ps.setString(2, stu.getStu_name());            ps.setInt(3, stu.getStu_age());            ps.setString(4, stu.getStu_sex());            ps.setInt(5, stu.getStu_score());            ps.setString(6, stu.getStu_hiredate());            ps.setInt(7, stu.getStu_id());            return ps.executeUpdate();        } catch (SQLException e) {            // TODO Auto-generated catch block            e.printStackTrace();        } finally{            DbUtils.close(null, ps, cn);        }        return 0;    }        public int delStu(int stuId){        try {            cn = DbUtils.getConnection();            String sql="delete from student where stu_id=?";            ps=cn.prepareStatement(sql);            ps.setInt(1, stuId);            return ps.executeUpdate();        } catch (SQLException e) {            // TODO Auto-generated catch block            e.printStackTrace();        }finally{            DbUtils.close(null, ps, cn);        }        return 0;    }        public Student  queryByStuId(int stuId){        Student stu =null;        try {            cn = DbUtils.getConnection();            String sql="select * from student where stu_id=?";            ps=cn.prepareStatement(sql);            ps.setInt(1, stuId);            rs = ps.executeQuery();            if(rs.next()){                return stu =new Student(rs.getInt(1), rs.getString(2), rs.getString(3), rs.getInt(4), rs.getString(5), rs.getInt(6), rs.getString("stu_hiredate"));            }        } catch (SQLException e) {            // TODO Auto-generated catch block            e.printStackTrace();        } finally {            DbUtils.close(rs, ps, cn);        }        return stu;    }        public List  queryFindAll(){        List list =new ArrayList();        try {            cn = DbUtils.getConnection();            String sql="select * from student";            ps=cn.prepareStatement(sql);            rs = ps.executeQuery();            while(rs.next()){                list.add(new Student(rs.getInt(1), rs.getString(2), rs.getString(3), rs.getInt(4), rs.getString(5), rs.getInt(6), rs.getString("stu_hiredate")));//放到集合中            }        } catch (SQLException e) {            // TODO Auto-generated catch block            e.printStackTrace();        } finally {            DbUtils.close(rs, ps, cn);        }        return list;    }}

测试类TestDb.java

package com.qingruan.test;import java.util.List;import org.junit.Test;import com.qingruan.dao.StudentDao;import com.qingruan.entity.Student;import com.qingruan.util.DbUtils;public class TestStuDao {    StudentDao dao =new StudentDao();    //保存学生信息    @Test    public void save(){        int result = dao.saveStu(new Student("1013", "Lulu", 22, "女", 95, "2020-9-1"));        System.out.println(result>0?"添加成功":"添加失败");    }    //修改    @Test    public void update(){        Student stu = dao.queryByStuId(4);        stu.setStu_name("Mimi");        int result = dao.updateStu(stu);        System.out.println(result>0?"修改成功":"修改失败");    }    //删除    @Test    public void delete(){        int result = dao.delStu(1);        System.out.println(result>0?"删除成功":"删除失败");    }    //单个查询    @Test    public void findById(){        Student stu = dao.queryByStuId(3);        System.out.println(stu);    }    //查询所有    @Test    public void findAll(){        List list = dao.queryFindAll();        for(Student  stu : list){            System.out.println(stu);        }    }}

如果@Test是红色异常的,要选中,右键Download Library fom Maven Repository,即可;

连接数据库的类DbUtils.java

package com.qingruan.util;import java.io.IOException;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import java.util.Properties;import javax.sql.DataSource;import com.alibaba.druid.pool.DruidDataSourceFactory;// 针对数据库的连接作用public class DbUtils {    //定义私有成员    private static  DataSource ds;    //1.静态代码块 加载配置文件,初始化连接池对象    static{     // 特点:用于给类进行初始化,只加载一次,随着类的加载而加载        try {            Properties pro =new Properties();            //加载属性文件            pro.load(DbUtils.class.getClassLoader().getResourceAsStream("druid.properties"));            //获得连接池对象            ds = DruidDataSourceFactory.createDataSource(pro);        }catch (Exception e) {            // TODO Auto-generated catch block            e.printStackTrace();        }    }    //2.定义一个方法:获取连接对象    public static Connection getConnection(){        try {            return  ds.getConnection();        } catch (SQLException e) {            // TODO Auto-generated catch block            e.printStackTrace();        }        return null;    }    //3.定义一个方法:用于释放资源    public static void close(ResultSet rs,PreparedStatement ps,Connection cn){        if(rs!=null){            try {                rs.close();            } catch (SQLException e) {                // TODO Auto-generated catch block                e.printStackTrace();            }        }        if(ps!=null){            try {                ps.close();            } catch (SQLException e) {                // TODO Auto-generated catch block                e.printStackTrace();            }        }        if(cn!=null){            try {                cn.close();  //  此时的关闭,是归还给连接池对象            } catch (SQLException e) {                // TODO Auto-generated catch block                e.printStackTrace();            }        }    }        public static  DataSource getDataSource(){        return ds;    }}

实体类Student.java

package com.qingruan.entity;// 学生类 与 数据库中的student学生表是与之对应的// 将数据库的学生表 看作是 java中的一个学生类   数据库中学生表的字段可以看作是 java中学生类的属性public class Student {    private Integer stu_id;  //学生编号(给程序使用)    private String stu_number;  //学号    private String stu_name; // 姓名    private Integer stu_age; // 年龄    private String stu_sex; // 性别    private Integer stu_score;//成绩    private String stu_hiredate; // 入学时间    public Student() {        // TODO Auto-generated constructor stub    }    public Student(String stu_number, String stu_name, Integer stu_age, String stu_sex, Integer stu_score,                   String stu_hiredate) {        this.stu_number = stu_number;        this.stu_name = stu_name;        this.stu_age = stu_age;        this.stu_sex = stu_sex;        this.stu_score = stu_score;        this.stu_hiredate = stu_hiredate;    }    public Student(Integer stu_id, String stu_number, String stu_name, Integer stu_age, String stu_sex,                   Integer stu_score, String stu_hiredate) {        this.stu_id = stu_id;        this.stu_number = stu_number;        this.stu_name = stu_name;        this.stu_age = stu_age;        this.stu_sex = stu_sex;        this.stu_score = stu_score;        this.stu_hiredate = stu_hiredate;    }    @Override    public String toString() {        return "Student [stu_id=" + stu_id + ", stu_number=" + stu_number + ", stu_name=" + stu_name + ", stu_age="                + stu_age + ", stu_sex=" + stu_sex + ", stu_score=" + stu_score + ", stu_hiredate=" + stu_hiredate                + "]";    }    public Integer getStu_id() {        return stu_id;    }    public void setStu_id(Integer stu_id) {        this.stu_id = stu_id;    }    public String getStu_number() {        return stu_number;    }    public void setStu_number(String stu_number) {        this.stu_number = stu_number;    }    public String getStu_name() {        return stu_name;    }    public void setStu_name(String stu_name) {        this.stu_name = stu_name;    }    public Integer getStu_age() {        return stu_age;    }    public void setStu_age(Integer stu_age) {        this.stu_age = stu_age;    }    public String getStu_sex() {        return stu_sex;    }    public void setStu_sex(String stu_sex) {        this.stu_sex = stu_sex;    }    public Integer getStu_score() {        return stu_score;    }    public void setStu_score(Integer stu_score) {        this.stu_score = stu_score;    }    public String getStu_hiredate() {        return stu_hiredate;    }    public void setStu_hiredate(String stu_hiredate) {        this.stu_hiredate = stu_hiredate;    }}

九、测试是否成功连接MySQL数据库 

前提:

我的MySQL账号为:root;密码为:1234;

我建的数据库命名为:mydata1

测试java是否成功连接数据库:

import java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLException;public class TestConnectMysql {    public static void main(String[] args) {        try {            Class.forName("com.mysql.jdbc.Driver");            Connection cn = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydata1?characterEncoding=utf-8","root","1234");            System.out.println(cn);        } catch (ClassNotFoundException e) {            e.printStackTrace();        } catch (SQLException throwables) {            throwables.printStackTrace();        }    }}

连接成功,控制台输出效果如下:

十、数据库Student表的相关设置

包含以下属性

stu_id 学生id,不进行指定,由系统自增

stu_number 学号

stu_name 学生姓名

stu_age 学生年龄

stu_sex 学生性别

stu_score 学生成绩

stu_hiredate 日期类型-学生入学年份

在数据库mydata1下,新建表student,我的设置如下:

我插入了几条数据,如下:

十一、在web目录下,创建html、css、js文件夹


 

十二、Web→WEB-INF→index.jsp后缀改为.html

 内容为:

右上角要选择为Tomcat,再点击绿色三角形,运行;

 

运行效果:

javaWeb项目下的.html文件,用tomcat在本地服务器上运行;

 运行以后,要手动关闭,点击idea界面右上角红色正方形;

十三、验证JavaWeb项目下,能否对数据库表进行增删改查

目前还没有把增删改查的页面放在.html网页上,暂时在控制台输出,能正常输出,就代表代码是没有问题的,到后期再把对MySQL表增删改查的功能界面化,显示在网页上。

总之,我们做了这么多,就是为了让tomcat【服务器】+mysql【数据库】+java【增删改查方法】连起来。

运行第七步的TestStuDao.java代码,查看运行结果(因为该测试类包含了增删改查几个方法,所以要一个一个分开运行。选中方法名,右键运行;或者点击方法名左边的绿色三角,运行代码)

增加学生信息,效果如下:

查询所有学生的信息,效果如下:

 

根据id查询,一个学生的信息,效果如下:

删除学生信息,效果如下:

 5、修改学生信息,效果如下:

 

十四、总结

在本期案例中,我们在idea创建了JavaWeb项目,还完成了apache-tomcat的相关配置,并且验证了用tomcat服务器打开本项目下的.html文件;然后,我们在MySQL新建了一个student表,并能在java方法中,顺利进行增删改查的操作。

因为不熟悉在idea创建JavaWeb项目,所以操作起来会比较手生,多尝试就好了。

还有就是在连接数据库时,idea要额外导入一些jar包,还有要注意粘贴在哪个路径下,不要弄错,这个真的非常讲究。

还是那句话:我们做了这么多,就是为了让tomcat【服务器】+mysql【数据库】+java【增删改查方法】连起来。

关于下一篇,我们会在idea创建一个JavaWeb项目,功能为用户可以在tomcat服务器上打开网页,在网页页面上,点击按钮或输入修改后的学生的信息,完成对数据库表的增删改查操作。

来源地址:https://blog.csdn.net/xjj1128/article/details/127361651

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯