Servlet初体验--用户登录

数据库代码

DROP TABLE IF EXISTS `user`;
CREATE TABLE `user`  (
  `uid` int(0) NOT NULL,
  `username` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL,
  `passwd` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL,
  PRIMARY KEY (`uid`) USING BTREE,
  UNIQUE INDEX `username`(`username`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_bin ROW_FORMAT = Dynamic;

INSERT INTO `user` VALUES (100, '张三', '888');
INSERT INTO `user` VALUES (101, '李四', '000');

SET FOREIGN_KEY_CHECKS = 1;


html代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>登录页面</title>
</head>
<body>
<form action="http://localhost:8080/web01/login" method="get">
    姓名:<input type="text" name="username"><br>
    密码:<input type="password" name="passwd"><br>

    <input type="submit" value="登录">
</form>

</body>
</html>

Java代码

package com.gg;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.*;

/**
 * @author Charles
 * @version 1.0
 * @date 2022/4/1 17:10
 */
public class LoginServlet extends HttpServlet {

    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //1.接收请求
        //获取请求参数
        String username= req.getParameter("username");
        String passwd=req.getParameter("passwd");
        //2.处理请求
        //和数据库对比   使用JDBC
        int i=-1;
        try {
            Class.forName("com.mysql.cj.jdbc.Driver");
            String url="jdbc:mysql://localhost:3306/web01?serverTimezone=Asia/Shanghai";
            String user="root";
            String password="MYGAO";

            Connection conn = DriverManager.getConnection(url, user, password);

            String sql="select * from user where username=?";
            PreparedStatement ps = conn.prepareStatement(sql);
            ps.setString(1,username);

            ResultSet rs = ps.executeQuery();
            if (rs.next()){
                //用户存在
                if (rs.getString("passwd").equals(passwd)){
                    //登陆成功
                    i=2;
                }else{
                    //密码错误
                    i=1;
                }

            }else{
                //用户不存在
                i=0;
            }
            rs.close();
            ps.close();
            conn.close();
        } catch (ClassNotFoundException | SQLException e) {
            e.printStackTrace();
        }
        //3.设置响应
        //打印输出流
        PrintWriter out = resp.getWriter();
        if (i==0){
            out.write("login error:username note found");
        }else if(i==1){
            out.write("login error:password is wrong");
        }else{
            out.write("login success");
        }

        out.close();

    }
}

web配置代码

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">

    <!-- 配置LoginServlet信息-->
    <servlet>
        <servlet-name>login</servlet-name>
        <servlet-class>com.gg.LoginServlet</servlet-class>
    </servlet>

    <servlet-mapping>
        <servlet-name>login</servlet-name>
        <!--http://localhost:8080/web01/login-->
        <url-pattern>/login</url-pattern>
    </servlet-mapping>
</web-app>

运行结果:
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值