Java自学之路-Java中级教程-27:SpringMVC的视图处理器InternalResourceViewResolver
我们在Controller的方法中需要返回一个视图,比如return "jsp/person.jsp";就把person.jsp作为视图返回给用户。当然,用户也可以直接访问person.jsp,不过这样做无法看到数据,因为直接访问JSP是没有经过Controller的数据查询处理的,因此直接访问JSP就不建议暴露给用户了。在Java的Web工程中有WEB-INF这样一个目录,如果JSP处在这个目录里面,用户是无法直接访问到JSP的,比如WEB-INF/jsp/person.jsp,就不能用路径http://localhost/calculateWeb/WEB-INF/jsp/person.jsp访问得到。
基于上面的认识,现在把jsp页面放到WEB-INF目录中。这样,在Controller中可以把返回值改为return "WEB-INF/jsp/person.jsp"。如果每个返回值都这样写,那么格式全都是"WEB-INF/jsp/*.jsp"这样的。所以SpringMVC也引入一个类InternalResourceViewResolver,通过配置这个类可以默认所有的返回视图都在WEB-INF/jsp/目录中找到。
在applicationContext-mvc.xml文件中加入下面的配置。使用org.springframework.web.servlet.view.InternalResourceViewResolver这个类生成的bean,并且配置prefix前缀和suffix后缀,即可匹配到"WEB-INF/jsp/*.jsp"视图模式。也就是说,SpringMVC会把Controller中的返回视图都交给这个InternalResourceViewResolver处理,只要找到这个模式的jsp就可以显示视图结果了。
在Controller中,/listPerson这个方法原来的返回值为return "index.jsp";现改为return "person";即去掉了.jsp的后缀,而且也没有加任何的前缀。这样修改之后,重新启动Tomcat服务器,在浏览器中输入http://localhost/calculateWeb/listPerson,来看下访问结果,已经可以使用WEB-INF/jsp/person.jsp显示数据了。为了确认是这个jsp,可以在person.jsp中随便改一下内容,比如把title改为WEB-INF/jsp/person.jsp,这样标题随之发生了变化。
配套进阶****:
https://edu.csdn.net/combo/detail/938
Java****