gpt4 book ai didi

java - 如何从 JAVA httpSession 获取参数并在 dao 类上使用/设置它?

转载 作者:行者123 更新时间:2023-11-29 09:13:47 25 4
gpt4 key购买 nike

我需要使用 servlet 来验证登录名/密码。已经很好了。

我在 DAO 类中有一个方法,它通过 prepareStatement 返回一个结果集值列表。

我正在使用一个带有 where 子句(按用户名)的过滤结果的查询。

问题是:如何获取 servlet 参数(登录用户的名称)并将其设置在 prepareStatement 上?

代码如下:

public class DaoPojoJoin extends Dao {

public List<PojoJoin> listUserDegrees() {
List<PojoJoin> dg = new ArrayList<PojoJoin>();
if (openConnection()) {
try {
st = cn.prepareStatement("SELECT USER, MATTER, DEGREE FROM DEGREES x "
+ "right outer join USERS y on x.idUser=y.idUser "
+ "right outer join MATTER z on idMatter=z.idMatter "
+ "where x.iduser=?"); // filter result by user's name

// How can I have something like this:
// st.setString(1,usr.request.getParameter("user"));

// or this:
// st.setString(1,.getAttribute(user));

rs = st.executeQuery();
while (rs.next()) {
PojoJoin pj = new PojoJoin();
rs.getString("USER");
rs.getString("MATTER");
rs.getDouble("DEGREE");
pj.setUsuario(rs.getString("USER"));
pj.setDisciplina(rs.getString("MATTER"));
pj.setNota(rs.getDouble("DEGREE"));
nota.add(pj);
}
} catch (Exception ex) {
err = ex.getMessage();
} finally {
closeConnection();
}
}
return dg;
}

提前致谢。

最佳答案

要求它作为方法参数。 DAO 不应该关心它所在的上下文,并且应该可以在其他任何地方重用(例如,不使用 servlet 的普通 Java 应用程序)。

因此

public List<PojoJoin> listUserDegrees(String username) {
// ...
}

public List<PojoJoin> listUserDegrees(Long userId) {
// ...
}

public List<PojoJoin> listUserDegrees(User user) {
// ...
}

最后让调用者(servlet)传入即可。


与具体问题无关,您的数据库资源处理似乎不是线程安全的。每当您的 webapp 开始被多个用户使用时,我会努力避免出现严重问题。

关于java - 如何从 JAVA httpSession 获取参数并在 dao 类上使用/设置它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10778112/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com