jsp与数据库

本文探讨了如何使用JSP进行数据库操作,包括连接、查询、插入和更新数据等核心步骤,旨在帮助开发者掌握JSP在数据库应用中的实践技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<%@ page language="java"  pageEncoding="UTF-8" %>
<html>
    <head>
        <title>用户注册</title>
        <script type="text/javascript" src="js/news.js"></script>
    </head>
    <%
        //获取验证消息
        request.setCharacterEncoding("UTF-8");
        String message = (String) request.getAttribute("message");
    %>
    <body>
      <div id="mess" style="color:red;">
        <%=message != null && !message.equals("") ? message : "" %>
      </div>
      <form name="form1" method="post" action="control.jsp" 
            onsubmit="return checkAll()">
      <table>
      <tr>
        <td>用户名:</td>
        <td><input type="text" name="userName" id="userName" 
                value='<%=request.getParameter("userName") == null ? ""
                        : request.getParameter("userName") %>'> 
        </td>
      </tr>
      <tr>    
        <td>输入登录密码:</td>
        <td><input type="password" name="pwd" id="pwd" 
                value='<%=request.getParameter("pwd") == null ? ""
                        : request.getParameter("pwd") %>'>
        </td>
      </tr>
      <tr>
        <td>再次输入密码:</td>
        <td><input type="password" name="validatepwd" id="validatepwd" 
                value='<%=request.getParameter("validatepwd") == null ? ""
                        : request.getParameter("validatepwd") %>'>
        </td>
      </tr>
      <tr>
        <td></td>
        <td><input type="submit" value="注册"></td>
      </tr>
      </table>
      </form>
    <body>
</html>

control.jsp

<%@page import="com.sunny.dao.UserDao"%>
<%@page import="com.sunny.daoimpl.UserDaoImpl"%>
<%@page import="com.sunny.entity.User"%>


<%@ page language="java" pageEncoding="UTF-8" %>
<html>
    <head>
        <title>注册处理页面</title>
    </head>
    <body>
      <%
          request.setCharacterEncoding("UTF-8");
          String name = request.getParameter("userName");
          String pwd = request.getParameter("pwd");
          String validatepwd = request.getParameter("validatepwd");
          if (name == null || name.equals("")) {
              request.setAttribute("message", "用户名不能为空");
              request.getRequestDispatcher("register.jsp")
                      .forward(request, response);
          } else if (pwd == null || pwd.equals("")) {
              request.setAttribute("message", "密码不能为空");
              request.getRequestDispatcher("register.jsp")
                      .forward(request, response);
          }else if(validatepwd==null || validatepwd.equals("")){
              request.setAttribute("message","确认密码不能为空");
          }  else if (!validatepwd.equals(pwd)) {
              request.setAttribute("message", "两次输入的密码不一致");
              request.getRequestDispatcher("register.jsp")
                      .forward(request, response);
          } else {
              User user=new User();
              user.setUname(name);
              user.setUpwd(pwd);
              UserDao userDao=new UserDaoImpl();
              int result=userDao.add(user);
              if (result > 0) {
                  out.println("<script type='text/javascript'>"
                  +"alert('注册成功!马上登录。');location.href='login.jsp';"
                  +"</script>");
              } else {
                  request.setAttribute("message", "注册失败,请重新注册。");
                  request.getRequestDispatcher("register.jsp")
                        .forward(request, response);
              }
          }
      %>
    </body>
</html>
    package com.sunny.dao;

import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;
/**
 * 数据库连接与关闭工具类。
 */
public class BaseDao {

    private static String driver; // 数据库驱动字符串
    private static String url; // 连接URL字符串
    private static String user; // 数据库用户名
    private static String password; // 用户密码
    Connection conn = null;// 数据连接对象

    static{//静态代码块,在类加载的时候执行
        init();
    }

