Servlet+JDBC实现简单的登录注册功能

前言

在开始前记得导入jdbc包,使用Tomcat时,如发生找不到JDBC驱动的错误,请在Tomcat的配置lib文件夹下添加jdbc包。
如何使用Java连接MySQLl数据库可以查看
点击查看

正文

User对象与Dao

为简略操作,User对象仅创建三个属性

public class User {
   
	private int id;
    private String username;
    private String password;
    public User(int id, String username, String password) {
   
        this.id = id;
        this.username = username;
        this.password = password;
    }
    public User(String username, String password) {
   
        this.username = username;
        this.password = password;
    }
    public User(){
   
    }

登录方法的数据库操作

public boolean selectByName(User user){
   
        Connection connection = null;
        PreparedStatement statement = null;
        ResultSet resultSet = null;
        boolean s=false;
        try{
   
            connection = DBUtil.getConnection();
            //3. 写sql语句
            String sql = "select * from users where user_name = ?";
            //4. 获得statement对象
            statement = connection.prepareStatement(sql);
            statement.setString(1,user.getUsername());
            //5. 执行SQL语句,得到结果集
            resultSet = statement.executeQuery();
            //6. 处理结果集
            while(resultSet.next()){
   
                user.getPassword().equals(resultSet.getString(3));
                s=true;
            }
        }catch(ClassNotFoundException e
  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是一个简单的留言本的JSP+Servlet+JDBC实现代码,包括注册、登陆、留言和查询功能。 首先,需要创建一个数据库,包含两个表格:用户表和留言表。 用户表: ```sql CREATE TABLE `user` ( `id` int(11) NOT NULL AUTO_INCREMENT, `username` varchar(20) NOT NULL, `password` varchar(20) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; ``` 留言表: ```sql CREATE TABLE `message` ( `id` int(11) NOT NULL AUTO_INCREMENT, `username` varchar(20) NOT NULL, `content` varchar(255) NOT NULL, `time` datetime NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; ``` 接下来,创建一个JavaBean类User,包含id、username和password属性,以及对应的getter和setter方法。同理,创建一个JavaBean类Message,包含id、username、content和time属性,以及对应的getter和setter方法。 然后,创建一个UserDao类,用于操作用户表。包括注册、登陆和查询用户信息的方法。 ```java public class UserDao { public boolean register(User user) { Connection conn = null; PreparedStatement ps = null; try { conn = DBUtil.getConnection(); String sql = "INSERT INTO user(username,password) VALUES(?,?)"; ps = conn.prepareStatement(sql); ps.setString(1, user.getUsername()); ps.setString(2, user.getPassword()); int result = ps.executeUpdate(); if (result > 0) { return true; } } catch (SQLException e) { e.printStackTrace(); } finally { DBUtil.close(conn, ps, null); } return false; } public User login(String username, String password) { Connection conn = null; PreparedStatement ps = null; ResultSet rs = null; try { conn = DBUtil.getConnection(); String sql = "SELECT * FROM user WHERE username=? AND password=?"; ps = conn.prepareStatement(sql); ps.setString(1, username); ps.setString(2, password); rs = ps.executeQuery(); if (rs.next()) { User user = new User(); user.setId(rs.getInt("id")); user.setUsername(rs.getString("username")); user.setPassword(rs.getString("password")); return user; } } catch (SQLException e) { e.printStackTrace(); } finally { DBUtil.close(conn, ps, rs); } return null; } public User getUserById(int id) { Connection conn = null; PreparedStatement ps = null; ResultSet rs = null; try { conn = DBUtil.getConnection(); String sql = "SELECT * FROM user WHERE id=?"; ps = conn.prepareStatement(sql); ps.setInt(1, id); rs = ps.executeQuery(); if (rs.next()) { User user = new User(); user.setId(rs.getInt("id")); user.setUsername(rs.getString("username")); user.setPassword(rs.getString("password")); return user; } } catch (SQLException e) { e.printStackTrace(); } finally { DBUtil.close(conn, ps, rs); } return null; } } ``` 接着,创建一个MessageDao类,用于操作留言表。包括添加留言和查询所有留言的方法。 ```java public class MessageDao { public boolean addMessage(Message message) { Connection conn = null; PreparedStatement ps = null; try { conn = DBUtil.getConnection(); String sql = "INSERT INTO message(username,content,time) VALUES(?,?,?)"; ps = conn.prepareStatement(sql); ps.setString(1, message.getUsername()); ps.setString(2, message.getContent()); ps.setTimestamp(3, new Timestamp(message.getTime().getTime())); int result = ps.executeUpdate(); if (result > 0) { return true; } } catch (SQLException e) { e.printStackTrace(); } finally { DBUtil.close(conn, ps, null); } return false; } public List<Message> getAllMessages() { List<Message> list = new ArrayList<>(); Connection conn = null; PreparedStatement ps = null; ResultSet rs = null; try { conn = DBUtil.getConnection(); String sql = "SELECT * FROM message ORDER BY time DESC"; ps = conn.prepareStatement(sql); rs = ps.executeQuery(); while (rs.next()) { Message message = new Message(); message.setId(rs.getInt("id")); message.setUsername(rs.getString("username")); message.setContent(rs.getString("content")); message.setTime(new Date(rs.getTimestamp("time").getTime())); list.add(message); } } catch (SQLException e) { e.printStackTrace(); } finally { DBUtil.close(conn, ps, rs); } return list; } } ``` 最后,创建一个Servlet类MessageServlet,处理用户的请求。包括注册、登陆、添加留言和查询所有留言的方法。 ```java public class MessageServlet extends HttpServlet { UserDao userDao = new UserDao(); MessageDao messageDao = new MessageDao(); @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { String action = req.getParameter("action"); if ("logout".equals(action)) { req.getSession().invalidate(); resp.sendRedirect("index.jsp"); return; } List<Message> list = messageDao.getAllMessages(); req.setAttribute("list", list); req.getRequestDispatcher("message.jsp").forward(req, resp); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { String action = req.getParameter("action"); if ("register".equals(action)) { String username = req.getParameter("username"); String password = req.getParameter("password"); User user = new User(); user.setUsername(username); user.setPassword(password); if (userDao.register(user)) { resp.sendRedirect("index.jsp"); } else { req.setAttribute("message", "注册失败,请重试!"); req.getRequestDispatcher("register.jsp").forward(req, resp); } } else if ("login".equals(action)) { String username = req.getParameter("username"); String password = req.getParameter("password"); User user = userDao.login(username, password); if (user != null) { req.getSession().setAttribute("user", user); resp.sendRedirect("message?action=list"); } else { req.setAttribute("message", "用户名或密码错误!"); req.getRequestDispatcher("index.jsp").forward(req, resp); } } else if ("add".equals(action)) { String content = req.getParameter("content"); User user = (User) req.getSession().getAttribute("user"); Message message = new Message(); message.setUsername(user.getUsername()); message.setContent(content); message.setTime(new Date()); if (messageDao.addMessage(message)) { resp.sendRedirect("message?action=list"); } else { req.setAttribute("message", "留言失败,请重试!"); req.getRequestDispatcher("message.jsp").forward(req, resp); } } } } ``` 其中,DBUtil是一个工具类,用于获取数据库连接和关闭资源。可以在此处忽略。 这样,一个简单的留言本的JSP+Servlet+JDBC实现就完成了。可以根据需要进行修改和扩展。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值