ssh整合注意点

 

 

1) 整合SSH后,写了一个程序,后面发布(tomcat)的话,就会报下面的错。解决办法是移除Spring2.0 AOP Libraries中的“asm-2.2.3.jar”即可”,我看了一下,确实有

这两个包,删除asm-2.2.3.jar,发布成功。

2) 由于本程序要用到DAO,在用户管理类中我一开始使用

UserDAO dao = new UserDAO();

 public void addUser(User user)
 {
  dao.save(user);
 }
 后面一直会报一个空指针异常的错误(java.lang.NullPointerException),后来也是在网上找了好久,才发现一个我不小心的地方,就是我已经使用了Spring进行依赖注入,不

过上面的语句根本就没有注入,所以会报空指针异常的错误,改为下面的语句,使用Spring进行注入,也就是使用set方法就行注入即可(初学者经常犯的错误吧)。

 private UserDAO dao; 

 public void setDao(UserDAO dao)
 {
  this.dao = dao;
 }


 public void addUser(User user)
 {
  dao.save(user);
 }

<bean id="userManager" class="com.usc.manager.userManagerImpl">
  <property name="dao" ref="UserDAO"/>
 </bean>

3) 用Struts生成jsp文件的时候,会出现一个Cancel按钮,如果不处理的话,单击会报org.apache.struts.action.InvalidCancelException异常,网上说的话:Cancel按钮

的机制和submit机制是一样的,没有处理,如果要解决的话,在Struts配置文件中的每个action里面加上cancellable="true",虽然这样能够解决异常,但是治标不治本,此时如

果点击Cancel按钮会当一个submit按钮来进行提交,我觉得真有点违背常理,所以我的解决方案就是1.删除cancel按钮,2.修改为reset按钮(我觉得是最好的解决方案)

4) 配置文件
Spring的配置文件
Spring的配置文件主要是对Spring的一些机制进行配置,如:配置sessionFactory、配置sessionFactory、配置事务的传播特性、配置那些类的哪些方法参与事务、配置action,

配置一些bean
Struts的配置文件
主要是修改action中type属性,设置为spring管理,修改为
type="org.springframework.web.struts.DelegatingActionProxy">

5)web的配置加上

 <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>Spring character encoding filter</filter-name>
  <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
  <init-param>
   <param-name>encoding</param-name>
   <param-value>utf8</param-value>
  </init-param>
 </filter>
 <filter-mapping>
  <filter-name>Spring character encoding filter</filter-name>
  <url-pattern>/*</url-pattern>
 </filter-mapping>

6)适当的时候加入一些过滤器,比较好

以上都是s(Struts1.X)sh,下面的是s(Struts2.0)sh

-----------------------------------------------------------------
1.Struts.xml中的action中class并不是action的class而是自己通过spring注入的action
2.Hibernate的配置文件中加入
<property name="connection.autocommit">true</property>
默认是没有的,不然对数据库的添加...操作都不可以
3.在spring的配置action中,必须加入scope="prototype"
4.web的配置文件中加入
 <listener>
  <listener-class>
   org.springframework.web.context.ContextLoaderListener
  </listener-class>
 </listener>
5.同上面的(1)(2)
6.注意JSTL和迭代的使用(非常有用)
7.actionForm不能通过spring注入,一般改为静态注入,或者在业务逻辑中进行注入(这个时候一般是准备进行验证的)
8.JSTL真的很强大,但是要注意一点就是一定要记得引入标签库,不然他不报错,但是就是不能用。(切记,切记,已经很多次吃亏了)
9.数据库连接池技术实现如下(通过spring注入):
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
 <property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
 <property name="url" value="jdbc:mysql://localhost:3306/mytest?useUnicode=true&amp;characterEncoding=utf8"></property>
 <property name="username" value="root"></property>
 <property name="password" value="lishunli"></property>
 <property name="maxActive" value="100"></property>
 <property name="maxIdle" value="30"></property>
 <property name="maxWait" value="500"></property>
 <property name="defaultAutoCommit" value="true"></property>
</bean>

<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
 <property name="dataSource" ref="dataSource"></property>
 <property name="hibernateProperties">
  <props>
   <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
   <prop key="hibernate.show_sql">true</prop>
  </props>
 </property>
 <property name="mappingResources">
  <list>
   <value>com/test/bean/User.hbm.xml</value>
  </list>
 </property>
</bean>

你可能感兴趣的:(DAO,spring,bean,struts,ssh)