一篇超级详细的jsp+servlet+jdbc+mysql检验登录操作(IntelliJ IDEA)

以下为工程目录,可以提前建好:
在这里插入图片描述

第一步:首先在数据库建好表:

该表为用于登录的用户信息表。
在这里插入图片描述

第二步:做好前端登录的login.jsp页面:


代码如下:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>登录</title>
</head>
<body>
    <form action="LoginServlet" method="post">
        帐号:<input name="username" type="text"/><br>
        密码:<input name="password" type="password"/><br>
        <input value="登录" type="submit"/><br>
    </form>

</body>
</html>

第三步:集成JDBC环境

3.1 导入mysql的驱动添加到module中。
3.1.1 将下载好的mysql驱动复制粘贴到web/WEB-INF/lib中。

在这里插入图片描述

3.1.2 打开project Structure(Ctrl + Alt + Shift +s),点击左侧Modules,选择你要添加的module,点击右侧+按钮找到mysql的jar包,点击ok完成。

在这里插入图片描述
在这里插入图片描述

3.2 创建jdbc.properties,存放在src下 , 注意 : 一定要是项目的src下,这样才能被读取到。
driverclass=com.mysql.jdbc.Driver
# stuproject为数据库的表名
url=jdbc:mysql://localhost/stuproject
# 连接数据库的账号
name=root
# 连接数据库的密码(安装mysql的时候自己设的)
password=123456
3.3 创建用于获取连接和关闭数据库连接资源的工具类JDBCUtils.java,可以创建一个utils包专门用于存放工具类 , 该类中所有方法都为静态方法 , 可以直接通过类名JDBCUtils调用
public class JDBCUtils {

    static String driverclass = null;
    static String url = null;
    static String name = null;
    static String password = null;

    static{
        try {
            Properties pros = new Properties();
            // 利用类加载器classLoader获取src下的资源
            InputStream is = JDBCUtils.class.getClassLoader().getResourceAsStream("jdbc.properties");
            pros.load(is);//读取输入流,也就是读取我们在jdbc.properties下存放的各种连接数据库的属性

            //读取连接数据库的属性,通过这些属性才能连接到数据库
            driverclass = pros.getProperty("driverclass");
            url = pros.getProperty("url");
            name = pros.getProperty("name");
            password = pros.getProperty("password");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    /**
     *  该方法用于获取数据库连接
     * @return
     */

    public static Connection getConn(){

        Connection conn = null;
        try {
            //1.利用反射注册driverclass
            Class.forName(driverclass);
            //2.建立连接 参数一:协议 + 访问的数据库,参数二:用户名,参数三: 密码。
            conn = DriverManager.getConnection(url, name, password);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return conn;
    }

    /**
     *  该方法用于关闭连接资源,不关闭就会浪费资源
     * @param conn
     */
    public static void release(Connection conn,PreparedStatement ps){
        closeConn(conn);
        closePs(ps);
    }
    public static void release(Connection conn,PreparedStatement ps,ResultSet rs){
        closePs(ps);
        closeConn(conn);
        closeRs(rs);
    }


    public static void closeConn(Connection conn){
        try {
            if(conn != null){
                conn.close();
            }
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            conn = null;
        }
    }

    public static void closePs(PreparedStatement ps){
        try {
            if(ps !=null){
                ps.close();
            }
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            ps=null;
        }
    }
    public static void closeRs(ResultSet rs){
        try {
            if(rs !=null){
                rs.close();
            }
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            rs=null;
        }
    }

}

第四步:搭建用于处理数据库表的DAO(操作表)和DaoImpl(实现检验登录的方法)。

4.1 UserDao接口(用于操作User表)

接口定义了一套标准,没有具体的实现。

public interface UserDao {
    /**
     *  检验登录的方法
     */
    boolean login(String username,String password);
}

4.2 UserDaoImpl实现类

该类实现了UserDao接口,用于完成检验登录的方法。

public class UserDaoImpl implements UserDao {
    /**
     *  用于检验登录的方法
     * @param username
     * @param password
     * @return
     */
    @Override
    public boolean login(String username, String password) {
        Connection conn = null;
        PreparedStatement ps = null;
        ResultSet rs = null;

        try {
            //1.获取数据库连接
            conn = JDBCUtils.getConn();
            //2.预编译sql语句
            String sql = "select * from t_user where username=? and password=?";
            ps = conn.prepareStatement(sql);
            //3.填充占位符
            ps.setString(1,username);
            ps.setString(2,password);

            //4.执行查询语句
            rs = ps.executeQuery();
            //5.如果结果集有对象,则查询到了,即返回true。若没查到。则返回false
            return rs.next();

        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            //6.关闭资源
            JDBCUtils.release(conn,ps,rs);
        }

        return false;
    }
}

第五步:完成用于跳转的LoginServlet.java

public class LoginServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        request.setCharacterEncoding("utf-8");//设置request的字符集
        response.setContentType("text/html;charset=utf-8");//设置response的字符集

        //1.获取从前端页面中传过来的username和password值
        String userName = request.getParameter("username");
        String passWord = request.getParameter("password");

        //2.创建dao实现类的对象,调用检验登录的方法login().
        UserDaoImpl userDao = new UserDaoImpl();
        //数据库查到了即返回 true,没查到即返回 false
        boolean isSuccess = userDao.login(userName, passWord);

        if(isSuccess){
            //用于相应给客户,success为true --->登录成功
            response.getWriter().write("登录成功");
        }else{
            response.getWriter().write("登录失败");
        }
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doPost(request,response);
    }
}
第六步. 配置web.xml,这是最关键的一步
<servlet>
    <servlet-name>MyServletName</servlet-name>
    <! servlet-name随意起,和下面的servlet-name对应 !>
    <servlet-class>com.sms.servlet.LoginServlet</servlet-class>
</servlet>
	<! 这块是LoginServlet类的全类名 !>
  
<servlet-mapping>
    <servlet-name>MyServletName</servlet-name>
    <! 和上面的servlet-name对应!>
    <url-pattern>/LoginServlet</url-pattern>
    <! jsp表单发送的请求路径,和jsp里form标签action属性值一致 !>
</servlet-mapping>
最后一步,运行login.jsp,输入数据库中有的username和password,登录成功后页面会打印出登录成功

在这里插入图片描述

  • 7
    点赞
  • 70
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
学生成绩管理系统是一个比较典型的Web应用程序,可以使用Java ServletJSP技术实现。下面是一个简单的实现步骤: 1. 确定系统功能和设计数据库表 首先,我们需要确定学生成绩管理系统的功能需求,例如学生信息管理、课程信息管理、成绩录入和查询等等。然后,设计数据库表格以存储数据。 例如,我们可以设计以下几个表格: 学生表(Student):学生ID、姓名、性别、出生日期、联系方式等。 课程表(Course):课程ID、课程名称、学分等。 成绩表(Score):学生ID、课程ID、成绩等。 2. 创建项目和配置环境 使用IntelliJ IDEA创建一个Web项目,然后配置环境。我们需要配置Tomcat服务器、MySQL数据库连接和JDBC驱动程序等。 3. 实现数据访问层 在项目中创建一个Java类,用于实现数据库的访问操作。我们可以使用JDBC技术连接数据库,然后实现数据的增删改查操作。 4. 实现业务逻辑层 在项目中创建另一个Java类,用于实现业务逻辑。例如,实现学生信息管理、课程信息管理、成绩录入和查询等功能。 5. 实现表示层 使用JSP技术实现用户界面,为用户提供交互界面。例如,实现学生信息管理页面、课程信息管理页面、成绩录入页面和查询页面等。 6. 部署和测试系统 最后,我们需要将项目部署到Tomcat服务器上,并测试学生成绩管理系统的功能和性能。 总之,使用IntelliJ IDEAJava ServletJSPMySQL和Tomcat等技术实现学生成绩管理系统是非常简单的。只需要按照上述步骤一步步实现,就可以得到一个完整的Web应用程序。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值