栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

JavaWeb项目实践

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

连接数据库无非就是和数据库建立连接,和前面的python连接数据库差不多。


首先在连接Java数据库的时候需要数据库的jar包,这点不同于python连接数据库
mysql的jar包

下面让我们来看看数据库是如何让连接的,是如何完成数据库的一系列操作,增删改查等…


Java连接数据库。 1、注册驱动
Class.forName("com.mysql.jdbc.Driver");

2、获取连接
  conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/shop", "root", "123456");

注意:获取连接很重要,数据的一点点错误都会导致你连接不上数据库。
1、localhost代表本机不用变
2、3306是端口号,即port,一般默认都是3306。
3、root一般指管理员,不用变,直接用即可。
4、"123456"指的是密码,一般大家常用的密码就123、111111、root或者123456几种。


3、获取数据库操作对象
stmt = conn.createStatement();

4、//执行sql
 String sql = "select id,name,num,price from testmodel_car";
            rs = stmt.executeQuery(sql);
            while (rs.next()) {
                String id = rs.getString("id");
                String name = rs.getString("name");
                String num = rs.getString("num");
                String price = rs.getString("price");
                System.out.println(id + "," + name + "," + num + "," + price);
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {

注意:
1、java"select id,name,num,price from testmodel_car";,从表 testmodel_car中查询 id,name,num,price四列数据
2、rs = stmt.executeQuery(sql);,获取的对象编译一下sql语句
3、String id = rs.getString("id");,取出id那一列的值赋值给id(String id 中的id可以随便换,只要不和其他变量冲突都是可以的)


5、释放资源
       if (rs != null) {
                try {
                    rs.close();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
            if (stmt != null) {
                try {
                    stmt.close();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
            if (conn != null) {
                try {
                    conn.close();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }

不释放资源也行,在上面抛出异常也可以解决


6、完整代码
import com.mysql.jdbc.Driver;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

public class Test2 {
    public static void main(String[] args) {
        Connection conn = null;
        Statement stmt = null;
        ResultSet rs = null;
        try {
            //注册驱动
            Class.forName("com.mysql.jdbc.Driver");
            //获取连接
            conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/shop", "root", "123456");
            //获取数据库操作对象
            stmt = conn.createStatement();
            //执行sql
            String sql = "select id,name,num,price from testmodel_car";
            rs = stmt.executeQuery(sql);
            while (rs.next()) {
                String id = rs.getString("id");
                String name = rs.getString("name");
                String num = rs.getString("num");
                String price = rs.getString("price");
                System.out.println(id + "," + name + "," + num + "," + price);
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            //释放资源
            if (rs != null) {
                try {
                    rs.close();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
            if (stmt != null) {
                try {
                    stmt.close();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
            if (conn != null) {
                try {
                    conn.close();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }
    }
}


连接数据库------增加操作

add.jsp

<%--
  Created by IntelliJ IDEA.
  User: 17331
  Date: 2022/3/5
  Time: 15:40
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>


    
    
    添加信息
    
    
    
    
    





JavaWeb项目实践

国家名称   

  金牌数     

  银牌数     

  铜牌数     

     id           


Add.java

package com.bjpowernode.javaweb.servlet;

import com.bjpowernode.javaweb.utils.DButil;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.sql.*;


@WebServlet(name = "add", value = "/add")
public class Add extends HttpServlet {

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        request.setCharacterEncoding("UTF-8");
        //获取信息,前端页面注册的信息
        String country=request.getParameter("Country");
//        String logo=request.getParameter("logo");
        String Glod_num=request.getParameter("Glod_num");
        String Silver_num=request.getParameter("Silver_num");
        String Copper_num=request.getParameter("Copper_num");
        String id =request.getParameter("id");
//        String Sum=request.getParameter("Sum");
        //连接数据库,执行insert插入语句
        Connection conn = null;
        PreparedStatement ps = null;
        int count=0;
        try {
            //注册驱动
            try {
                Class.forName("com.mysql.jdbc.Driver");
            } catch (ClassNotFoundException e) {
                e.printStackTrace();
            }
            //获取连接
            conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/mofa", "root", "123456");

            // TODO 2、开启事务   默认开启  我们将它关闭()自动提交机制关闭
            String sql = "insert ignore into medals_table(Country,Glod_num,Silver_num,Copper_num,id) values (?,?,?,?,?);";
            ps = conn.prepareStatement(sql);
            ps.setString(1, country);
//            ps.setString(2, logo);
            ps.setString(2, Glod_num);
            ps.setString(3, Silver_num);
            ps.setString(4, Copper_num);
            ps.setString(5, id);
//            ps.setString(7, Sum);
            //返回一个值,指的是  影响了数据库中多少条记录  主要是判断是否大于0  就是是否印象数据库
            count = ps.executeUpdate();
        }catch (SQLException e){
            e.printStackTrace();
        }finally {
            DButil.close(conn,ps,null);
        }
        if(count==1){
            //增加成功   任然跳到列表页面
            request.getRequestDispatcher("Take_01").forward(request,response);
        }
        else{
            //删除失败
            request.getRequestDispatcher("error.jsp").forward(request,response);
        }
    }
}


增加功能就是通过前端jsp文件text填写数据,然后通过submit提交数据,传递给后端servlet,也就是上面的Add,注意Java文件不要小写,我就没少挨骂

步骤:
1、前端jsp文件text写入通过submit提交
2、

通过form表单提交给后端的servel(Add)
3、String country=request.getParameter("Country");通过getParameter取到前端的值然后赋值给country,为后面刷数据做准备
4、后端servlet访问数据库,步骤访问上面第一个标题《Java连接数据库》
5、成功将前端传来的数据刷如数据库



连接数据库------删除操作
package com.bjpowernode.javaweb.servlet;

import com.bjpowernode.javaweb.utils.DButil;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.*;

@WebServlet(name = "delete", value = "/delete")
public class Delete extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        //根据部门编号删除部门
        //获取部门编号
        String country = request.getParameter("name");
        //连接数据库
        Connection conn = null;
        PreparedStatement ps = null;
        ResultSet rs = null;
        int count=0;
        try {
            //注册驱动
            Class.forName("com.mysql.jdbc.Driver");
            //获取连接
            conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/mofa", "root", "123456");
            // TODO 2、开启事务   默认开启  我们将它关闭()自动提交机制关闭
            conn.setAutoCommit(false);
            String sql = "delete from medals_table where Country=?";
            ps = conn.prepareStatement(sql);
            ps.setString(1,country);
            //返回一个值,指的是  影响了数据库中多少条记录  主要是判断是否大于0  就是是否印象数据库
            count= ps.executeUpdate();
            //事务提交
            conn.commit();

        } catch (SQLException e) {
            if(conn!=null){
                try {
                    conn.rollback();
                } catch (SQLException ex) {
                    ex.printStackTrace();
                }
            }
            e.printStackTrace();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
        finally {
            DButil.close(conn,ps,null);
        }
        if(count==1){
            PrintWriter out = response.getWriter();
            out.println("");
//            //删除成功   任然跳到列表页面
//            request.getRequestDispatcher("Take_01").forward(request,response);

        }
        else{
            //删除失败
            request.getRequestDispatcher("error.jsp").forward(request,response);
        }
    }
}

String country = request.getParameter("name");,老规矩,前端取值进行操作


连接数据库------修改操作

edit.jsp

<%--
  Created by IntelliJ IDEA.
  User: 17331
  Date: 2022/3/6
  Time: 17:39
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>


    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
        <html>
        <head>
        <title>新增


新增国家奖牌信息


国家名称 :
<%-- logo :
--%> 金牌数 :
银牌数 :
铜牌数 :
id :
总数 :

Edit.java

package com.bjpowernode.javaweb.servlet;

import com.bjpowernode.javaweb.utils.DButil;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.*;

@WebServlet(name = "edit",value = "/edit")
public class Edit extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        String contextPath = request.getContextPath();
        response.setContentType("text/html;charset=UTF-8");
        request.setCharacterEncoding("UTF-8");
        PrintWriter out =response.getWriter();
        //jsp文档
        out.println("");
        out.println("");
        out.println("    ");
        out.println("    ");
        out.println("    添加信息");
        out.println("    ");
        out.println("    ");
        out.println("    ");
        out.println("    ");
        out.println("    ");
        out.println("");
        out.println("");
        out.println("");
        out.println("");
        out.println("");
        out.println("    ");
        out.println("        ");
        out.println("    ");
        out.println("    ");
        out.println("		
"); //获取国家名称 String country=request.getParameter("name"); //连接数据库 Connection conn=null; PreparedStatement ps=null; ResultSet rs=null; try { try { Class.forName("com.mysql.jdbc.Driver"); } catch (ClassNotFoundException e) { e.printStackTrace(); } //获取连接 conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/mofa", "root", "123456"); String sql = "select * from medals_table where Country=?"; //编译sql语句 ps = conn.prepareStatement(sql); //赋值 第一个问好赋值 country 国家名称 ps.setString(1, country); //查询返回结果集 这个结果集只有一条记录 ,国家名称是主键 , 故只有一条数据 rs = ps.executeQuery(); if(rs.next()){ String logo=rs.getString("logo"); String Glod = rs.getString("Glod_num"); String Silver = rs.getString("Silver_num"); String Copper = rs.getString("Copper_num"); String sum=rs.getString("Sum"); String id=rs.getString("id"); System.out.println("你好,你好,你好,齐天大圣!!!"); //输出动态网页 out.println("

"); out.println(" 国家名称   "); out.println("

"); // out.println("

"); // out.println("    logo      "); // out.println("

"); out.println("

"); out.println("   金牌数     "); out.println("

"); out.println(""); out.println("

"); out.println("   银牌数     "); out.println("

"); out.println("

"); out.println("   铜牌数     "); out.println("

"); out.println("

"); out.println("      id           "); out.println("

"); } } catch (SQLException e) { e.printStackTrace(); }finally { DButil.close(conn,ps,rs); } out.println("
"); out.println("
"); out.println(" "); out.println(" "); out.println(""); out.println(""); out.println(""); } }

Update.java

package com.bjpowernode.javaweb.servlet;

import com.bjpowernode.javaweb.utils.DButil;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.sql.*;

@WebServlet(name = "update",value = "/update")
public class Update extends HttpServlet {
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        request.setCharacterEncoding("UTF-8");
        //解决中文乱码问题
        String country=request.getParameter("Country");
        String logo=request.getParameter("logo");
        String Glod_num=request.getParameter("Glod_num");
        String Silver_num=request.getParameter("Silver_num");
        String Copper_num=request.getParameter("Copper_num");
        String id=request.getParameter("id");
        //连接数据库执行更新操作
        Connection conn = null;
        PreparedStatement ps = null;
        ResultSet rs = null;
        int count=0;
        try {
            try {
                Class.forName("com.mysql.jdbc.Driver");
            } catch (ClassNotFoundException e) {
                e.printStackTrace();
            }
            //获取连接
            conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/mofa", "root", "123456");
            String sql = "update medals_table set Glod_num=?,Silver_num=?,Copper_num=?,id=? where Country=?";
            //编译sql语句
            ps = conn.prepareStatement(sql);
//            ps.setString(1, logo);
            ps.setString(1, Glod_num);
            ps.setString(2, Silver_num);
            ps.setString(3, Copper_num);
            ps.setString(4, id);
            ps.setString(5, country);
//            System.out.println(logo);
            count=ps.executeUpdate();
            System.out.println(count);
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            DButil.close(conn, ps, rs);
        }
        if(count==1){
            //更新成功
            request.getRequestDispatcher("Take_01").forward(request,response);
        }else{
            //更新失败
            request.getRequestDispatcher("error.jsp").forward(request,response);
        }
    }
}

**```
前端传输数据给后端edit,edit通过getParameter取到前端值完成后面的操作。**
为了让修改的时候可以显示修改前的值,我们在Edit.java中写入前端代码。**
Edit.jav中代码通过form表单把数据传输给Update.java。**
Update.java通过getParameter取到由Edit.java中传来的值。**
把取到的值存进数据库,完成刷入操作。****

**`注意:我这里有个bug,就是不能修改国家名称,因为手贱的我为了让数据库看着好看就把国家名设置为主键了,,,,,,,`**
***
***
连接数据库------查询操作
**`Select.java`**

```java
package com.bjpowernode.javaweb.servlet;

import com.bipowernode.pojo.Olypic;
import com.bjpowernode.javaweb.utils.DButil;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.*;
import java.util.ArrayList;
import java.util.List;

@WebServlet(name = "select",value = "/select")
public class Select extends HttpServlet {
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        request.setCharacterEncoding("UTF-8");
        String name = request.getParameter("select_name");
        System.out.println(name);
        //连接数据库
        Connection conn = null;
        PreparedStatement ps = null;
        ResultSet rs = null;
        List olypicList=new ArrayList<>();
        try {
            Class.forName("com.mysql.jdbc.Driver");
            //获取连接
            conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/mofa", "root", "123456");
            String sql = "select * from medals_table where Country=?";
            //编译sql语句
            ps = conn.prepareStatement(sql);
            //赋值    第一个问好赋值 country   国家名称
            ps.setString(1, name);
            //查询返回结果集    这个结果集只有一条记录  ,国家名称是主键  ,  故只有一条数据
            rs = ps.executeQuery();
            if (rs.next()) {
                String country = rs.getString("Country");
                String Glod = rs.getString("Glod_num");
                String Silver = rs.getString("Silver_num");
                String Copper = rs.getString("Copper_num");
                String id=rs.getString("id");
                String logo=rs.getString("logo");
                System.out.println("这是数据");
                System.out.println(country);
                System.out.println("Glod");
//                   String Sum=rs.getString("Sum");
                int G = Integer.valueOf(Glod).intValue();
                int S = Integer.valueOf(Silver).intValue();
                int C = Integer.valueOf(Copper).intValue();
                int A=G+S+C;
                String Sum=String.valueOf(A);

                //将数据封装程Java对象
                Olypic olpic=new Olypic();
                olpic.setCountry(country);
                olpic.setGlod_num(Glod);
                olpic.setSilver_num(Silver);
                olpic.setCopper_num(Copper);
                olpic.setId(id);
                olpic.setSum(Sum);
                olpic.setLogo(logo);
                // TODO 将数据放入上面定义好的容器
                olypicList.add(olpic);
            }
        } catch (SQLException e) {
            e.printStackTrace();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } finally {
            DButil.close(conn, ps, rs);
        }
        request.setAttribute("olypicList",olypicList);
        request.getRequestDispatcher("./take_03.jsp").forward(request,response);
    }
}

可以从前端或者后端传值,完成搜索操作。但是一般是要通过前端搜索框输入值,通过form表单传走,后端通过getParameter取值完成一些列操作。


现在的项目都是通过框架,但是 了解传输和运行机制还是十分重要的。

完整的JavaWeb项目

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/830054.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号