Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如果没有Spring Security,如何获取当前用户的ID?_Java_Html_Mysql_Session - Fatal编程技术网

Java 如果没有Spring Security,如何获取当前用户的ID?

Java 如果没有Spring Security,如何获取当前用户的ID?,java,html,mysql,session,Java,Html,Mysql,Session,我正在制作一个Edairy应用程序,现在我正在制作StudentGrades HTML页面,该页面应该列出学生的科目和成绩。不同的学生有不同的科目很重要,所以我只想显示登录的学生科目和他们的成绩。 例如,学生1有化学和物理,学生2有体育和数学 现在我正在尝试一种方法,根据当前登录的学生ID从数据库中选择主题,但我不使用Spring安全性。我尝试了两种不同的方法,但都失败了 public List<Subject> findAll(Integer userId) {

我正在制作一个Edairy应用程序,现在我正在制作StudentGrades HTML页面,该页面应该列出学生的科目和成绩。不同的学生有不同的科目很重要,所以我只想显示登录的学生科目和他们的成绩。 例如,学生1有化学和物理,学生2有体育和数学

现在我正在尝试一种方法,根据当前登录的学生ID从数据库中选择主题,但我不使用Spring安全性。我尝试了两种不同的方法,但都失败了

public List<Subject> findAll(Integer userId) {

    
    String sql = "SELECT subject.subjectName,subject.subjectId FROM subject inner join subjectgrade on subject.subjectId = subjectgrade.subjectId right join users on subjectgrade.userId = users.user_id where subjectgrade.userId = ?";
    return jdbcTemplate.query(sql, new BeanPropertyRowMapper(Subject.class));
}
 
在第二次尝试中,我尝试将用户传递到参数中。使用这种方法,程序成功地运行了,但它没有选择登录用户的主题,因为我不知道如何从会话中获取用户ID

public List<Subject> findAll(User user) {

    
    String sql = "SELECT subject.subjectName,subject.subjectId FROM subject inner join subjectgrade on subject.subjectId = subjectgrade.subjectId right join users on subjectgrade.userId = users.user_id where subjectgrade.userId = "+ user.getUserId();
    return jdbcTemplate.query(sql, new BeanPropertyRowMapper(Subject.class));
}
需要注意的是,我没有使用Spring安全性,因为我只是在练习编码。我可以在不重新编译整个程序的情况下获得用户ID吗?还是我犯了一个巨大的逻辑缺陷,让我停了下来? =不确定如何调用它。

因为例外情况是用户id的类型为int,这是一种基本类型。基元类型不能为NULL


要对int值使用NULL,您需要使用相应的包装类Integer,它允许赋值NULL。

您的主题类是什么样子的?在第一次尝试中,提供的userId不是基元类型。Integer是原语int的包装器,因此可以为null。my subject类只包含getter和setter及其属性。我将subjectId定义为int,而不是Integer。这是一个问题吗?当然:正如异常所说,用户的id是int类型,这是一个基本类型,除了NULL值之外。你需要使用Integer类,它是int的一种包装类型,允许空值。你是最好的Daniel,从没想过它会那么敏感。你能给我推荐一种不用Spring Security就可以获取用户id的方法吗?这个程序现在将按照我的计划运行。不客气。将评论作为答案发布,以便您可以接受。你应该更准确地说,你能给我推荐一种在没有Spring安全性的情况下获取用户id的方法吗。您当前如何获取用户ID?
public List<Subject> findAll(User user) {

    
    String sql = "SELECT subject.subjectName,subject.subjectId FROM subject inner join subjectgrade on subject.subjectId = subjectgrade.subjectId right join users on subjectgrade.userId = users.user_id where subjectgrade.userId = "+ user.getUserId();
    return jdbcTemplate.query(sql, new BeanPropertyRowMapper(Subject.class));
}