IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> eclipse下javaweb连接mysql数据库-以用户登陆为例 -> 正文阅读

[Java知识库]eclipse下javaweb连接mysql数据库-以用户登陆为例

eclipse下javaweb连接mysql数据库-以用户登陆为例

下载jdbc驱动程序(jar)

下载mysql的jar包,地址:https://mvnrepository.com/artifact/mysql/mysql-connector-java

找到自己需要的版本

这里还有其他几个jar,一起引入,其中servlet-api.jar来自本地的tomcat

jar导入到程序中

将驱动程序复制到应用项目下的/WEB-INF/lib文件夹下

【右键项目】----【Build Path】----【Configure Build Path】

选择Library,然后Add JARs…

【右键项目】----【Refresh】,刷新之后,可以看到项目下多了Referenced Library目录

创建数据库

使用navicat,在自己的连接中新建数据库实例,然后新建一张表,如图所示

entity实体类

【entity右键】----【New】----【Class】
新建实体类,对照数据库字段自己写字段,其中get和set可以自动生成

全选,然后点击Generate

package entity;

public class User {
    private Integer usernum;
    private String name;
    private String password;
    private int role;
    
    public Integer getUsernum() {
     return usernum;
    }
    public void setUsernum(Integer usernum) {
     this.usernum = usernum;
    }
    public String getName() {
     return name;
    }
    public void setName(String name) {
     this.name = name;
    }
    public String getPassword() {
     return password;
    }
    public void setPassword(String password) {
     this.password = password;
    }
    public int getRole() {
     return role;
    }
    public void setRole(int role) {
     this.role = role;
    }  
}

util连接数据库类

com.mysql.jdbc.Driver是mysql-connector–java 5 中的驱动方式
com.mysql.cj.jdbc.Driver是mysql-connector–java 6 以后的驱动方式

只需要修改以下三行,关于数据库的配置,其他可默认不修改
public static final String url=“jdbc:mysql://localhost:3306/usertest?xx”;`
public static final String username=“root”;
public static final String password=“xxx”;

package util;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Driver;
import java.sql.SQLException;
import java.sql.Statement;

public class DBUtil {

    public static final String driver="com.mysql.jdbc.Driver";
    public static final String url="jdbc:mysql://localhost:3306/usertest?characterEncoding=utf8&useSSL=true";
    public static final String username="root";
    public static final String password="xxx";
    public static Connection con=null;


