SSH初步整合
2013-05-18 12:43
507 查看
关于SSH整合,在整合的过程中会发现种种问题,首先是各种Jar包的问题(点击下载SSH整合所有Jar包),因为少包的问题而导致Tomcat无法启动,在网上找了很多答案,说Jar包要放在WEB-INF/lib下面,我只能说一句,自我写Web项目以来,我的Jar包一直是放在这个路径下的,最终还是确定为少了Jar包的问题,谢天谢地,Tomcat最后终于启动了,没报任何错。那么接下来就要配置web.xml文件了:
这里值得注意的一点是Spring的配置必须放在Struts2配置的核心拦截器前面,否则会报错的(具体原因,未去追查),然后就是applicationContext.xml文件了:
配置c3p0数据源,定义Hibernate的SessionFactory之类的,配置文件一定要小心再小心,经常因为拼写错误导致错误而浪费了很多时间。接下来就是做一个小小的注册测试了,老规矩还是Dao,Service加Action:
以上代码片段充分体现了三层调用关系,由Hibernate操纵数据库,所有要给Dao注入SessionFactory,然后由Service调用Dao层,Action又依赖与Service层。要注意的是在使用bean管理Action的时候一定要设置一个scope属性,其取值只能是prototype和request两种。偶尔会出现传值传不过去的问题,这就要考虑各种传值了,JSP往JSP传,JSP往Action传,Action往Action传值,Action往JSP传值,以及对应的取值,那么我们就可以使用EL表达式或者OGNL表达式了。
接下来页面表单提交到一个Action,在Struts.xml文件里配置一个“伪类”,真正的Action由Spring来管理,在Spring配置文件中指向真正的Action类:
这里要多说几句了,以上配置文件是在struts.xml文件中配置的,通过这种配置方法相比传统的配置方法(每一个请求配置一个Action)可以减少配置文件的代码量,其中name="*_*" class="{2}" method="{1}"是因为在页面提交请求采取了一定的命名规范
因为提交表单时是action="register_userAction.action",所以在struts.xml文件中通过配置name="*_*"然后通过{1}和{2}获取的值分别是
register和userAction,其中userAction就是一个伪类,需要在Spring的配置文件中指向其具体类,register则表示在该类中有一个register方法,其声明类型与Action中的默认execute()方法一致,其中${url}就需要在具体实现类中定义一个成员变量,为其生成setter和getter方法,在处理完请求之后this.url="……";然后在strtus.xml中即可通过${url}取出设定值,例如this.url
= "registerSuccess.jsp";
对以下代码解释一下
配置了属性
<property name="ps" ref="personService"></property>
是因为在Action类中定义了一个属性 private PersonService ps;并提供了setter与getter方法,所以,在Spring配置文件中要为Action注入这样一个业务逻辑组件。
<context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:applicationContext.xml</param-value> </context-param> <!-- 对Spring容器进行实例化 --> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <!-- 配置Struts2核心拦截器 --> <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>
这里值得注意的一点是Spring的配置必须放在Struts2配置的核心拦截器前面,否则会报错的(具体原因,未去追查),然后就是applicationContext.xml文件了:
<!-- 定义数据源,使用c3p0数据源实现 --> <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close"> <!-- 指定定义数据库的驱动 --> <!-- <property name="driverClass" value="oracle.jdbc.driver.OracleDriver"/> --> <property name="driverClass" value="com.mysql.jdbc.Driver"/> <!-- 指定定义数据库的URL --> <!-- <property name="jdbcUrl" value="jdbc:oracle:thin:@127.0.0.1:1521:mogu"/> --> <property name="jdbcUrl" value="jdbc:mysql://localhost/hibernate"/> <!-- 指定定义数据库的用户名 --> <!-- <property name="user" value="jonny"/> --> <property name="user" value="root"/> <!-- 指定定义数据库的密码 --> <property name="password" value="jonny"/> <!-- 指定连接数据库连接池的最大连接数 --> <property name="maxPoolSize" value="40"/> <!-- 指定连接数据库连接池的最小连接数 --> <property name="minPoolSize" value="1"/> <!-- 指定连接数据库连接池的初始化连接数 --> <property name="initialPoolSize" value="1"/> <!-- 指定连接数据库连接池的连接的最大空闲时间 --> <property name="maxIdleTime" value="20"/> </bean> <!-- 定义Hibernate的SessionFactory --> <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> <property name="dataSource" ref="dataSource"></property> <property name="mappingResources"> <list> <!-- 一下列出所有的PO映射文件 --> <value>com/tang/beans/Person.hbm.xml</value> </list> </property> <property name="hibernateProperties"> <!-- 设置Hibernate属性 --> <value> hibernate.dialect=org.hibernate.dialect.MySQLInnoDBDialect hibernate.hbm2ddl.auto=update hibernate.show_sql=true hibernate.format_sql=true; </value> </property> </bean>
配置c3p0数据源,定义Hibernate的SessionFactory之类的,配置文件一定要小心再小心,经常因为拼写错误导致错误而浪费了很多时间。接下来就是做一个小小的注册测试了,老规矩还是Dao,Service加Action:
<!-- Action依赖Service层 --> <bean id="RegisterAction" class="com.tang.action.RegisterAction" scope="prototype"> <property name="ps" ref="personService"></property> </bean> <!-- Service层依赖Dao层 --> <bean id="personService" class="com.tang.service.impl.PersonServiceImpl"> <property name="personDaoImpl" ref="personDao"></property> </bean> <!-- 给DAO注入sessionFactory ref="sessionFactory" --> <bean id="personDao" class="com.tang.dao.impl.PersonDaoImpl"> <property name="sessionFactory" ref="sessionFactory"></property> </bean>
以上代码片段充分体现了三层调用关系,由Hibernate操纵数据库,所有要给Dao注入SessionFactory,然后由Service调用Dao层,Action又依赖与Service层。要注意的是在使用bean管理Action的时候一定要设置一个scope属性,其取值只能是prototype和request两种。偶尔会出现传值传不过去的问题,这就要考虑各种传值了,JSP往JSP传,JSP往Action传,Action往Action传值,Action往JSP传值,以及对应的取值,那么我们就可以使用EL表达式或者OGNL表达式了。
接下来页面表单提交到一个Action,在Struts.xml文件里配置一个“伪类”,真正的Action由Spring来管理,在Spring配置文件中指向真正的Action类:
<package name="test" extends="struts-default" namespace="/test"> <action name="*_*" class="{2}" method="{1}"> <result name="success" type="redirect">${url}</result> </action> </package>
这里要多说几句了,以上配置文件是在struts.xml文件中配置的,通过这种配置方法相比传统的配置方法(每一个请求配置一个Action)可以减少配置文件的代码量,其中name="*_*" class="{2}" method="{1}"是因为在页面提交请求采取了一定的命名规范
<form action="register_userAction.action" method="post"> <center> <table> <tr><td>用户名:</td><td><input type="text" name="username"/></td></tr> <tr><td>密码:</td><td><input type="password" name="password"/></td></tr> <tr><td><input type="reset" value="重置"/></td><td><input type="submit" value="提交"/></td></tr> </table> </center> </form>
因为提交表单时是action="register_userAction.action",所以在struts.xml文件中通过配置name="*_*"然后通过{1}和{2}获取的值分别是
register和userAction,其中userAction就是一个伪类,需要在Spring的配置文件中指向其具体类,register则表示在该类中有一个register方法,其声明类型与Action中的默认execute()方法一致,其中${url}就需要在具体实现类中定义一个成员变量,为其生成setter和getter方法,在处理完请求之后this.url="……";然后在strtus.xml中即可通过${url}取出设定值,例如this.url
= "registerSuccess.jsp";
对以下代码解释一下
<bean id="RegisterAction" class="com.tang.action.RegisterAction" scope="prototype"> <property name="ps" ref="personService"></property> </bean>
配置了属性
<property name="ps" ref="personService"></property>
是因为在Action类中定义了一个属性 private PersonService ps;并提供了setter与getter方法,所以,在Spring配置文件中要为Action注入这样一个业务逻辑组件。
相关文章推荐
- SSH环境搭建,配置整合初步(一)
- SSH初步整合尝试
- Maven SSH初步整合
- 整合初步--------->SSH(注解版)
- ssh整合思想初步 structs2 Spring Hibernate三大框架各自要点
- ssh整合思想初步 struts2与Spring的整合 struts2-spring-plugin-2.3.4.1.jar下载地址 自动加载Spring中的XML配置文件 Struts2下载地址
- SSH初步整合的数据插入问题
- ssh初步整合
- SSH整合初步---设计及各层的创建顺序
- Shiro整合SSH开发1:整合Shiro+Struts2+Spring+Hibernate 初步整合配置【基于Maven】
- ssh整合 初步
- ssh三大框架简单整合,struts2整合JasperReport报表、图表,解决HTML显示图片不出来,PDF中文不显示的问题
- 整合ssh对于数据的增删改查数据运行正常但在数据库中没保存
- SH初步整合的异常:org.springframework.beans.factory.BeanCreationException
- SSH整合
- SSH整合- 2- add service layout
- SSH&nbsp;整合-&nbsp;6&nbsp;-&nbsp;service_serviceImp…
- 从MVC和三层架构说到ssh整合开发-上
- ssh整合 maven pom.xml依赖
- 简单的SSH整合登录注册