jsp springmvc 视图解析器_Spring配置多个视图解析器

在开发过程中,我们再做页面处理时,有时候可能需要两种或者两种以上的视图解析方式,比如 jsp、html、jstl等等,SpringMVC默认只配置一种视图解析方式,但是却提供了配置多视图解析的方式。

结构.png

网上提供的很多办法,都是说修改order 来设置解析器的优先级,但是经尝试,发现此办法行不通,html和jsp配置同样的优先级,jsp视图解析器还是无法解析jsp,而且网上的很多配置文件写法大有问题,所以先贴下配置部分:

class="org.springframework.web.servlet.view.InternalResourceViewResolver">

value="com.ccb.ipsp.controller.todo.HtmlResourceView" />

class="org.springframework.web.servlet.view.InternalResourceViewResolver">

我们细看,可以发现htmlViewResolver视图解析器的viewClass值有些奇怪,这是因为我们需要新建一个html的解析器,该解析器要继承 InternalResourceView 并且重写 checkResource方法,代码:

package com.ccb.ipsp.controller.todo;

import java.io.File;

import java.util.Locale;

import org.springframework.web.servlet.view.InternalResourceView;

public class HtmlResourceView extends InternalResourceView{

@Override

public boolean checkResource(Locale locale){

File file = new File(this.getServletContext().getRealPath("/")+getUrl());

return file.exists();

}

}

经此配置,就可检验是否两种视图解析器都配置成功啦,TestView代码:

package com.ccb.ipsp.controller.todo;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import org.springframework.stereotype.Controller;

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

import org.springframework.web.bind.annotation.ResponseBody;

import org.springframework.web.servlet.ModelAndView;

import com.ccb.ipsp.model.todo.Url;

/**

* 界面测试请求Test

* @author guxf

*

*/

@Controller

@RequestMapping("/tooo")

public class ToDoView {

@ResponseBody

@RequestMapping(value = "/regi") // 办事通用户查询接口

public ModelAndView view(HttpServletRequest request, HttpServletResponse response) throws Exception {

ModelAndView mv = null;

try {

System.err.println("888888");

mv = new ModelAndView();

Url url = new Url();

url.setUrl("www.baidu.com");

mv.addObject("url", url);

System.err.println("跳转regist————");

mv.setViewName("regist"); // 出现异常则跳转错误页面

} catch (Exception e) {

mv = new ModelAndView();

System.err.println("跳转errorpage————");

mv.setViewName("errorpage"); // 出现异常则跳转错误页面

}

return mv;

}

@ResponseBody

@RequestMapping(value = "/page") // 办事通用户查询接口

public ModelAndView pageView(HttpServletRequest request, HttpServletResponse response) throws Exception {

ModelAndView mv = null;

try {

System.err.println("999999");

mv = new ModelAndView();

System.err.println("跳转page————");

mv.setViewName("page1"); // 出现异常则跳转错误页面

} catch (Exception e) {

mv = new ModelAndView();

System.err.println("跳转errorpage————");

mv.setViewName("errorpage"); // 出现异常则跳转错误页面

}

return mv;

}

}

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值