    static{
        try {
            Class.forName(driver);//得到DriverManager,在下面建立连接时使用
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }

    public static Connection getCon(){

        if(con == null){
            try {
                con = DriverManager.getConnection(url, username, password);
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        return con;
    }

    //关闭的方法
        public static void close(Statement statement,Connection conn){
               if(statement !=null){
                   try {
                    statement.close();
                } catch (SQLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
               }

               if(conn !=null){
                   try {
                    conn.close();
                } catch (SQLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
               }
        }

        public static void main(String args[]){
            new DBUtil().getCon();
        }
}

dao接口类

package dao;

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

import entity.User;
import util.DBUtil;

public class UserDao {

    //数据库连接对象
    public User login(String username,String password) {
       User u=null;
       Connection connection =null;
       PreparedStatement pstmt=null;
       ResultSet resultSet=null;

      //赋值
      try {
         connection=DBUtil.getCon();
          //静态sql语句
         String sql = "select * from sysuser where name=? and password=?";
         pstmt = (PreparedStatement) connection.prepareStatement(sql);
         pstmt.setString(1, username);
         pstmt.setString(2, password);
         resultSet = pstmt.executeQuery();
         if(resultSet.next()){
            u=new User();
            u.setName(resultSet.getString("name"));
            u.setPassword(resultSet.getString("password"));
            System.out.println("登录成功!");
         }else{
            System.out.println("用户名或者密码错误!");
         }
      } catch (SQLException e) {
        e.printStackTrace();
      }finally {
         // DBUtil.close(pstmt, connection);
      }
      return u;

    }

    public boolean addUser(User user) {
        Connection connection = null;
        PreparedStatement psmt = null;
        try {
             connection = DBUtil.getCon();

             String sql  ="insert into user(usernum,name,password,role)values(?,?,?,?);";
             psmt = (PreparedStatement) connection.prepareStatement(sql);

             //运用实体对象进行参数赋值
             psmt.setInt(1, user.getUsernum());
             psmt.setString(2, user.getName());
             psmt.setString(3,user.getPassword());
             psmt.setInt(4, user.getRole());
             psmt.executeUpdate();
        } catch (SQLException e) {
            e.printStackTrace();
            return false;
        }finally {
            //DBUtil.close(psmt, connection);
        }
        return true;
    }
}

servlet处理类

package servlet;

import java.io.IOException;
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 dao.UserDao;
import entity.User;

/**
 * Servlet implementation class LoginServlet
 */
@WebServlet("/LoginServlet")
public class LoginServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public LoginServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		response.getWriter().append("Served at: ").append(request.getContextPath());
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
//		doGet(request, response);
		String account = request.getParameter("username");
		String psd = request.getParameter("password");
		
		HttpSession sessionzxl = request.getSession();
        String username = request.getParameter("username");
        String password = request.getParameter("password");
        UserDao userDAO=new UserDao();
        User user = userDAO.login(username, password);
        if(user != null){
			sessionzxl.setAttribute("user", user);
            request.getRequestDispatcher("success.jsp").forward(request, response);;
        }else{
            request.getRequestDispatcher("error.jsp").forward(request, response);
        }
	}

}

jsp页面

login.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>登录界面</title>
 <style type="text/css">

 </style>

</head>
<body>
  <div style="text-align:center;margin-top:120px">
    <form action="LoginServlet" method="post">
        <table style="margin-left:40%">
             <marquee width="200"scrolldelay="250">用户登录</marquee>
            <tr>
                <td>登录名:</td>
                <td><input name="username" type="text" size="21"></td>
            </tr>
            <tr>
                <td>密码:</td>
                <td><input name="password" type="password" size="21"></td>
            </tr>
        </table>
        <input type="submit" value="登录">
        <input type="reset" value="重置">
    </form>
    <br>
    </div>
</body>
</html>

success.jsp

jsp页面导入实体类的方式:<%@ page import=“entity.User”%>

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%@ page import="entity.User"%>

<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<html>
<head>
<base href="<%=basePath%>">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>My JSP 'success.jsp' starting page</title>
</head>
<body>
<%User user = (User)session.getAttribute("user");%>
"Congratulations! Login success!";<br>
username:<%= user.getName()%> <br>
password:<%= user.getPassword() %> <br>
basePath: <%=basePath%><br>
path:<%=path%><br>
</body>
</html>

error.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<html>
<head>
<base href="<%=basePath%>">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>My JSP 'fail.jsp' starting page</title>
</head>
<body>
    Login Failed! <br>
    basePath: <%=basePath%><br>
    path:<%=path%><br>
    <a href="login.jsp">请重新登录</a>
</body>
</html>s s

web.xml

下面看web.xml配置:如果是比较旧的tomcat版本,不支持WebServlet注解方式,就需要在web.xml里面配置servlet-mapping映射。

我用的是Tomcat8.5,Servlet是3.1, 支持servlet注解。所以不需要在web.xml里面配置servlet。在Servlet的java文件里可以看到自动生成的注解:
@WebServlet("/LoginServlet")

但是Servlet3.0以下,在web.xml里面配置servlet,如下:

  <servlet>  
     <!-- 类名 -->  
    <servlet-name>LoginServlet</servlet-name>  
    <!-- 所在的包 -->  
    <servlet-class>servlet.LoginServlet</servlet-class>  
  </servlet>  
  <servlet-mapping>  
    <servlet-name>LoginServlet</servlet-name>  
    <!-- 访问的网址 -->  
    <url-pattern>/LoginServlet</url-pattern>  
  </servlet-mapping>  

最终项目结构

运行结果

  • servers可以看tomcat情况
  • console可以查看项目运行情况,是否有bug

总结:

  • jsp页面负责用户操作,调用servlet
  • servlet负责承接前端的调用,以及调用dao内的函数
  • dao负责数据库交互,增删改查的sql(使用util连接数据库,使用entity承载数据)
  • util只负责连接数据库
  • entity实体类负责承接与数据库交互的实体数据
  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-03-10 22:17:51  更:2022-03-10 22:22:05 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 10:25:53-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码