闲来无事,来搞下SSH框架的搭建吧。
1.struts搭建
这个不用说了吧,新建一个web项目,把struts-2.3.7-all解压后的struts2-blank里面的lib下面的包全部复制到你新建的web项目里面,把web-inf下面的web.xml复制过去,把src目录下的struts.xml复制到新建的src目录下。最重要的是你要集成spring,那么问题来了,你少包了,亲。去struts-2.3.7-all文件夹的lib目录下把struts2-spring-plugin-2.3.7包拷贝到新建的lib目录下面。调试,ok。
2.集成spring
(1)aspectj文件夹下面的包都拷贝过去
AspectJ是一个面向切面的框架,它扩展了Java语言。spring
使用AOP的时候也会用到它。
(2)spring的核心包肯定少不了了。
(3)cglib包也是必须的。
cglib是一个强大的,高性能,高质量的Code生成类库,它可以在运行期扩展Java类与实现Java接口。Hibernate用它来实现PO(Persistent
Object 持久化对象)字节码的动态生成。
(4)j2ee文件夹下的common-annotations也需要
annotation是注解时需要用到。
(5)jakarta-commons文件夹下的commons-logging,commons-pool(java数据库连接池
包)
(6)需要注意的是spring的jar包里面有slf的api和slf-log4j的转换包,那么还需要一个log4j的包,也就是总共三个
slf4j-api-1.5.0,slf4j-log4j12-1.5.0和log4j12-1.5.0这样输出log就不会报log什么的错误了。
ok上图。
目前的jar包就这么多。
光说不练不行,那么我们先建立晒晒struts.xml的内容。
<span style="color:#333333;"><?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd"> <struts> <constant name="struts.enable.DynamicMethodInvocation" value="false" /> <constant name="struts.devMode" value="false" /> <package name="default" namespace="/pages" extends="struts-default"> <default-action-ref name="index" /> <global-results> <result name="error">/error.jsp</result> </global-results> <global-exception-mappings> <exception-mapping exception="java.lang.Exception" result="error"/> </global-exception-mappings> <action name="userAction" class="</span><strong><span style="color:#ff0000;">userActionBean</span></strong><span style="color:#333333;">"> <result name="success">success.jsp</result> </action> </package> </struts></span>
好,大家看到粗红体的字了吗?为什么不是类的包路径呢???!!!对了,因为action也要交给spring容器实例化的啊。所以,这里只写spring配置文件里的bean的name/id,下面是spring的配置文件applicationContext.xml的内容
<span style="color:#333333;"><?xml version="1.0" encoding="UTF-8" ?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" </span><span style="color:#ff0000;"><strong>xmlns:context="http://www.springframework.org/schema/context"</strong></span><span style="color:#333333;"> xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> <!-- Resource注解方式得到实例化的bean --> </span><strong><span style="color:#ff0000;"> <context:annotation-config/></span></strong><span style="color:#333333;"> <bean id="userService" class="com.test.xuehf.serivce.UserServiceImp"/> <bean id="userActionBean" class="com.test.xuehf.action.UserAction"> <!-- setter 方法注入 action中必须要有setter方法 <property name="userService" ref="userService"></property> --> </bean> </beans></span>
怎么又有粗红体了!嗯,不要着急,这个是为了方便你在action中调用service的时候直接以@Resource注解的方式获取spring已经实例化的service实例而配置的,必须要写上这两句。OK,运行下吧
Caused by: java.lang.NullPointerException
oh,NO!why,为什么会报空指针异常呢?这是因为你的web.xml没有配置spring的监听,需要spring去初始化bean才不会有空指针的出错啊。
web.xml
<?xml version="1.0" encoding="UTF-8"?> <web-app id="WebApp_9" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> <display-name>Struts Blank</display-name> <!-- --> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:applicationContext.xml</param-value> </context-param> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <welcome-file-list> <welcome-file>index.html</welcome-file> </welcome-file-list> </web-app>
那么ok了,现在为止spring集成struts已经可以运行了
未完待续。。。