0 Comments

处理登录请求(2)

发布于:2012-12-24  |   作者:广州网站建设  |   已聚集:人围观

   Spring MVC配置文件

   编写好LoginCommand后,我们需要在viewspace-servlet.xml中声明该控制器,扫描Web路径,指定Spring MVC的视图解析器,如代码清单1-17所示。

   代码清单1-17  viewspace-servlet.xml广州网站建设


  1. <?xml version="1.0" encoding="UTF-8" ?> 
  2. <beans xmlns="http://www.springframework.org/schema/beans" 
  3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" 
  4.     xmlns:context="http://www.springframework.org/schema/context" 
  5.     xsi:schemaLocation="http://www.springframework.org/schema/beans  
  6.        http://www.springframework.org/schema/beans/spring-beans-3.1.xsd  
  7.        http://www.springframework.org/schema/context   
  8.        http://www.springframework.org/schema/context/spring-context-3.1.xsd"> 
  9.       
  10.      <!-- 扫描web包,应用Spring的注解 --> 
  11.     <context:component-scan base-package="com.smart.web"/> 
  12.       
  13.     <!-- 配置视图解析器,将ModelAndView及字符串解析为具体的页面 --> 
  14.     <bean 
  15.         class="org.springframework.web.servlet.view.InternalResourceViewResolver" 
  16.         p:viewClass="org.springframework.web.servlet.view.JstlView"   
  17.         p:prefix="/WEB-INF/jsp/" 
  18.         p:suffix=".jsp" /> 
  19.  
  20. </beans> 

   ModelAndView的解析配置

      在代码清单1-15 的 处,控制器根据登录处理结果分别返回ModelAndView ("login", "error", "用户名或密码错误。")和ModelAndView("main")。ModelAndView的第一个参数代表视图的逻辑名,第二和第三个参数分别为数据模型名称和数据模型对象,数据模型对象将以数据模型名称为参数名放置到request的属性中。

    Spring MVC如何将视图逻辑名解析为具体的视图页面呢?解决的思路也和上面的方法类似,需要在viewspace-servlet.xml中提供一个定义解析规则的Bean,如代码清单1-18所示。

    代码清单1-18  viewspace-servlet.xml视图解析规则


  1. …  
  2. <!--通过prefix指定在视图名前所添加的前缀,通过suffix指定在视图名后添加的后缀--> 
  3. <bean   class="org.springframework.web.servlet.view.InternalResourceViewResolver" 
  4.         p:viewClass="org.springframework.web.servlet.view.JstlView"   
  5.         p:prefix="/WEB-INF/jsp/" 
  6.         p:suffix=".jsp" /> 

 

     Spring MVC为视图名到具体视图的映射提供了许多可供选择的方法。在这里,我们使用了InternalResourceViewResolver,它通过为视图逻辑名添加前后缀的方式进行解析。如视图逻辑名为"login"将解析为/WEB-INF/jsp/login.jsp;名为"main"的视图解析为/WEB-INF/jsp/main.jsp。
飞机