Servlet到jsp通信的最佳实践

时间:2012-09-03 18:27:53

标签: model-view-controller jsp servlets

我正在学习如何在google app引擎上编写java servlet和jsp页面。我正在尝试使用MVC模型,但我不确定我是否正确行事。目前,我有一个访问页面时调用的servlet。 servlet执行所有处理并创建一个HomePageViewModel对象,该对象将转发到jsp,如下所示:

// Do processing here
// ...
HomePageViewModel viewModel = new HomePageViewModel();
req.setAttribute("viewModel", viewModel);

//Servlet JSP communication
RequestDispatcher reqDispatcher = getServletConfig().getServletContext().getRequestDispatcher("/jsp/home.jsp");
reqDispatcher.forward(req, resp);

在jsp方面,我有类似的东西:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page import="viewmodels.HomePageViewModel" %>
<%
  HomePageViewModel viewModel = (HomePageViewModel) request.getAttribute("viewModel");
  pageContext.setAttribute("viewModel", viewModel);
%>

<html>
  <body>
  <% out.println(((HomePageViewModel)pageContext.getAttribute("viewModel")).Test); %>
  </body>
</html>

所以我的问题是双重的。首先,这是为小型webapp做事的合理方式吗?这只是我正在上课的一个小项目。第二,在jsp文件中,是否有更好的方法来访问viewmodel数据?

1 个答案:

答案 0 :(得分:7)

如果你遵守Javabeans spec(即使用私人财产与公众获取者/设定者),

public class HomePageViewModel {

    private String test;

    public String getTest() { 
        return test;
    }

    public void setTest(String test) {
        this.test = test;
    }

}

然后您可以使用EL(表达式语言)来访问数据。

<%@ page pageEncoding="UTF-8" %>
<html>
  <body>
  ${viewModel.test}
  </body>
</html>

另见: