java

位置:IT落伍者 >> java >> 浏览文章

spring 整合strut2


发布日期:2022年03月16日
 
spring 整合strut2
Spring整合Struts

虽然Spring也提供了自己的MVC组件但一来Spring的MVC组件过于繁琐二 来Struts的拥护者实在太多因此很多项目都会选择使用Spring整合Struts框架而且Spring确实可以无缝整合Struts框架二者结合成一个更实际的JEE开发平台

使用Spring的Web应用时不用手动创建Spring容器而是通过配置文件声明式地创建Spring容器因此在Web应用中创建Spring容器有如下两个方式

● 直接在webxml文件中配置创建Spring容器

● 利用第三方MVC框架的扩展点创建Spring容器

其实第一种创建Spring容器的方式更加常见为了让Spring容器随Web应用的启动而自动启动有如下两个方法

● 利用ServletContextListener实现(推荐)

● 采用loadonstartup Servlet实现

Spring 提供ServletContextListener的一个实现类ContextLoaderListener该类可以作为Listener使用会在创 建时自动查找WEBINF/下的applicationContextxml文件因此如果只有一个配置文件并且文件名为 applicationContextxml只需在webxml文件中增加如下配置片段即可

<listener>

<listenerclass>orgsprntext ContextLoaderListener

</listenerclass>

</listener>

如 果有多个配置文件需要载入则考虑使用<contextparam>元素来确定配置文件的文件名 ContextLoaderListener加载时会查找名为contextConfigLocation的参数因此配置context param时参数名字应该是contextConfigLocation

带多个配置文件的webxml文件如下

<?xml version= encoding=GBK?>

<! 指定Web配置文件的根元素以及相应的Schema信息 >

<webapp xmlns=javasun/xml/ns/jee

xmlns:xsi=//XMLSchemainstance

xsi:schemaLocation=javasun/xml/ns/jee

javasun/xml/ns/jee/webapp__xsd

version=>

<! 确定多个配置文件 >

<contextparam>

<! 参数名为contextConfigLocation >

<paramname>contextConfigLocation</paramname>

<! 多个配置文件之间以隔开 >

<paramvalue>/WEBINF/daoContextxml/WEBINF/

applicationContextxml</paramvalue>

</contextparam>

<! 采用listener创建ApplicationContext实例 >

<listener>

<listenerclass>orgsprntext

ContextLoaderListener</listenerclass>

</listener>

</webapp>

如 果没有通过contextConfigLocation指定配置文件Spring会自动查找application Contextxml配置文件如果有contextConfigLocation则利用该参数确定的配置文件如果无法找到合适的配置文件 Spring将无法正常初始化

Spring 根据bean定义创建WebApplicationContext对象并将其保存在web应用的ServletContext中大部分情况下应用中 的Bean无须感受到ApplicationContext的存在只要利用ApplicationContext的IoC即可

如果需要在应用中获取ApplicationContext实例可以通过如下代码获取

//获取当前Web应用的Spring容器

WebApplicationContext ctx =

WebApplicationContextUtilsgetWebApplicationContext(servletContext)

除此之外Spring提供了一个特殊的Servlet类ContextLoaderServlet该Servlet在启动时会自动查找WEBINF/下的applicationContextxml文件

完整的webxml文件可能如下

<?xml version= encoding=UTF?>

<webapp version= xmlns=/xml/ns/javaee

xmlns:xsi=//XMLSchemainstance

xsi:schemaLocation=/xml/ns/javaee

/xml/ns/javaee/webapp__xsd>

<! 使用ContextLoaderListener初始化Spring容器 >

<listener>

<listenerclass>orgsprntextContextLoaderListener</listenerclass>

</listener>

<! 定义Struts 的FilterDispathcer的Filter >

<filter>

<filtername>struts</filtername>

<filterclass>orgapachestrutsdispatcherngfilterStrutsPrepareAndExecuteFilter</filterclass>

</filter>

<! FilterDispatcher用来初始化Struts 并且处理所有的WEB请求 >

<filtermapping>

<filtername>struts</filtername>

<urlpattern>/*</urlpattern>

</filtermapping>

<welcomefilelist>

<welcomefile>l</welcomefile>

</welcomefilelist>

</webapp>

struts的配置文件strutsxml可能如下

<?xml version= encoding=UTF?>

<!DOCTYPE struts PUBLIC

//Apache Software Foundation//DTD Struts Configuration //EN

/dtds/strutsdtd>

<struts>

<constant name=strutsdevMode value=true />

<constant name=strutsactionextension value=doaction />

<constant name=strutsinencoding value=UTF />

<package name=aboutlogin extends=strutsdefault>

<action name=login class=loginAction method=CheckUser>

<result name=success>/WEBINF/pages/Homejsp</result>

<result name=input>/WEBINF/pages/loginjsp</result>

<result name=failed>/WEBINF/pages/loginjsp</result>

</action>

</package>

<include file=strutsinformationxml />

</struts>

上一篇:Struts入门经验(一)

下一篇:Spring-OSGI 1.0 M3 中文手册