`
gaoyuntao2005
  • 浏览: 318298 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

DispatcherServlet定义档

阅读更多

DispatcherServlet预设使用servlet名称加上"-servlet.xml"作为其定义档名称,定义档预设是放在WEB-INF下,您也可以自行指定定义文件名称与位置,例如:

<servlet>

    <servlet-name>hello</servlet-name>

    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

    <init-param>

        <param-name>contextConfigLocation</param-name>

        <param-value>/WEB-INF/hello1-servlet.xml, /WEB-INF/hello2-servlet.xml</param-value>

    </init-param>     

</servlet>


 DispatcherServlet各有其namespace与应用程序context,您可以在web.xml中定义多个DispatcherServlet的实例,分别负责不同模块的请求处理工作。 
 Spring对DispatcherServlet所处理的组件(component)都当作一般的Bean来处理,所以在设定 DispatcherServlet的定义档时,就如同之前的主题中处理Bean定义文件一样,一致性的组态方式是Spring所提供的优点之一,每个组件的设定都像是Bean,所以您只要查询API文件,了解属性的关系与作用,并在定义档中设定好依赖关系,就可以使用这些组件。 
 一些设定DispatcherServlet的定义档方式,我们前一个主题中介绍了大半,这边补充一些额外的设定。 
 首先,我们之前在设定helloUserAction,在设定viewPage时,必须设定好完整的目录与文件名称,例如:

<bean id="helloUserAction" class="onlyfun.caterpillar.HelloUserAction">

        <property name="helloWord">

            <value>Hello!</value>

        </property>

        <property name="viewPage">

            <value>/WEB-INF/jsp/hellouser.jsp</value>

        </property>

    </bean>


 您可以在viewResolver中设定prefix与suffix属性,分别设定除了文件名之外的前置与后置文字,这样您的viewPage属性就可以只打档案的主要名称,直接给个实例:

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE beans PUBLIC "-//SPRING/DTD BEAN/EN" "http://www.springframework.org/dtd/spring-beans.dtd">

<beans>

    <bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">

        <property name="mappings">

            <props>

                <prop key="/hellouser.do">helloUserAction</prop>

            </props>

        </property>

    </bean>

   

    <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">

        <property name="viewClass">

            <value>org.springframework.web.servlet.view.InternalResourceView</value>

        </property>

        <property name="prefix">

            <value>/WEB-INF/jsp/</value>

        </property>

        <property name="suffix">

            <value>.jsp</value>

        </property>

    </bean>

   

    <bean id="helloUserAction" class="onlyfun.caterpillar.HelloUserAction">

        <property name="helloWord">

            <value>Hello!</value>

        </property>

        <property name="viewPage">

            <value>hellouser</value>

        </property>

    </bean>

</beans>


 您也可以将viewResolver的定义独立出来至一个属性文件中,使用 org.springframework.web.servlet.view.ResourceBundleViewResolver,这样作的好处是您可以根据您实际的url去处设定不同的表示层技术,例如:

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE beans PUBLIC "-//SPRING/DTD BEAN/EN" "http://www.springframework.org/dtd/spring-beans.dtd">

<beans>

    <bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">

        <property name="mappings">

            <props>

                <prop key="/hellouser.do">helloUserAction</prop>

            </props>

        </property>

    </bean>

   

    <bean id="viewResolver" class="org.springframework.web.servlet.view.ResourceBundleViewResolver">

        <property name="basename">

            <value>views</value>

        </property>

    </bean>

   

    <bean id="helloUserAction" class="onlyfun.caterpillar.HelloUserAction">

        <property name="helloWord">

            <value>Hello!</value>

        </property>

        <property name="viewPage">

            <value>hellouser</value>

        </property>

    </bean>

</beans>


 我们在ResourceBundleViewResolver的basename属性设定了views名称(实际上,views也是basename的 默认值),这表示我们将使用views.properties来设定表示层技术的viewClass与url,我们的views.properties如下:

hellouser.class=org.springframework.web.servlet.view.InternalResourceView

hellouser.url=/WEB-INF/jsp/hellouser.jsp

 

welcomeuser.class=org.springframework.web.servlet.view.JstlView

welcomeuser.url=/WEB-INF/jsp/welcomeuser.jsp

 

otherview.class=org.springframework.web.servlet.view.VelocityView

otherview.url=/WEB-INF/vm/other.vm


 利用这个方式,我们可以混合不同的表示层技术在同一个Web应用程序中,views.properties中是class与url值设定,其 hellouser与welcomeuser的名称是我们给ModelAndView的名称,例如我们设定了hellouser给 ModelAndView的话,就会去找hellouser.class与hellouser.url来设定表示层技术与url去处,我们则在这边是透过 helloUserAction的viewPage属性来注入,避免将名称写死在程序中。 
 如果您的JSP网页或Servlet中会丢出例外,而您想捕捉这个例外,除了容器与JSP网页的设定方法之外(参考JSP/Servlet版面中的介 绍),您也可以在DispatcherServlet的定义档中设定错误处理网页,设定一个exceptionResolver Bean,例如SimpleMappingExceptionResolver:

....

    <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">

        <property name="viewClass">

            <value>org.springframework.web.servlet.view.InternalResourceView</value>

        </property>

        <property name="prefix">

            <value>/WEB-INF/jsp/</value>

        </property>

        <property name="suffix">

            <value>.jsp</value>

        </property>

    </bean>

    <bean id="exceptionResolver" class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">

        <property name="exceptionMappings">

            <props>

                <prop key="java.sql.SQLException">exsql</prop>

                <prop key="java.sql.IOException">exio</prop>

            </props>

        </property>

    </bean>

....


 如此设定,只要发生了SQLException,就会连接至/WEB-INF/jsp/exsql.jsp,而发生了IOException,就会连接至/WEB-INF/jsp/exio.jsp。

分享到:
评论

相关推荐

    SSM框架-详细整合教程 (2).pdf

    配置Spring MVC的DispatcherServlet,定义视图解析器、拦截器、模型属性等。 **4.6 创建实体类、Mapper接口和XML文件** 编写与数据库交互的实体类,创建对应的Mapper接口和XML文件,定义SQL查询和结果映射。 **4.7...

    SpringMVC学习笔记,学习路线,详细

    在 Maven 项目中,我们需要添加 web 模块,并配置 web.xml 文件,这是 SpringMVC 的入口点,用于定义 DispatcherServlet 和其他必要的配置。 接着,我们需要创建请求控制器。控制器是一个普通的 Java 类,通过 @...

    SSM整合_年轻人的第一个增删改查_基础环境搭建.doc

    2. **配置SpringMVC**:编写`dispatcher-servlet.xml`,配置SpringMVC的DispatcherServlet,定义视图解析器、模型数据绑定、处理器映射器等。 3. **配置MyBatis**:创建MyBatis的配置文件`mybatis-config.xml`,以及...

    零基础搭建最新环境下的struts2+spring4+mybatis3框架

    本文档主要针对初级开发者,旨在指导如何从零开始搭建这样的开发环境。 ### 一、开发环境 在开始搭建前,确保你的机器上已经安装了以下基础软件: 1. **JDK**:Java Development Kit,是Java编程的基础,需要安装...

    SSM整合_年轻人的第一个增删改查_查找.doc

    本文档主要是针对初学者,提供了一个简单的增删改查(CRUD)应用实例,帮助理解如何在实际项目中整合并运用这三个框架。 首先,文档提到了SSM整合的基础环境搭建,这是任何基于SSM的应用开发的第一步。这通常包括...

    基于SSM架构的校园二手小商品交易平台的设计与实现.docx

    本文档主要介绍了基于SSM架构设计和实现的校园二手小商品交易平台。 首先,Spring框架作为基础,它提供了一个容器来管理对象及其依赖关系,使得开发者能够轻松地创建和维护bean。Spring的IoC允许外部配置文件决定...

    ssi框架搭建说明文档

    本文档主要讲解如何使用Spring2.5、Struts2、Ibatis这三个框架搭建一个基于SSI的开发环境。 首先,我们来看Struts2框架。Struts2是基于WebWork发展起来的,并且已经捐赠给了Apache开源组织。它的最新版本可以在...

    springboot参考指南

    关于本文档 ii. 2. 获取帮助 iii. 3. 第一步 iv. 4. 使用Spring Boot v. 5. 了解Spring Boot特性 vi. 6. 迁移到生存环境 vii. 7. 高级主题 3. II. 开始 i. 8. Spring Boot介绍 ii. 9. 系统要求 i. 9.1. Servlet容器...

Global site tag (gtag.js) - Google Analytics