使用POST请求完成登陆

简易的前端

<body>
    <h1>登录到系统</h1>
    <form method="post" action="login">
        <hr>
        <div>
            <label>
                <input type="text" placeholder="用户名" name="username">
            </label>
        </div>
        <div>
            <label>
                <input type="password" placeholder="密码" name="password">
            </label>
        </div>
        <div>
            <button>登录</button>
        </div>
    </form>
</body>

 通过修改form标签的属性,现在我们点击登录按钮,会自动向后台发送一个POST请求,请求地址为当前地址+/login

先编写一个Servlet

@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    //首先设置一下响应类型
    resp.setContentType("text/html;charset=UTF-8");
    //获取POST请求携带的表单数据
    Map<String, String[]> map = req.getParameterMap();
    //判断表单是否完整
    if(map.containsKey("username") && map.containsKey("password")) {
        String username = req.getParameter("username");
        String password = req.getParameter("password");

        //权限校验(待完善)
    }else {
        resp.getWriter().write("错误,您的表单数据不完整!");
    }
}

编写Mybatis的依赖和配置文件,创建一个表,用于存放我们用户的账号和密码

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>

    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/jdbc?serverTimezone=GMT%2B8"/>
                <property name="username" value="root"/>
                <property name="password" value="zzp123456"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper class="com.example.mapper.TestMapper"/>
    </mappers>
</configuration>

配置完成后,在Servlet的init方法中编写Mybatis初始化代码,因为它只需要初始化一次

SqlSessionFactory factory;
@SneakyThrows
@Override
public void init() throws ServletException {
    factory = new SqlSessionFactoryBuilder().build(Resources.getResourceAsReader("mybatis-config.xml"));
}

创建一个实体类以及Mapper来进行用户信息查询

@Data
public class User {
    String username;
    String password;
}
public interface UserMapper {

    @Select("select * from users where username = #{username} and password = #{password}")
    User getUser(@Param("username") String username, @Param("password") String password);
}

完善一下登陆验证逻辑

//登陆校验(待完善)
try (SqlSession sqlSession = factory.openSession(true)){
    UserMapper mapper = sqlSession.getMapper(UserMapper.class);
    User user = mapper.getUser(username, password);
    //判断用户是否登陆成功,若查询到信息则表示存在此用户
    if(user != null){
        resp.getWriter().write("登陆成功!");
    }else {
        resp.getWriter().write("登陆失败,请验证您的用户名或密码!");
    }
}

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用 requests 库模拟请求微信小程序的登陆并签到。具体步骤如下: 1. 获取小程序的 AppID 和 AppSecret,以及用户的账号和密码。 2. 使用账号和密码向微信服务器发送请求,获取用户的 OpenID 和 SessionKey。 3. 使用 OpenID 和 SessionKey 向小程序服务器发送请求,获取用户的 Token。 4. 使用 Token 向小程序服务器发送请求完成签到操作。 以下是示例代码: ```python import requests import json # 小程序的 AppID 和 AppSecret APP_ID = 'your_app_id' APP_SECRET = 'your_app_secret' # 用户的账号和密码 USERNAME = 'your_username' PASSWORD = 'your_password' # 请求微信服务器,获取用户的 OpenID 和 SessionKey url = 'https://api.weixin.qq.com/sns/jscode2session' params = { 'appid': APP_ID, 'secret': APP_SECRET, 'js_code': 'your_js_code', 'grant_type': 'authorization_code' } response = requests.get(url, params=params) data = json.loads(response.text) openid = data['openid'] session_key = data['session_key'] # 请求小程序服务器,获取用户的 Token url = 'https://your_mini_program_server.com/api/token' params = { 'openid': openid, 'session_key': session_key } response = requests.get(url, params=params) data = json.loads(response.text) token = data['token'] # 请求小程序服务器,完成签到操作 url = 'https://your_mini_program_server.com/api/checkin' headers = { 'Authorization': 'Bearer ' + token } response = requests.post(url, headers=headers) data = json.loads(response.text) if data['success']: print('签到成功') else: print('签到失败') ``` 注意:以上代码仅为示例,实际使用时需要根据具体情况进行修改。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值