程序员

(二)工程结构需要颜值

2016-03-31  本文已影响96人  杀死一只程序猿

在这里我将第一个Spring MVC实例的结构完善得漂亮一点,这样工程看起来会更舒服,也更加方便维护。

View Resolver

我们看到在两个Controller类里,返回一个ModeAndView后者View时,参数里的View显得冗长:
InputUserController.java:

return new ModelAndView("/WEB-INF/jsp/UserForm.jsp");

SaveUserController.java:

return new ModelAndView("/WEB-INF/jsp/UserDetails.jsp", "user", user);

View部分唯一不同的就是视图名,如果能够将其他相同的部分省略或简要替代,那代码的颜值会不会上升呢?

颜值上升的方法

Spring MVC 中的视图解析器负责解析视图。可以通过在配置文件中定义一个ViewResolver来配置视图解析器。
springmvc-servlet.xml:

<beans xmlns="http://www.springframework.org/schema/beans" 
           ......
           ...... >
  <bean id="viewResolver" 
        class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/jsp/"></property>
        <property name="suffix" value=".jsp"></property>
  </bean>
  ......
  ......

</beans>

这样一来,view路径将缩短,仅需要提供视图名,而不必再设置视图路径为/WEB-INF/jsp/试图名.jsp,视图解析器将会自动增加前缀和后缀。
相应的Controller类代码也要修改,如下所示:
InputUserController.java:

//  return new ModelAndView("/WEB-INF/jsp/UserForm.jsp");
    return new ModelAndView("UserForm");

SaveUserController.java:

//  return new ModelAndView("/WEB-INF/jsp/UserDetails.jsp", "user", user);
    return new ModelAndView("UserDetails", "user", user);

config文件夹

代码是漂亮了一点,工程结构也得同步提升。
Spring MVC的配置文件springmvc-servlet.xml在默认文件(lib)下,如今需要更名为springmvc-config.xml,且移步到/WEB-INF/config/路径下:
在WEB-INF下新建config文件夹,如图所示:

springmvc-config.xml路径

如果这里就结束了,那么项目运行得报错了,找不到DispatcherServlet。
springmvc-config.xml是由web.xml中标签<init-param>加载的,当springmvc-config.xml处于默认文件时,<init-param>不需要额外(不用声明)定义,否则得显示地定义,如下所示:
web.xml

<servlet>
        <servlet-name>springmvc</servlet-name>
        <servlet-class>
            org.springframework.web.servlet.DispatcherServlet
        </servlet-class>
        
        <!-- 为配置文件springmvc-config.xml声明相对路径 -->
      <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/config/springmvc-config.xml</param-value>
      </init-param>
        
        <load-on-startup>1</load-on-startup>
</servlet>

以上所有如果不做,对工程的正确运行也没有丝毫影响。

上一篇 下一篇

猜你喜欢

热点阅读