按照网上的教程,做了个用户注册的小例子。
输入用户名、密码提交后,每次都提示注册成功,控制台也能输出新用户的id,但数据库中却没有记录。
之前在另一个项目中,将配置文件改为annotation时,也出现过这种问题,一直没有找到原因,不知道各位前辈有没有人知道原因?
注册页面index.jsp
<s:form action="register">
<s:textfield label="用户名" name="username"/>
<s:password label="密码" name="password"/>
<s:submit value="注册"/>
</s:form>
Action:
@Controller
@Scope("prototype")
@ParentPackage(value="struts-default")
@Results({
@Result(name="success",value="success.jsp"),
@Result(name="input",value="index.jsp")
})
public class RegisterAction extends ActionSupport {
@Resource(name="userService")
private UserServiceBean userService;
private String username;
private String password;
@Override
public String execute() throws Exception {
User user = new User();
user.setUsername(username);
user.setPassword(password);
userService.save(user);
return SUCCESS;
}
}
Service:
@Service("userService")
public class UserServiceBean {
@Autowired
private UserDao userDao;
public void save(User user){
int id = userDao.save(user);
System.out.println("id="+id);
}
}
DAO:
@Repository("userDao")
public class UserDaoBean extends MyHibernateDaoSupport implements UserDao {
public int save(User user){
Integer id = (Integer)super.getHibernateTemplate().save(user);
return id;
}
MyHibernateDaoSupport .java:
public class MyHibernateDaoSupport extends HibernateDaoSupport {
@Resource(name="sessionFactory")
//为父类HibernateDaoSupport注入sessionFactory的值
public void setSuperSessionFactory(SessionFactory sessionFactory){
super.setSessionFactory(sessionFactory);
}
}
applicationContext.xml
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"> <property name="configLocation"> <value>classpath:hibernate.cfg.xml</value> </property> </bean>
hibernate.cfg.xml
<session-factory>
<property name="connection.username">root</property>
<property name="connection.url">
jdbc:mysql://localhost:3306/ssh_annotation
</property>
<property name="dialect">
org.hibernate.dialect.MySQLDialect
</property>
<property name="myeclipse.connection.profile">
ssh_anno_mysql
</property>
<property name="connection.password">ruihui</property>
<property name="connection.driver_class">
com.mysql.jdbc.Driver
</property>
<property name="show_sql">true</property>
<property name="format_sql">true</property>
<property name="hbm2ddl.auto">update</property>
<!-- 将Session扔到线程里去处理 -->
<property name="current_session_context_class">thread</property>
<mapping class="com.rong.entity.User"/>
</session-factory>