SpringMVC框架:View视图类型,配置文件路径设置,编码过滤器

分类

	/*
	 * View作用:处理模型数据,实现页面的跳转(转发和重定向)
	 * View类型:
	 * InternalResourceView:转发视图
	 * JstlView:转发视图
	 * RedirectView:重定向视图
	 */
	@RequestMapping(value = "/param",method = RequestMethod.POST)
	public String param()
	{
//		return "redirect:index.jsp";
		return "success";
	}

原码分析

InternalResourceView

来到熟悉的这里
在这里插入图片描述
进入resolveViewName(解析视图名称)
遍历视图解析器,我们可以写多个视图解析器,
这里我们只写了一个视图解析器
在这里插入图片描述
进入viewResolver.resolveViewName(viewName, locale);
判断缓存中有没有,没有就请求子类能不创建,调用的是

// Ask the subclass to create the View object.
	view = createView(viewName, locale);

在这里插入图片描述
进入createView
判断视图名称是不是以redirect:或者forward:开头,然后创建不同的视图
这里我们都不是,所以进入最后一个
// Else fall back to superclass implementation: calling loadView.
子类无法创建View,调用父类的loadView
在这里插入图片描述
进入super.createView(viewName, locale);
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
这里就是我们熟悉的配置了,这里将视图的Url进行了设置
Url设置成我们视图的配置的getPrefix() + viewName + getSuffix()
这里还设置了视图的文本类型
view.setContentType(contentType);
默认的是:text/html;charset=ISO-8859-1
在这里插入图片描述

RedirectView

代码这样return "redirect:index.jsp";
直接来到这里
REDIRECT_URL_PREFIX是常量,值是redirect:
先是截取视图名称,将redirect:去掉了
在这里插入图片描述
然后返回到AbstractCachingViewResolver类的resolveViewName
创建出一个RedirectView
在这里插入图片描述
返回到DispatcherServlet类的render方法
在这里插入图片描述
进入render
然后进入renderMergedOutputModel
这里targetUrl是路径,而且是重定向进行转发
在这里插入图片描述

配置文件路径设置

  <!-- The front controller of this Spring Web application, responsible for handling all application requests -->
	<servlet>
		<servlet-name>springMVC</servlet-name>
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
		
		<!-- 
			设置springMVC配置文件的位置和名称
			web项目有两个路径,一个是资源文件路径,一个是WebContent路径
			配置资源文件路径只需要在路径前面加classpath:就行
		 -->
		<init-param>
			<param-name>contextConfigLocation</param-name>
			<param-value>classpath:springMVC.xml</param-value>
		</init-param>
		
		<!-- 
			这个是设置servlet的加载时间
			默认第一次访问的时候加载,如果设置了这个标签,就会将servlet的加载时间提前到项目启动时
			这个标签可以写整数,写负数和0是和没有配置的效果是一样的
			只有是正整数才会将servlet的加载时间提前到项目启动时
			而且不同的servlet不能设置同样的值,不然不知道加载那个先
		 -->
		<load-on-startup>1</load-on-startup>
	</servlet>

	<!-- Map all requests to the DispatcherServlet for handling -->
	<servlet-mapping>
		<servlet-name>springMVC</servlet-name>
		<url-pattern>/</url-pattern>
	</servlet-mapping>

编码过滤器

  <!-- 编码过滤器必须设置在所有过滤器的最前面的监听器
  		因为有缓存,不然编码过滤器无效了
   -->
  <filter>
  		<filter-name>CharacterEncodingFilter</filter-name>
  		<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
  		<init-param>
  				<param-name>encoding</param-name>
  				<param-value>UTF-8</param-value>
  		</init-param>
  </filter>
  <filter-mapping>
  		<filter-name>CharacterEncodingFilter</filter-name>
  		<url-pattern>/*</url-pattern>
  </filter-mapping>

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ReflectMirroring

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值