我正在学习如何在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数据?
如果您遵守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>