ssh集成:
1、集成步骤
1.1 添加框架支持,jar包篇
a、创建Web Project。
b、创建对应的包:dao/service/entity/action等。
c、给项目添加struts支持,在弹出的对话框中选择“Struts2.1”及“/*”,
点击Next选择Core、Dojo以及Spring3组类库,单击Finish完成。
d、给项目添加spring支持,选择Spring3.0,添加前4组类库:AOP、
Core、Persistence Core、Persistence JDBC Lib...和 Web Lib...,
单击Next选择默认创建applicationContext.xml完成。
e、利用MyElipse8.5自带的DB Explorer创建新的DB Driver...
f、给项目添加hibernate支持,选择Hibernate3.3,如果使用注解,
需要勾上Enable Hibernate Annotations... ,类库默认即可,
Next后选择Spring configuration file...点击Next,
选择Existing Spring config...,点击Next选择配置好的DB Driver,
点击Next,取消Create SessionFactory ...单击完成。
1.2 代码编写:
a、利用反向工程生成实体类和映射文件
b、编写DAO接口及实现类
c、编写Service接口及实现类
d、编写Action
e、编写JSP
1.3 配置文件篇:
a、配置web.xml
b、配置applicationContext.xml
c、配置struts.xml
****************************************集成完成****************************************************
例子:web工程《ssh》
文 件配置详解:
web.xml:
<!-- 过滤器解决延时加载的问题,必须放在所有其他配置的最前面 -->
<filter>
<filter-name>OpenSessionInViewFilter</filter-name>
<filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class>
<!-- 这个过滤器中把hibernate的session的刷新模式设置成never了,所以在使用之前先配置FlushMode
的这个参数值为AUTO,如果不设置,只可以做查询,不能进行增删改,因为不能持久化了 -->
<init-param>
<param-name>FlushMode</param-name>
<param-value>AUTO</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>OpenSessionInViewFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- 读取spring的配置文件 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<!--applicationContext.xml的路径,classpath代表在src下面 -->
<param-value>classpath:applicationContext.xml</param-value>
</context-param>
<!-- 加载spring的监听器,必须放在web.xml自带的配置之前 ,因为要进行反转-->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
applicationContext.xml:
在<beans></beans>标签中添加如下配置
<!-- 往dao中注入sessionFactory -->
<!--id的名字可以任意取,class对应dao的实现类-->
<bean id="AddrDao" class="com.dao.AddressDaoImpl">
<!--name必须为sessionFactory,因为自动生成的id=sessionFactory-->
<property name="sessionFactory" ref="sessionFactory"/>
</bean>
<!-- 往业务中注入dao -->
<!--id的名字可以任意取,class对应biz的实现类-->
<bean id="AddrBiz" class="com.biz.AddressBizImpl">
<!--name需和实现类的set的名字相对应-->
<property name="adao" ref="AddrDao"></property>
</bean>
<!-- 往action中注入业务 -->
<!--bean的属性不是id,而是name,class对应action的实现类-->
<bean name="addrAction" class="com.web.action.AddressAction">
<!--name需和action类的set的名字相对应-->
<property name="abiz" ref="AddrBiz"></property>
</bean>
struts2.xml:
<package name="default" namespace="/" extends="struts-default">
<!--action的name可任取,只要jsp页面的action和其对应即可,注意:class对应的不是action的类,而是和
applicationContext.xml中<bean>标签的name保持一致。
-->
<action name="addr" class="addrAction">
<result name="get">index.jsp</result>
</action>
</package>
****************************************2014-5-10下午**********************************************
spring与filter的集成
使用Spring来管理Filter,实现步骤如下:
1、创建自定义Filter,实现filter接口,添加需要注入的属性及setter方法(注意:无需在web.xml中配置,使用Spring代理类实现功能)
2、在web.xml中配置Filter的代理类:
<filter>
<filter-name>springFilter</filter-name>
<filter-class> org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
<filter-mapping>
<filter-name>springFilter</filter-name>
<url-pattern>/*</url-pattern> //需要过滤的Web资源
</filter-mapping>
3、在applicationContext中配置Filter
<bean id="springFilter" class="com.sxt.TestFilter">
<property name="service" ref="service"/> //需要注意的属性名称
</bean>
例子:web项目"ssh"中的MyFilter
spring与Servlet的集成:
spring中没有提供Servlet的代理类,需要自己写一个代理类进行配置
(代理类:DelegatingServletProxy.java)
<!--其他配置基本同filter的配置-->
1、创建自定义Servlet,添加需要注入的属性及setter方法(注意:无需在web.xml中配置,使用自定义代理类实现功能,见DelegatingServletProxy)
2、在web.xml中配置,自己实现的Servlet代理类:
<servlet>
<servlet-name>springServlet</servlet-name>
<servlet-class>com.sxt.DelegatingServletProxy </servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>springServlet</servlet-name>
<url-pattern>/TestServlet</url-pattern> // Servlet访问路径
</servlet-mapping>
在applicationContext中配置Servlet
<bean id="springServlet" class="com.sxt.TestServlet">
<property name="service" ref="service"/> //需要注意的属性名称
</bean>
配置log4j
1、为什么要配置log4j
(1)消除启动服务时的log4j的警告
(2)在ssh的集成项目中一般都配置log4j,为了读取项目运行中的日志以及错误,为了更好地维护
(3)将运行中出现的错误一直打印在控制台上。
2、配置步骤:
a、查看是否导log4j的jar包,在Hibernate3.3 Core Libraries中
b、加log4j的属性文件log4j.properties到src下
c、在web.xml中指定log4j.properties配置文件的位置
<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>classpath:log4j.properties</param-value>
</context-param>
d、指定log4j的监听程序,用以启动log4j
<listener>
<listener-class>
org.springframework.web.util.Log4jConfigListener
</listener-class>
</listener>
【注意】e、d需要配置在spring的启动监听前,否则还会有警号信息!
log4j.properties:
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %m%n
log4j.appender.file=org.apache.log4j.FileAppender
log4j.appender.file.File=c:/log.log
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %l %m%n
log4j.rootLogger=error, stdout, file
spring配置文件的拆分:
(1)新建xml,将xml头部的代码拷贝粘贴。。
(2)在applicationContext.xml中导入其他的xml,
<import resource="application-cfg.xml"/>
(3)在web.xml中修改加载spring的配置
<param-value>classpath:applicationContext.xml,classpath:application-*.xml</param-value>
或者
<param-value>
classpath:applicationContext.xml,
classpath:applicationContext-cfg.xml
</param-value>
【多个配置文件之间用逗号隔开】