springMVC中自定义视图

自定义视图的使用

1.编辑view类

package com.jd.view;

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 ToView implements View{
	
	public String getContentType() {
		return "text/html";
	}
	
	public void render(Map<String, ?> model, HttpServletRequest request, HttpServletResponse response)
			throws Exception {
		response.getWriter().print("Hello World.");
	}
}

注意:这里面我们定义的视图需要添加@Component注解,将自定义视图放入springmvc容器中

2、配置视图解析器,使用视图名字解析视图

<!-- 配置BeanName视图解析器:使用视图名字解析视图 -->
<bean class="org.springframework.web.servlet.view.BeanNameViewResolver">
	<!-- order属性用于设定视图解析器的优先级,order值越小优先级越高,InternalResourceViewResolver优先级为Integer所能表示的最大值 -->
	<property name="order" value="0"></property>
</bean>

 

3.jsp中放入一个请求连接

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
	<a href = "./view/view.do">链接</a>
</body>
</html>

4.controller控制层

package com.jd.computer;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class HelloViewController {
	
	
	@RequestMapping("/view/view.do")
	public String view() {
		return "toView";
		
	}

}

注意:controller中return的对象toView的首字母要小写,springmvc容器会帮助我们寻找对应的方法去实例化

5.运行结果

自定义视图的运行原理

1.发送一个请求之后,会执行DispatcherServlet中的doService方法。

2.进而执行doService中的doDispath方法。

3.在doDispatch方法中,会执行下面代码

4.接下来执行processDispatchResult方法,

5.进入该方法后,第一个if此时exception是null,所以肯定会执行else,此时mv会被赋值,必定不为null,所以hi执行render方法

6.进入render方法后就会引用我们对视图对象,然后引用视图的名字

7.进入resolveViewName方法,遍历此时的视图,自带的视图是InternalViewResolve和自定义视图ToView,此时我们在appication.xml配置中将其render设置为0,数值越小优先级越大,所以会优先使用我们自己的视图。

8.然后会获取view名字,再次执行render方法然后会进行请求转发,会执行ToView中render方法中,然后返回到页面上

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值