• 自定义视图和自定义视图解析器


    有的时候 SpringMVC 框架提供的视图解析器不能满足我们的需求,这时候我们可以来自定义视图以及视图解析器来完成定制的功能。

    主要分为以下三步:

    • 编写自定义视图实现类
    • 编写视图解析器
    • 在配置文件中将自定义的视图解析器注入ioc容器中

    1、编写自定义视图实现类:

    import java.util.Map;
    
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import org.springframework.web.servlet.View;
    
    // 实现 View 接口才能让框架知道这是一个视图
    public class MyView implements View {
    
    	@Override
    	public String getContentType() {
    		return "text/html";
    	}
    
    	@Override
    	public void render(Map<String, ?> model, HttpServletRequest request, HttpServletResponse response)
    			throws Exception {
    		// 编写渲染视图页面的业务逻辑
    		// 可以在这里取得 model 中保存的数据
                    // 可以使用 request 和 response 进行请求和响应
    	}
    
    }
    

    2、编写视图解析器:

    import java.util.Locale;
    
    import org.springframework.core.Ordered;
    import org.springframework.web.servlet.View;
    import org.springframework.web.servlet.ViewResolver;
    
    // 实现 ViewResolver 接口来让框架知道这是一个视图解析器,实现 Ordered 接口来进行排序
    public class MyViewResolver implements ViewResolver, Ordered {
    
            // 视图解析器的遍历顺序
    	private Integer order;
    
    	@Override
    	public int getOrder() {
    		return order;
    	}
    
            // 设置视图解析器的遍历顺序
    	public void setOrder(Integer order) {
    		this.order = order;
    	}
    
    	@Override
    	public View resolveViewName(String viewName, Locale locale) throws Exception {
    		
    		// 进行视图解析器的业务逻辑,返回视图对象则进行渲染,若返回 null 则继续遍历下一个视图解析器
    		if (viewName.startsWith("myView:")) {
    			return new MyView();
    		}
    		
    		return null;
    	}
    
    }
    

    3、在配置文件中将自定义的视图解析器注入ioc容器中:

    	<bean class="com.pudding.view.MyViewResolver">
                    // order的值越小优先级越高,InternalResourceViewResolver 的 order 值为 Integer 的最大值。
    		<property name="order" value="1"></property>
    	</bean>
    
  • 相关阅读:
    JAVA语言中冒号的用法
    Tamper Data 安装与使用
    HTTP协议缓存策略深入详解之ETAG妙用
    HTTP协议
    HTTP协议----ETag
    super 使用以及原理
    __slots__用法以及优化
    归并排序详解(Python | Java实现)
    周刷题第二期总结(Longest Substring Without Repeating Characters and Median of Two Sorted Arrays)
    周刷题第一期总结(two sum and two numbers)
  • 原文地址:https://www.cnblogs.com/lemon-coke-pudding/p/12824003.html
Copyright © 2020-2023  润新知