一尘不染

Servlet与JSP通讯的最佳实践

jsp

我正在学习如何在Google App Engine上编写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>

所以我的问题有两个。首先,这是为小型Web应用程序做事的合理方法吗?这只是我上课的一个小项目。其次,在jsp文件中,是否有更好的方法来访问viewmodel数据?


阅读 285

收藏
2020-06-10

共1个答案

一尘不染

如果您遵守Javabeans规范(即,将私有属性与公共getter
/ setter一起使用),

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>
2020-06-10