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知识库 -> Servlet中使用JDBC实现注册业务(一) -> 正文阅读

[Java知识库]Servlet中使用JDBC实现注册业务(一)

  1. 环境准备
    1.创建表

    create database newdb3 character set utf8;
    use newdb3;
    create table user2(
    	id int primary key auto_increment,
    	username varchar(20),
    	password varchar(20)
    )charset=utf8;
    
    1. 数据库链接文件
    		driver=com.mysql.cj.jdbc.Driver
    		url=jdbc:mysql://localhost:3306/newdb3?useUnicode=true&characterEncoding=UTF-8
    		username=root
    		password=
    

    DBUtils.java

    	package cn.tedu.servlet;
    	
    	import org.apache.commons.dbcp.BasicDataSource;
    	
    	import java.io.IOException;
    	import java.io.InputStream;
    	import java.sql.Connection;
    	import java.sql.SQLException;
    	import java.util.Properties;
    	
    	public class DBUtils {
    	
    	        //支持数据库连接池和jdbc.properties的DBUtils类
    	        //声明一个数据连接池对象
    	        private static BasicDataSource ds;
    	        //静态块中,初始化数据连接对象
    	        static {
    	            //获得这个文件的输入流
    	            InputStream is = DBUtils.class.getClassLoader()
    	                    .getResourceAsStream("jdbc.properties");
    	
    	            //实例化Properties类用于解析jdbc.properties
    	            Properties p = new Properties();
    	
    	            //加载jdbc.properties文件中获得连接数据库需要的参数变量
    	            try {
    	                p.load(is);
    	            } catch (IOException e) {
    	                e.printStackTrace();
    	            }
    	
    	            //从jdbc.properties文件中获得连接数据库需要的参数变量
    	            String driver = p.getProperty("driver");
    	            String url = p.getProperty("url");
    	            String username = p.getProperty("username");
    	            String password = p.getProperty("password");
    	
    	            //将获取的信息赋值给数据连接池作为参数
    	            //赋值前先进行实例化对象,不然后报空指针错误
    	            ds = new BasicDataSource();
    	            ds.setDriverClassName(driver);
    	            ds.setUrl(url);
    	            ds.setUsername(username);
    	            ds.setPassword(password);
    	
    	            //不设置也有默认值
    	            ds.setInitialSize(3);
    	            ds.setMaxActive(5);
    	            //最大空闲数
    	            ds.setMaxIdle(3);
    	        }
    	
    	        //获得连接结构没有变化
    	        public static Connection getConn() throws SQLException {
    	            //通过连接池获取连接对象
    	            Connection conn = ds.getConnection();
    	//        System.out.println(conn);
    	            return conn;
    	        }
    	    }
    
  2. 注册、登录、修改密码功能

  • 注册
<body>
    <form action="RegServlet" method="post">
        账号:<input type="text" name="username" placeholder="请输入用户名"><br>
        密码:<input type="password" name="password" placeholder="请输入密码"><br>
        <input type="submit" value="注册">
    </form>
</body>
public class RegServlet extends HttpServlet {

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        request.setCharacterEncoding("utf-8");
        String username = request.getParameter("username");
        String password = request.getParameter("password");
        //使用jdbc注册用户
        System.out.println(username+":"+password);
        try(Connection conn = DBUtils.getConn()){
            //定义sql语句
            String sql="insert into user2 values(null,?,?)";
            PreparedStatement st = conn.prepareStatement(sql);
            //为?赋值
            st.setString(1,username);
            st.setString(2,password);
            //执行sql
            int num = st.executeUpdate();
            if (num>0){
                System.out.println("注册成功");
                //防止中文乱码
                response.setContentType("text/html;charset=utf-8");
                PrintWriter out = response.getWriter();
                out.print("注册成功");
                out.close();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
  • 登录
<body>
<form action="LoginServlet" method="post">
    账号:<input type="text" name="username" placeholder="请输入账号"><br>
    密码:<input type="password" name="password" placeholder="请输入密码"><br>
    <input type="submit" value="登录">
</form>
</body>
public class LoginServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        request.setCharacterEncoding("utf-8");
        String username = request.getParameter("username");
        String password = request.getParameter("password");
        System.out.println(username+":"+password);
        try(Connection conn = DBUtils.getConn()){
            String sql = "select count(*) from user2 where username=? and password=?";
            PreparedStatement ps = conn.prepareStatement(sql);
            ps.setString(1,username);
            ps.setString(2,password);

            //执行查询,返回结果集
            ResultSet rs = ps.executeQuery();

            //防止乱码
            response.setContentType("text/html;charset=utf-8");
            PrintWriter out = response.getWriter();
            while (rs.next()){
                //获得查询出的人数
                int count = rs.getInt(1);
                if (count>0){
                    System.out.println("console:登录成功");
                    out.print("登录成功");
                }else {
                    System.out.println("console:登录失败");
                    out.print("登录失败");
                }
            }
            out.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    }
}

删除

<body>
<form action="UpdateServlet" method="post">
    账号:<input type="text" name="username" placeholder="请输入用户名"><br>
    原密码:<input type="password" name="oldpwd" placeholder="请输入密码"><br>
    新密码:<input type="password" name="newpwd" placeholder="请输入密码"><br>
    <input type="submit" value="修改">
</form>
</body>
public class UpdateServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        request.setCharacterEncoding("utf-8");
        String username = request.getParameter("username");
        String newpwd = request.getParameter("newpwd");
        String oldpwd = request.getParameter("oldpwd");
        System.out.println(username+","+newpwd+","+oldpwd);

        try(Connection conn = DBUtils.getConn()){
            String sql = "update user2 set password=? where username=? and password=?";
            PreparedStatement ps = conn.prepareStatement(sql);
            ps.setString(1,newpwd);
            ps.setString(2,username);
            ps.setString(3,oldpwd);
            int num = ps.executeUpdate();
            System.out.println(num);

            if (num>0){
                System.out.println("修改成功");
                //防止中文乱码
                response.setContentType("text/html;charset=utf-8");
                PrintWriter out = response.getWriter();
                out.print("修改成功");
                out.close();
            }else{
                System.out.println("修改失败");
                //防止中文乱码
                response.setContentType("text/html;charset=utf-8");
                PrintWriter out = response.getWriter();
                out.print("修改失败");
                out.close();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-01-03 15:56:35  更:2022-01-03 15:58:25 
 
开发: 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 8:42:54-

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