使用Spring MVC + JSP创建测验(Quastionare)

时间:2017-03-04 07:53:38

标签: java spring jsp spring-mvc model-view-controller

我需要你的帮助。没有你的帮助,我的大脑会爆炸!我正在Spring MVC + JSP上编写Quiz应用程序。

我现在做了什么: 1.我创建了HashMap +硬编码正确答案。 2.我创建了@RequestMapping(value = "/level_one", method = RequestMethod.POST) public String levelOne() { return "levelone"; }

怎么样: pics

然后我就冻结了,我不知道该怎么做以及如何在@RequestMaping中使用HashMap将这些代码联合起来并在jsp中编写代码以使其可见且可点击? 在控制器中我写道:

 package ua.kiev.prog;


import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

import java.util.HashMap;
import java.util.Map;


@Controller
@RequestMapping("/")
public class MyController {

       final private String rightAnswerOne = "Dance";

    @ModelAttribute("answerList")
    public Map answerList() {
        Map<String, String> answerList = new HashMap<String, String>();
        answerList.put("one", "Sandbox");
        answerList.put("two", "Pixel");
        answerList.put("three", "Game");
        answerList.put("four", "Picture");

        return answerList;
    }


    @RequestMapping(value = "/level_one", method = RequestMethod.POST)
    public String levelOne() {
        return "levelone";
    }


}

2 个答案:

答案 0 :(得分:0)

@modelAttribute在请求映射之前执行。填充Model模型对象(您没有作为参数传递给使用@requestmapping注释的方法。

您可以使用model.asMap().Get("yourkey").

访问该对象
@RequestMapping(value = "/level_one", method = RequestMethod.POST) public String levelOne(Model model) { 

model.asMap()得到( “answerList”); ... 返回“levelone”; }

这就是modelattribute的工作方式,但这是一个很长的论点。你可以搜索关于spring MVC的一些教程。 我向Google mkyong spring mvc推荐,他有一套庞大的spring mvc基础教程,易于理解。

检查此链接 http://www.mkyong.com/spring3/spring-3-mvc-hello-world-example/

答案 1 :(得分:0)

谢谢。我会的。但在这个例子中,请回答另一个问题。如果我像你之前写的那样编写代码。我应该如何编写jsp页面,在控制器和Web视图中统一哈希映射的答案?那么如果我点击网络上的按钮,它将与服务器端页面上的哈希映射结合在一起。 那么我就能写出这样的东西:

 public static int getCount(HashMap<String, String> answerList, String rightAnswerOne, String rightAnswerTwo, String message) {
    int count = 0;

    for (String tmp : answerList.values()) {
        if (rightAnswerOne.equals(tmp) ) {
            count++;
            System.out.println("SUCCESS");
        } else {
            System.out.println("DENIED");
        }
    }
    return count;
}

我只是想了解如何写这样的东西。