在MVC的模式下,PHP既可以用來直接在View層和HTML語言混搭構建頁面,
也可以在Controller層面扮演資料處理、流程式控制制的任務,在Controller中計算資料,然後傳遞給View。
比如如下的代碼示範:
// controllers/users.php$users = getUsers();include "../views/users.php";// views/users.phpprint_r($users);
類似的,在Java Web裡面,JSP是用於View層面的,Servlet扮演Controller的角色。
JSP 是 JAVA IN HTML
Servlet是 HTML IN JAVA
也就是說在html多的地方用JSP,嵌入html頁面中構造動態內容,
在需要用java處理更多資料的地方用Servlet,可以直接列印,也可以通過佈建要求屬性來把動態內容轉給Jsp展示,
jsp通常在第一次請求時被編譯為Servlet以提高運行效能,如通過Tomcat內建的JSP引擎Jasper來進行編譯。
下面是Servlet傳遞計算資料給JSP的簡單代碼示範:
public class UserServlet extends HttpServlet {protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { List<User> users = getUserList(); String url="..."; //relative url for display jsp page ServletContext sc = getServletContext(); RequestDispatcher rd = sc.getRequestDispatcher(url); request.setAttribute("users", users); rd.forward(request, response);}
在JSP中擷取該屬性資料:
<% User[] users= (User[])request.getAttribute("users"); if (users.length>0) { for (User user: users) { %> <blockquote>user name: <%= user.getName() %></blockquote> <% } } %>
by iefreer