1

在第一篇中,控制器返回一个视图路径,但是这个视图并没有映射到指定页面。这里简单地解决一下这个问题,为以后的测试做准备。关于 Spring MVC 的视图技术,以后再说。


1)添加视图配置。

在 root-context.xml 上下文配置文件中添加如下的 Bean 配置:

    <!-- 
        SpringMVC:配置 ViewResolver(视图解析器) 
        -->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="viewClass" value="org.springframework.web.servlet.view.JstlView" />
        <property name="prefix" value="/WEB-INF/jsp" />
        <property name="suffix" value=".jsp" />
    </bean>

2)添加一个 jsp 页面。

这个 jsp 页面的名称是:helloWorld.jsp。在路径 /src/main/webapp/WEB-INF/jsp/examples 下:

<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<%
    String basepath = request.getScheme() + "://" + request.getServerName() + ":" 
            + request.getServerPort() + request.getContextPath() + "/";
%>
<!DOCTYPE html>
<html>
<body>
<h2>Hello World!</h2>
</body>
</html>

3)测试

在浏览器地址了栏输入地址

http://localhost:8080/spring5...

如果上述过程中没有出错的话,会有如下显示:
图片描述

4)说明。

这里说一下刚才测试时发生了什么。
在地址栏输入上面的地址并进入后,在 web.xml 中配置的 DispatcherServlet (根据配置 <servlet-mapping>)来处理这个请求。对这个请求进行解析后,(根据控制器中的 @RequestMapping 注解配置)发现类 HelloWorldController 中的方法 helloWorld() 对应着这个请求。在执行完 helloWorld() 之后,返回一个字符串 "/examples/helloWorld"。这个字符串随后被刚才配置的视图解析进行解析。解析结果是:

{ prefix } + 控制器的返回值 + { suffix }

也就是 /WEB-INF/jsp/examples/helloWorld.jsp。之后就向浏览器返回视图解析器得到的这个 jsp 页面,就像你看到的那样。


行一
51 声望35 粉丝

人不可能记住所有的细节