从我的JSP中的哈希映射中检索值

时间:2015-10-29 23:18:05

标签: java jsp servlets

我正在尝试实现的一些背景信息是用户点击我的JSP页面上的提交按钮,它需要将提交的消息发送到文本文件,然后我需要访问该文件并检索所有消息我的JSP页面中的文件。请帮助我,我花了太长时间,我不知道我需要做什么才能迭代哈希映射来显示所有消息。

这就是我现在的代码:

控制器:

public class TwitServlet extends HttpServlet {

@Override
    protected void doPost(HttpServletRequest request,
    HttpServletResponse response)
    throws ServletException, IOException {

    String twits = "";
    String path = getServletContext().getRealPath("/WEB-INF/twit.txt");
    HttpSession session = request.getSession();

    String tweet = request.getParameter("tweet");

    System.out.print(tweet);
    String usern = (String) session.getAttribute("user");
    String alias = (String) session.getAttribute("uname");

    twitDB.insert(tweet, usern, alias, path);

    Map test = twitDB.getTwit("/Users/emilio/Desktop/twit.txt");



    session.setAttribute("test",test);

    getServletContext()
    .getRequestDispatcher("/home.jsp").forward(request, response);
}

}

数据库(暂时使用txtfile):

ublic class twitDB {

public static void insert (String twit, String user, String uname, String path) throws IOException {

    Date date = new Date();
    SimpleDateFormat ft = new SimpleDateFormat ("yyyy/MM/dd");
    String dateString = ft.format(date);
    File file = new File ("/Users/emilio/Desktop/twit.txt");
    try ( PrintWriter out = new PrintWriter(new FileWriter(file,    true))){

        out.println("[@"+uname+"]:" + " " + dateString);
        out.println(user); 
        out.println(twit);
        out.println(".");
        out.close();
    }
    catch (IOException iox) {
        //do stuff with exception
        iox.printStackTrace();
    }
}

public static Map<String,Tweet> getTwit(String filename) throws IOException {
    Map<String,Tweet> tweets = new HashMap<String,Tweet>();
    File file = new File ("/Users/emilio/Desktop/twit.txt");
    Scanner in = new Scanner(file);

    while (in.hasNextLine()) {
        String uname = in.nextLine();
        String name = in.nextLine();
        String twit = in.nextLine();
       String filler = in.nextLine();
       Tweet tweet = new Tweet(uname, name, twit);

        tweets.put(uname, tweet);
        tweets.put(name, tweet);
        tweets.put(twit,tweet );

    }
    in.close();
    return tweets;
    }


   }

我的JSP的一部分:

 <button type="submit" method="post" class="btn btn-twitter">
                                                        <span   class="glyphicon glyphicon-pencil"/>Tweet
                                                        </button>
                                                    </div>

                                                </form>
                    </div>
                </div>

                <div class = "row feed">
                                        <p>

                            <c:forEach items="${test}" var="test">

                        </c:forEach>

                                        </p>

1 个答案:

答案 0 :(得分:0)

如果您真的从服务器获取数据,则缺少要打印的标记。

<c:forEach items="${test}" var="test">
  <c:out value="${test}"/> 
</c:forEach>