一直没有把三个结合起来用过,今天小试了一下,结果问题多多。就一个删除记录的操作,却出现很奇怪的问题。启动容器,打开页面,删除任意记录,没问题,跳转正常,接着再删除任意一条,于是IE的进度条就一点点的前进,很慢,程序似乎卡住了,除非重启服务器。不知道是不是配置的问题,大家帮看下:页面代码:<a href='<%=path() %>/ssh.do?action=deleteById&id=<bean:write name="rd" property="id" />'>删除</a>
Action:public ActionForward deleteById(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) { sshService.delelteById(Integer.parseInt(request.getParameter("id")));
return mapping.findForward("toIndex");
}Struts-config.xml <action path="/ssh"
type="org.springframework.web.struts.DelegatingActionProxy"
name="sshForm" parameter="action">
<forward name="toList" path="/main.jsp"></forward>
<forward name="toIndex" path="/index.jsp"></forward>
</action>DAO:public class SshDaoImpl extends HibernateDaoSupport implements ISshDao { public void deleteById(String sql, int id) {
this.getSession().beginTransaction();
Query query = this.getSession().createQuery(sql);
query.setInteger(0, id);
query.executeUpdate();
this.getSession().beginTransaction().commit();
this.getSession().close();
}
}Spring 配置文件:<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName"
value="com.mysql.jdbc.Driver">
</property>
<property name="url" value="jdbc:mysql://localhost:3306/blog"></property>
<property name="username" value="root"></property>
<property name="password" value="snje"></property>
</bean>
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource">
<ref bean="dataSource" />
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">
org.hibernate.dialect.MySQLDialect
</prop>
</props>
</property>
<property name="mappingResources">
<list>
<value>com/ssh/pojo/Posts.hbm.xml</value>
</list>
</property>
</bean>
<bean id="sshDAO" class="com.ssh.dao.impl.SshDaoImpl" scope="singleton">
<property name="sessionFactory">
<ref bean="sessionFactory" />
</property>
</bean>
<bean id="sshService" class="com.ssh.service.impl.SshServiceImpl" scope="singleton">
<property name="sshDAO">
<ref bean="sshDAO" />
</property>
</bean>
<bean name="/ssh" class="com.ssh.action.SshAction" scope="prototype">
<property name="sshService">
<ref bean="sshService" />
</property>
</bean>
</beans>我单步跟了一下,第二次删除的时候,关于删除它同样调用了后面的方法。sshService.delelteById(Integer.parseInt(request.getParameter("id"))); <-------单步到这没问题
return mapping.forward(); 这里它就没有走这一步
Action:public ActionForward deleteById(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) { sshService.delelteById(Integer.parseInt(request.getParameter("id")));
return mapping.findForward("toIndex");
}Struts-config.xml <action path="/ssh"
type="org.springframework.web.struts.DelegatingActionProxy"
name="sshForm" parameter="action">
<forward name="toList" path="/main.jsp"></forward>
<forward name="toIndex" path="/index.jsp"></forward>
</action>DAO:public class SshDaoImpl extends HibernateDaoSupport implements ISshDao { public void deleteById(String sql, int id) {
this.getSession().beginTransaction();
Query query = this.getSession().createQuery(sql);
query.setInteger(0, id);
query.executeUpdate();
this.getSession().beginTransaction().commit();
this.getSession().close();
}
}Spring 配置文件:<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName"
value="com.mysql.jdbc.Driver">
</property>
<property name="url" value="jdbc:mysql://localhost:3306/blog"></property>
<property name="username" value="root"></property>
<property name="password" value="snje"></property>
</bean>
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource">
<ref bean="dataSource" />
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">
org.hibernate.dialect.MySQLDialect
</prop>
</props>
</property>
<property name="mappingResources">
<list>
<value>com/ssh/pojo/Posts.hbm.xml</value>
</list>
</property>
</bean>
<bean id="sshDAO" class="com.ssh.dao.impl.SshDaoImpl" scope="singleton">
<property name="sessionFactory">
<ref bean="sessionFactory" />
</property>
</bean>
<bean id="sshService" class="com.ssh.service.impl.SshServiceImpl" scope="singleton">
<property name="sshDAO">
<ref bean="sshDAO" />
</property>
</bean>
<bean name="/ssh" class="com.ssh.action.SshAction" scope="prototype">
<property name="sshService">
<ref bean="sshService" />
</property>
</bean>
</beans>我单步跟了一下,第二次删除的时候,关于删除它同样调用了后面的方法。sshService.delelteById(Integer.parseInt(request.getParameter("id"))); <-------单步到这没问题
return mapping.forward(); 这里它就没有走这一步
谢谢youanyyou倒不是有异常,什么异常信息都没有显示
首次运行,执行删除这个动作是没有问题的,从调用到跳转都是正确的. 如果再来删除一条记录的话,问题就来了, 我单步跟了一下, 从请求到调用都是正常的,数据也删除了,我查看了数据库的sshService.delelteById(Integer.parseInt(request.getParameter("id")));<--这一步完成了,要到下一步跳转的时候, 我就单步就跟丢了
return mapping.findForward("toIndex"); <---没有到这里浏览器的状态就是像打开一个很难打开的网面的那种状态, 过很久后会显示无法打开, 只有重启服务器才行,每次只能进行一次操作. 开始配置的时候好像包有冲突, 后来配置好了. 应该和这个没有关系吧.