在 处理完使用者的请求之后,在呈现结果页面时有必须必须根据处理的结果来显示不同的画面, 直接在JSP上撰写Java程式码并不是一个好的方法,这会使得页 面上标签与程式码混杂在一起, 当所使用的View层技术为JSP时,您可以运用JSTL来协助页面逻辑的生成,而不是使用于其中直接 撰写Java程式码。
您可以在 http://java.sun.com/products/jsp/jstl/ 中取得JSTL 1.1,将当中的jstl.jar与standard.jar加 入至lib中。 以下示范一个完整的范例,结合Spring 与JSTL 的功能来呈现有条件的页面呈现,首先撰写 HelloController类别:
package onlyfun.caterpillar;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.mvc.Controller;
import org.springframework.web.servlet.ModelAndView;
public class HelloController implements Controller {
private String viewPage;
public ModelAndView handleRequest(HttpServletRequest req,
HttpServletResponse res)
throws Exception {
String user = req.getParameter("user");
Integer age = new Integer(
Integer.parseInt(req.getParameter("age")));
java.util.Map model = new java.util.HashMap();
model.put("name", user);
model.put("age", age);
return new ModelAndView(viewPage, model);
}
public void setViewPage(String viewPage) {
this.viewPage = viewPage;
}
}
在这个程式中,只是简单的将请求参数收集,并设定至一个 Model 资料物件中,接着在定义档 中 , InternalResourceViewResolver 的 "viewClass" 属 性 可 以 设 定 为 org.springframework.web.servlet.view.JstlView,例如:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE beans PUBLIC "-//SPRING/DTD BEAN/EN""http://www.springframework.org/dtd/spring-beans.dtd"> <beans> <bean id="viewResolver" class="org.springframework.web.servlet. → view.InternalResourceViewResolver"> <property name="viewClass"> <value> org.springframework.web.servlet.view.JstlView </value> </property> <property name="prefix"> <value>/WEB-INF/jsp/</value> </property> <property name="suffix"> <value>.jsp</value> </property> </bean> <bean name="/hello.do" class="onlyfun.caterpillar.HelloController"> <property name="viewPage"> <value>hello</value> </property> </bean> </beans>
来写一个简单的测试页面,在这个页面当中使用 JSTL 来作页面逻辑的呈现判断,设定页面只有 在"age"大于等于 18 时,才会显示欢迎语句:
<%@page contentType="text/html"%>
<%@page?pageEncoding="UTF-8"%>
<%@taglib?prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSTL And Spring</title>
</head>
<body>
<c:choose>
<c:when test="${age >= 18}">
<h1>嗨, <c:out value="${name}"/> !</h1>
</c:when>
<c:otherwise>
<h1>未满十八岁喔!</h1>
</c:otherwise>
</c:choose>
</body>
</html>