JavaWeb怎么获取当前登录用户的数据库id号

 以下为部分代码,也不知道该传些什么,所以用简单方法怎么获取登录的id号啊

评论类

package mywebtest.controller;


import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.*;//WebServlet地址
import jakarta.servlet.http.*;//继承HttpServlet

import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;

@WebServlet("/details")
public class DetailsServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;
 
    private static final String JDBC_DRIVER="com.mysql.jdbc.Driver";
    private static final String DB_URL="jdbc:mysql://localhost:3306/we?useUnicode=true&characterEncoding=utf-8&sslMode=DISABLED&serverTimezone=UTC";
    private static final String DB_USER="root";
    private static final String DB_PASSWORD="666666";

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //req.getParameter()将details.html的参数获取出来
        String content=req.getParameter("content");//获取传入内容的参数

        //不行。。。user user = (user) req.getSession().getAttribute("user");
        //Integer id= user.getId();//获取数据库用户的id
        //String username =user.getUsername();//获取数据库用户的账号名字

        //也不行。。。Principal principal = req.getUserPrincipal();
        /*getUserPrincipal()返回一个java.security.Principal对象,
        该对象包含当前授权用户的名称使用request.getUserPrincipal().getName()得到用户名
        没有通过认证就没有返回值,是用户登录后才有值的,通过了JAAS认证,也就是登录*/
       // if (principal != null) {
            //userId = principal.getName();
       // }


        //设置字符集
        resp.setCharacterEncoding("UTF-8");
        req.setCharacterEncoding("UTF-8");
        resp.setContentType("text/html; charset=UTF-8");

        if(content==null){//如果输入内容为空,则返回评论输入页面
            try{
                req.getRequestDispatcher("/details.html").forward(req,resp);
            }catch (ServletException e) {
                e.printStackTrace();
            }
        }

        // 数据库操作
        Connection conn=null;
        PreparedStatement pstmt=null;
        try{
            try{
                Class.forName(JDBC_DRIVER);

            } catch (ClassNotFoundException e) {
                e.printStackTrace();
            }
            conn= DriverManager.getConnection(DB_URL,DB_USER,DB_PASSWORD);
            //准备SQL语句****非空字段赋初始值
            String sql="INSERT INTO user(id,content,username)VALUES(?,?,?)";
            try{
                pstmt=conn.prepareStatement(sql);
            } catch (SQLException throwables) {
                throwables.printStackTrace();
            }
            pstmt.setString(1, id);
            pstmt.setString(2,content);
            pstmt.setString(3,username);
            int affectedRows = pstmt.executeUpdate();
            //pstmt.executeUpdate(); 是一个 Java 代码行,它的作用是执行一个 SQL 数据库更新操作,并返回【更新的】行数。
            if (affectedRows > 0) {
                resp.getWriter().println("评论成功!");
            } else {
                resp.getWriter().println("评论为空,请重新评论。");
            }
        } catch (SQLException e) {
            e.printStackTrace();
            resp.getWriter().println("发生错误:" + e.getMessage());
        } finally {
            // 关闭资源
            try {
                if (pstmt != null) {
                    pstmt.close();
                }
            } catch (SQLException e) { /* ignored */ }
            try {
                if (conn != null) {
                    conn.close();
                }
            } catch (SQLException e) { /* ignored */ }
        }

    }
}

登录类

package mywebtest.controller;

import mywebtest.service.UserService;
import mywebtest.service.impl.UserServiceImpl;
import mywebtest.utils.LoginResponse;
import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;

import java.io.IOException;
//登录
@WebServlet("/login")
public class LoginServlet extends HttpServlet {

    private UserService userService = new UserServiceImpl();


    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {


        // 获取login.index里的登录参数请求参数
        String username = request.getParameter("name");
        String password = request.getParameter("password");
        System.out.println(username + " " + password);
        // 处理登录逻辑
        LoginResponse loginResponse = userService.login(username, password);
        //Response对请求的参数做出响应

        //设置字符集
       /* response.setCharacterEncoding("UTF-8");
        request.setCharacterEncoding("UTF-8");
        response.setContentType("text/html; charset=UTF-8");*/

        if(loginResponse.getCode() == 400){
            request.setAttribute("usernameError", "用户名错误");
            System.out.println("用户名错误400");
            request.getRequestDispatcher("/login.jsp").forward(request, response);
        } else if(loginResponse.getCode() == 401){
            request.setAttribute("passwordError", "密码错误");
            System.out.println("密码错误401");
            request.getRequestDispatcher("/login.jsp").forward(request, response);
        }else if (loginResponse.getCode() == 200) {
            request.getRequestDispatcher("/index.html").forward(request, response);
            System.out.println("登录成功200");
        }
    }
}

UserServiceImpl.java

package mywebtest.service.impl;

import mywebtest.dao.UserDao;
import mywebtest.dao.impl.UserDaoImpl;
import mywebtest.pojo.user;
import mywebtest.service.UserService;
import mywebtest.utils.LoginResponse;


public class UserServiceImpl implements UserService {

    private UserDao userDao = new UserDaoImpl();


    @Override
    public LoginResponse login(String username, String password) {
        //查询数据库
        user user = this.userDao.findUserByUsername(username);
        //统一响应结果
        LoginResponse loginResponse = new LoginResponse();
        //查询结果为空
        if (user == null) {
            loginResponse.setCode(400);
        }else{
            //查询结果不为空判断密码
            //判断密码正确
            if (user.getPassword().equals(password)){
                loginResponse.setCode(200);
                loginResponse.setUser(user);
            }else{
                //密码错误
                loginResponse.setCode(401);
            }
        }

        return loginResponse;
    }
}

UserService.java

package mywebtest.service;

import mywebtest.utils.LoginResponse;

public interface UserService {//interface接口
     LoginResponse login(String username, String password);

UserDao.java

package mywebtest.dao.impl;


import mywebtest.dao.UserDao;
import mywebtest.pojo.user;
import mywebtest.utils.JdbcUtil;

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

public class UserDaoImpl implements UserDao {//创建UserDao类,用于添加,查找,修改和删除用户
    @Override
    public user findUserByUsername(String username) {//通过username查找用户
        try {
            Connection connection = JdbcUtil.getConnection();
            //Connection connection = DruidDataSoureceUtil.getConnection();
            String sql = "select * from user where username = " + "'" + username + "'";
            PreparedStatement satement = null;//PreparedStatement 是 JDBC 中的一个接口,用于执行预编译的 SQL 语句。
            satement = connection.prepareStatement(sql);
            System.out.println(sql);
            ResultSet resultSet = null;
            resultSet = satement.executeQuery();
            if (resultSet.next()) {
                String name = resultSet.getString("username");
                String password = resultSet.getString("password");
                user user = new user();
                user.setUsername(name);
                user.setPassword(password);
                return user;
            }
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }

        return null;
    }
}

😭

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值