SpringMvc之自定义视图

嗯,在学习之前得想一想自定义视图存在的意义是什么,有什么作用,什么时候用到自定义视图???

在我们能要提交一个表单时,需要将内容用Excel导出,这个时候SpringMvc就提供一个接口 AbstractExcelView 

那怎样定义一个简单的自定义视图

第一部:新建一个HelloView.java并且实现View接口

package com.sgf.springmvc.view;

import java.util.Date;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.stereotype.Component;
import org.springframework.web.servlet.View;

@Component
public class HelloView implements View{
    /* 视图类型*/
	@Override
	public String getContentType() {
		// TODO Auto-generated method stub
		return  "text/html";
	}
    /* 渲染视图*/
	@Override
	public void render(Map arg0, HttpServletRequest arg1, HttpServletResponse arg2) throws Exception {
		arg2.getWriter().print("hello view,time"+new Date());
		
	}

}

然后在SpringMvc配置文件中配置自定义视图解析器



	
	
	
	
		
		
	
	
	
	
	
		
	
	
	
	
	
	
	
	

那么两个视图解析器会先执行哪个??通过 order 属性来定义视图解析器的优先级, order 值越小优先级越高。而第一个视图解析器的默认order为Integer的最大值,也就是说只要你给另一个试图解析器添加了order属性值,他就最后一个执行。而佟刚老师举得例子很形象,更好理解:把两个配置器比喻成饭馆,InternalResourceViewResolver这个视图解析器就好比你经常去吃的那个饭馆,而BeanNameViewResolver视图解析器就如同新开的,那么你总想尝尝鲜,也就跟选择视图解析器一样,选择比较新鲜的去尝试一下。

再在测试方法中写测试方法

package com.sgf.springmvc.handlers;

import java.util.Date;
import java.util.Map;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.Mapping;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.servlet.ModelAndView;

@Controller
public class HelloWorld {
	@RequestMapping("testView")
	public String testView() {
		System.out.println("testView");
		return "helloView";
	}

}

return 则为类名首字母的小写。return "helloView"; 视图解析器就会去找相应的视图。我们自定义的视图是HelloView,spring容器帮我们实例对象的时候,首字母会小写,即 HelloView helloView = new HelloView()

在jsp页面添加

便可访问到我们自己定义的视图

SpringMvc之自定义视图_第1张图片

你可能感兴趣的:(SpringMvc)