【发布时间】:2014-02-22 12:14:39
【问题描述】:
我写了一个简单的servlet,在doPost中我从一个jspand获得了用户名和密码,通过将用户输入的密码发送到数据库(mysql)来验证用户。我正确获取了数据,我将用户重定向到另一个名为welcome.jsp 的jsp 页面。
我的问题是,我写了这个方法 public String getUser(){return userNmae;};我把它放在dopost方法之外,但是它返回null。我已经将变量userNmae声明为类变量,当我调试时,该变量在dopost方法中包含一个值,但是在dopost方法之外它是null。为什么它在dopost方法之外是null?
我在welcome.jsp 页面中调用getUser() 方法。 这是我的代码
public class UIclass extends HttpServlet {
public UIclass() { };
private String passWord = null;
private String userNmae = null;
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String name = request.getParameter("userName");
String password = request.getParameter("password");
Connection connection = null;
try {
connection = Connections.getConnection();
java.sql.PreparedStatement statement = connection.prepareStatement("SELECT PASSWORD,USERNAME FROM LOGIN where username =?");
statement.setString(1, name);
ResultSet resultset = statement.executeQuery();
while (resultset.next()) {
passWord = resultset.getString("PASSWORD");
userNmae = resultset.getString("USERNAME");
}
} catch (Exception e) {
// TODO: handle exception
} finally {
if (connection != null)
try {
connection.close();
} catch (SQLException e) {
e.printStackTrace();
};
}
if (passWord.equalsIgnoreCase(password)) {
RequestDispatcher rd = request.getRequestDispatcher("welcome.jsp");
rd.forward(request, response);
}
}
public String getUser() {
return userNmae;
}
}
【问题讨论】:
-
您介意在此处发布您的 jsp 和 servlet 吗?
-
您究竟是如何从 JSP 调用 getUser() 的?您是否意识到 servlet 的单个实例正在处理来自所有用户的所有请求?当前用户应该存储在 HTTP 会话中,而不是 servlet 中。
-
这就是我调用方法的方式
ttp://www.w3.org/TR/html4/loose.dtd" rel="nofollow" target="_blank">w3.org/TR/html4/loose.dtd "> 欢迎