JSP传递变量

时间:2009-12-09 15:44:02

标签: java jsp servlets

我必须用JSP和Servlets编写一个网站,显示问卷并获取用户的结果。

我已经写了问题对象,问卷(随机问题列表)和问题库。

现在我的Servlet生成问卷的实例并显示问题。我的问题是我不知道如何得到结果。我可以得到答案,但AFAIK每次加载一个Servlet时都会生成一个新的调查问卷,答案也没用。那么我怎样才能将答案传递给正确的问卷。或者我如何将调查问卷传递给我的新Servlet?

非常感谢。

编辑:以下是调查问卷的代码:

public abstract Question getNextQuestion();

public abstract void setResult(ArrayList<Boolean> answers);

public abstract int[] getResult();

基本上我会创建一份调查问卷,然后通过getNextQuestion()获取下一个问题,直到没有问题为止。然后用户将点击提交按钮,我将必须阅读答案并将其传递给调查问卷(setResult()以获取实际问题)。如果没有其他问题,我会使用retResult()作为结果。

希望这会有所帮助。我不能给你任何JSP代码,因为我还没有编写JSP

3 个答案:

答案 0 :(得分:1)

任何必须在多个请求中存活的数据都应该进入会话(请参阅request.getSession())。

答案 1 :(得分:1)

由于您在每个用户进入网站时都在创建问卷,因此您可以让servlet生成问卷,并以“lastGeneratedQuestionnaire”之类的名称将其记录到会话中。

当提交答案时,servlet将通过该名称从会话中检索调查问卷。如果不存在,我会将用户重定向回生成新问卷的页面。

此外,生成新问卷的页面应在每次生成随机问卷时覆盖会话中的对象。

缺点是......使用HttpSession在请求之间存储对象。

答案 2 :(得分:0)

通常,您将拥有一个与您的问卷相关联的表单对象(在JSP页面上)。

<html:form action="/servlets/MyQuestionaireServlet method="post">
    <h3>Question 1: What is your name</h3>
    <html:text name="question1" />
    <input type="submit" name="submitBtn" value="Submit"/>
</form>

为了将数据发送到servlet以便存储/记录,您需要做什么,您需要在表单内部提供一个提交按钮。这会将表单中的所有数据发送到servlet。

好点,如果没有struts,你仍然可以在表单上执行标准的post方法,并检索action下列出的servlet中的值。您不需要struts在表单上执行操作。