一个idea连接MySQL数据库的web小例子(一)

前言

本次涉及到的技术jsp+MySQL+servlet ,我是按照执行顺序来的,熟练忽视顺序

一、创建web工程

1.创建Web

修改自己的jdk,并选中web工程!
在这里插入图片描述

起工程名字并指定保存路径,点击finsh完成创建
在这里插入图片描述

2.已经有java项目,(修改成web项目)

右键java项目,点击图中按键
在这里插入图片描述
选中web
在这里插入图片描述
成功添加
在这里插入图片描述

二、添加依赖

添加mysql依赖,换位置了,然后
在这里插入图片描述
我从之前的文章拿来的图,(懒得截屏,算了,原话拿过来吧)
完成这步jar包是不会依赖的。需要添加到工程,选中lib目录,找到下图的选项
在这里插入图片描述

三、创建实体类

好,这个时候该写实体类了,看看数据库的表;
在这里插入图片描述
创建实体类,(保存在bean的包中,java类一多,不分的话,自己就看不懂了,还找不到)
在这里插入图片描述
定义不要出错
在这里插入图片描述
在这里插入图片描述
生成无参函数,有参函数,get ,set方法。
在这里插入图片描述
在这里插入图片描述
无参函数
在这里插入图片描述
有参函数(这个应该叫全参了吧)
在这里插入图片描述
get set方法
在这里插入图片描述
在这里插入图片描述

四、创建mysql连接

书写Dao层
先把连接数据库的代码写了,这里是增删改查代码的公共部分,之后调用方法就行了。

package com.zy.Dao;

import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

/**
 * 类名:Conn
 * 读书破万卷,下笔如有神
 * 代码反行之,算法记于心
 * 作者:劫恋李
 * 日期:2021/7/5 12:32
 * 版本:V1.0
 */
public class Conn{
    public static  String DRIVER="com.mysql.jdbc.Driver";
    public static  String URL="jdbc:mysql://localhost:3306/dsy";
    public static  String USERNAME="root";
    public static  String PASSWORD="root";

    //获取数据库连接方法
    //二
    public static java.sql.Connection getcoon() throws ClassNotFoundException, SQLException {
        Class.forName(DRIVER);
        System.out.println("1.加载数据库成功!!");

        java.sql.Connection connection = DriverManager.getConnection(URL, USERNAME, PASSWORD);
        System.out.println("2.连接数据库成功!!");
        return connection;

    }
    //三
    public static void close(java.sql.Connection connection, PreparedStatement preparedStatement, ResultSet resultSet) throws SQLException {

        if(resultSet!=null){
            resultSet.close();
            System.out.println("resultSet关闭成功");

        }
        if(preparedStatement!=null){
            preparedStatement.close();
            System.out.println("preparedStatement关闭成功");
        }


        if(connection!=null){
            connection.close();
            System.out.println("connection关闭成功");
        }
    }
}

这篇实现增删改的时候好多重复代码,精简一下,浓缩一下精华

四、创建jsp页面

在这里插入图片描述
在这里注意用到的是form表单,post方法,跳转链接是login
在这里插入图片描述

四、servlet重写dopost

在这里插入图片描述
jsp点击登录跳转到这里执行dopost方法,写到这,我发现写不下去了,我该执行sql语句了(调用查询方法),先把用户名和密码获取到。。。

@WebServlet("/Login")
public class login extends HttpServlet {
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        String tname = req.getParameter("aname");
        String tpass = req.getParameter("apass");
        System.out.println("用户名:" + tname + "  密码:" + tpass);
    }
}

五、Dao层写查询方法

package com.zy.Dao;

import com.zy.bean.Users;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

/**
 * 类名:UserDao
 * 读书破万卷,下笔如有神
 * 代码反行之,算法记于心
 * 作者:劫恋李
 * 日期:2021/7/5 22:51
 * 版本:V1.0
 */
public class UserDao {

    Connection connection = null;
    PreparedStatement preparedStatement = null;
    ResultSet resultSet = null;
    
    public Users selectU(String aname, String apass) throws SQLException, ClassNotFoundException {
        Users users = null;
        connection=Conn.getcoon();
        String sql = "select * from  users where uname=? and upassword=?";
        preparedStatement = connection.prepareStatement(sql);
        preparedStatement.setString(1, aname);
        preparedStatement.setString(2, apass);
        resultSet = preparedStatement.executeQuery();
        while (resultSet != null && resultSet.next()) {
            users = new Users(resultSet.getInt("uid"),
                    resultSet.getString("uname"),
                    resultSet.getString("upassword"),
                    resultSet.getString("usex"),
                    resultSet.getInt("uage"));
        }
        Conn.close(connection,preparedStatement,resultSet);
        return users;
    }

}


六、完成第四步

package com.zy.servlet;

import com.zy.Dao.UserDao;
import com.zy.bean.Users;

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 javax.servlet.http.HttpSession;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.SQLException;

/**
 * 类名:login
 * 读书破万卷,下笔如有神
 * 代码反行之,算法记于心
 * 作者:劫恋李
 * 日期:2021/7/5 22:40
 * 版本:V1.0
 */
@WebServlet("/Login")
public class login extends HttpServlet {
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    		//运行后发现的错,乱码了,导致登录时候一直报错
	    req.setCharacterEncoding("utf-8");
        
        String aname = req.getParameter("aname");
        String apass = req.getParameter("apass");
        System.out.println("用户名:" + aname + "  密码:" + apass);
        Users users=new Users();

        UserDao userDao=new UserDao();
        try {
            users = userDao.selectU(aname, apass);


        } catch (SQLException e) {
            e.printStackTrace();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }

        if (users == null) {
            //登录失败
            resp.setContentType("text/html;charset=gbk");
            PrintWriter writer = resp.getWriter();
            writer.write("<script>alert('用户名或密码错误');</script>");
            //主要是这句,跳转login.jsp
            writer.write("<script>window.location.href='login.jsp'</script>");
        } else {
            //登录成功
            HttpSession session = req.getSession();
            //存储在session
            session.setAttribute("nowusers",users);
            resp.sendRedirect("main.jsp");
        }
    }
}


失败跳转回原来的login.jsp
成功跳转到main.jsp

七、创建main.jsp

就写个成功看看成不成功!
在这里插入图片描述

八、运行该工程

在这里插入图片描述

在这里插入图片描述

总结

登录的执行顺序表,这个代码写的顺序不用按照图来,执行顺序是图的这样。
在这里插入图片描述

下一篇链接,点击传送

  • 4
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值