    /**
     * 初始化连接参数,从配置文件里获得
     */
        public static void init(){
            Properties params=new Properties();
            String configFile = "database.properties";//配置文件路径
            //加载配置文件到输入流中
            InputStream is=BaseDao.class.getClassLoader().getResourceAsStream(configFile);

            try {
                //从输入流中读取属性列表
                params.load(is);
            } catch (IOException e) {
                e.printStackTrace();
            }
            //根据指定的获取对应的值
            driver=params.getProperty("driver");
            url=params.getProperty("url");
            user=params.getProperty("user");
            password=params.getProperty("password");
        }   
    /**
     * 获取数据库连接对象。
     */
    public Connection getConnection() {
        if(conn==null){
            // 获取连接并捕获异常
            try {
                Class.forName(driver);
                conn = DriverManager.getConnection(url, user, password);
            } catch (Exception e) {
                e.printStackTrace();// 异常处理
            }
        }   
        return conn;// 返回连接对象
    }
    /**
     * 关闭数据库连接。
     * @param conn 数据库连接
     * @param stmt Statement对象
     * @param rs 结果集
     */
    public void closeAll(Connection conn, Statement stmt, 
                    ResultSet rs) {
        // 若结果集对象不为空,则关闭
        if (rs != null) {
            try {
                rs.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        // 若Statement对象不为空,则关闭
        if (stmt != null) {
            try {
                stmt.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        // 若数据库连接对象不为空,则关闭
        if (conn != null) {
            try {
                conn.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
    /**
     * 增、删、改的操作
     * @param sql 预编译的 SQL 语句          
     * @param param 预编译的 SQL 语句中的‘?’参数的字符串数组          
     * @return 影响的行数
     */
    public int executeUpdate(String preparedSql, Object[] param) {
        PreparedStatement pstmt = null;
        int num = 0;
        conn =  getConnection(); 
        try {
            pstmt = conn.prepareStatement(preparedSql);
            if (param != null) {
                for (int i = 0; i < param.length; i++) {
                    pstmt.setObject(i + 1, param[i]); // 为预编译sql设置参数
                }
            }
            num = pstmt.executeUpdate(); 
        } catch (SQLException e) {
            e.printStackTrace();
        } finally{
            closeAll(conn, pstmt, null);
        }
        return num;
    }
    public ResultSet executeQuery(String sql,Object[]  param) throws Exception{
        PreparedStatement pstmt = null;
        ResultSet rs=null;
        conn =  getConnection(); 
        try {
            pstmt = conn.prepareStatement(sql);
            if (param != null) {
                for (int i = 0; i < param.length; i++) {
                    pstmt.setObject(i + 1, param[i]); // 为预编译sql设置参数
                }
            }
             rs= pstmt.executeQuery(); 
        } catch (SQLException e) {
            e.printStackTrace();
        } finally{
            closeAll(conn, pstmt, rs);
        }
        return rs;
    }


}


package com.sunny.daoimpl;


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



import com.sunny.dao.BaseDao;
import com.sunny.dao.UserDao;
import com.sunny.entity.User;

public class UserDaoImpl extends BaseDao implements UserDao {

    @Override
    public int  add(User user) {
        int result=0;
        Connection connection=null;
        connection=this.getConnection();
        String sql="insert into user (uname,upwd) values (?,?)";
        Object []  param=new Object[]{user.getUname(),user.getUpwd()};
         result=this.executeUpdate(sql, param);
         return result;
    }

    @Override
    /**
     * 根据对象查找对象
     */
    public User find(User user) {
        Connection conn = null;
        PreparedStatement pstmt = null;
        ResultSet rs = null;
        User user2=null;
        try {
            conn = this.getConnection();
            String sql = "select uname,upwd from user where  uname = ? and upwd=?";
            pstmt = conn.prepareStatement(sql);
            pstmt.setString(1, user.getUname());
            pstmt.setString(2, user.getUpwd());
            rs = pstmt.executeQuery();      //获取user对象的信息
            while(rs.next()) {
                //将获取到的user对象的属性赋给一个新的对象user2
                user2 = new User();
                user2 .setUname(rs.getString("uname"));
                user2.setUpwd(rs.getString("upwd"));
            }
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            this.closeAll(conn, pstmt, rs);
        }
        return user2;
    }
}


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值