Spring MVC配置文件
编写好LoginCommand后,我们需要在viewspace-servlet.xml中声明该控制器,扫描Web路径,指定Spring MVC的视图解析器,如代码清单1-17所示。
代码清单1-17 viewspace-servlet.xml广州网站建设
- <?xml version="1.0" encoding="UTF-8" ?>
- <beans xmlns="http://www.springframework.org/schema/beans"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
- xmlns:context="http://www.springframework.org/schema/context"
- xsi:schemaLocation="http://www.springframework.org/schema/beans
- http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
- http://www.springframework.org/schema/context
- http://www.springframework.org/schema/context/spring-context-3.1.xsd">
- <!-- 扫描web包,应用Spring的注解 -->
- <context:component-scan base-package="com.smart.web"/>
- <!-- 配置视图解析器,将ModelAndView及字符串解析为具体的页面 -->
- <bean
- class="org.springframework.web.servlet.view.InternalResourceViewResolver"
- p:viewClass="org.springframework.web.servlet.view.JstlView"
- p:prefix="/WEB-INF/jsp/"
- p:suffix=".jsp" />
- </beans>
ModelAndView的解析配置
在代码清单1-15 的 处,控制器根据登录处理结果分别返回ModelAndView ("login", "error", "用户名或密码错误。")和ModelAndView("main")。ModelAndView的第一个参数代表视图的逻辑名,第二和第三个参数分别为数据模型名称和数据模型对象,数据模型对象将以数据模型名称为参数名放置到request的属性中。
Spring MVC如何将视图逻辑名解析为具体的视图页面呢?解决的思路也和上面的方法类似,需要在viewspace-servlet.xml中提供一个定义解析规则的Bean,如代码清单1-18所示。
代码清单1-18 viewspace-servlet.xml视图解析规则
- …
- <!--通过prefix指定在视图名前所添加的前缀,通过suffix指定在视图名后添加的后缀-->
- <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"
- p:viewClass="org.springframework.web.servlet.view.JstlView"
- p:prefix="/WEB-INF/jsp/"
- p:suffix=".jsp" />
Spring MVC为视图名到具体视图的映射提供了许多可供选择的方法。在这里,我们使用了InternalResourceViewResolver,它通过为视图逻辑名添加前后缀的方式进行解析。如视图逻辑名为"login"将解析为/WEB-INF/jsp/login.jsp;名为"main"的视图解析为/WEB-INF/jsp/main.jsp。



