在servlet之间传输值

时间:2009-09-27 18:37:57

标签: java forms servlets

我写了一个html表单来检索用户的密码和用户名:

<form action="prueba-registro" method=get enctype=multipart/form-data>
<h3>
User information
</h3>
User name: <INPUT TYPE=TEXT NAME="realname"><BR>
Password: <INPUT TYPE=PASSWORD NAME="mypassword">
<P><INPUT TYPE=SUBMIT VALUE="Register">
</form>

此信息在servlet(checkRegistration)中接收,该servlet检查此信息是否有效。如果一切正常,servlet“checkRegistration”将调用另一个servlet:uploadFile

在servlet uploadFile中,允许用户将文件上传到服务器。为了将信息存储在数据库中,我需要知道用户的名字。

如何将有关用户名的信息(在servler checkRegistration中可用)传递给servlet uploadFile?

由于

1 个答案:

答案 0 :(得分:0)

执行此操作的最常用方法是将用户信息作为属性保存到其会话中。您可以从请求中访问会话:

HttpSession session = request.getSession();

同一会话与用户发出的每个请求相关联。会话具有一个属性映射,允许您获取和设置值。例如,如果CheckRegistrationServlet发现登录成功,它可以执行以下操作:

request.getSession().setAttribute("LoggedIn", "true");

然后在UploadFileServlet中,在允许上传之前检查此属性:

if ("true".equals(request.getSession().getAttribute("LoggedIn")) {
    // perform file upload
}
else {
    // deny file upload
}

当然,不是为“LoggedIn”属性保存“true”值,而是保存表示用户会话信息的对象。您可以构建一个保存用户名的UserSession对象,并保存该对象而不是“true”字符串。