ITEEDU

结合 JSTL

在 处理完使用者的请求之后,在呈现结果页面时有必须必须根据处理的结果来显示不同的画面, 直接在JSP上撰写Java程式码并不是一个好的方法,这会使得页 面上标签与程式码混杂在一起, 当所使用的View层技术为JSP时,您可以运用JSTL来协助页面逻辑的生成,而不是使用于其中直接 撰写Java程式码。

您可以在 http://java.sun.com/products/jsp/jstl/ 中取得JSTL 1.1,将当中的jstl.jar与standard.jar加 入至lib中。 以下示范一个完整的范例,结合Spring 与JSTL 的功能来呈现有条件的页面呈现,首先撰写 HelloController类别:

•      HelloController.java
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,例如:

•      mvc‐config.xml
<?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 时,才会显示欢迎语句:

•      hello.jsp
<%@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>