ITEEDU

View Class

您 可以继承 org.springframework.web.servlet.view.AbstractView 自订自己的 View 类别,以 产生所需的 View 层展示技术,这边以产生 Pdf 的结果页面为例,您可以直接继承 org.springframework.web.servlet.view.document.AbstractPdfView 类别,并重新定义它的 buildPdfDocument()方法,例如:

•      CustomPdfView.java
package onlyfun.caterpillar;
import com.lowagie.text.Document; 
import com.lowagie.text.Paragraph; 
import com.lowagie.text.pdf.PdfWriter; 
import java.util.Map;
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 
import org.springframework.web.servlet.view.document.AbstractPdfView;

public class CustomPdfView extends AbstractPdfView {
	protected void buildPdfDocument(
				Map model, 
				Document document, 
				PdfWriter writer,
				HttpServletRequest request, 
				HttpServletResponse response)
				throws Exception { 
		String header = (String) model.get("header");
		Paragraph headerParagraph =new Paragraph(header); 
		headerParagraph.font().setSize(20);
		document.add(headerParagraph);
		String content = (String) model.get("content");
		Paragraph contentParagraph =new Paragraph(content);
		document.add(contentParagraph);
		String copyright = (String) model.get("copyright"); 
		Paragraph copyrightParagraph =new Paragraph(copyright);
		copyrightParagraph.setAlignment( Paragraph.ALIGN_BOTTOM);
		document.add(copyrightParagraph);
	}
}

假设在您的 Controller 中提供了 Model 资料物件:

•      PdfController.java
package onlyfun.caterpillar;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;
public class PdfController implements Controller {
	public ModelAndView handleRequest(
				HttpServletRequest req, 
				HttpServletResponse res) 
				throws Exception {
		Map model = new HashMap();
		model.put("header", "Pdf View Test");
		model.put("content", "This is content for pdf view test.");
		model.put("copyright", "caterpillar.onlyfun.net");
		return new ModelAndView("customPdfView", model);
	}
}

而在 Bean 定义档中是这么设计的:

•      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.BeanNameViewResolver"/>
	<bean id="customPdfView" class="onlyfun.caterpillar.CustomPdfView"/>
	<bean name="/pdf.do" class="onlyfun.caterpillar.PdfController"/>
</beans>
则接上/pdf.do 时,会显示 pdf 的结果画面。