|
前些天做了个学生信息的管理系统 无非是些信息的增删改查 这次用了ssh2不用模拟数据库了
注意点:
1.jar包
2.applicationContext.xml struts.xml hibernate.cfg.xml mode中类和映射文件User.hbm.xml
3.配置稍稍有点不同
用hibernateTemplate配置了sessionFactory在dao中配置了hibernateTemplate 也可以直接配置seesionFactory
<bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
4.在struts.xml中配置action 中的class必须和对应在applicationContext.xml的<bean id="***Action" class="com.***.action.**Action"> id的名字相对应,这样网页提交的action才能用spring实例化的对象
5.在(用User做对象)UserAction 中 声明userService 或者在UserService中声明UserDAO的时候最好用接口声明
用的是动态代理 当然用类直接声明也是可以的 用的就是CGILB代理
6.dao要extends HibernateDaoSupport
下面放spring 和struts的配置
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd">
<beans>
<bean id="userAction" class="com.aowin.action.UserAction" scope="prototype">
<property name="userService" ref="userService"></property>
</bean>
<bean id="userService" class="com.aowin.serviceimpl.UserServiceImpl">
<property name="userDAO" ref="userDAO"></property>
</bean>
<bean id="userDAO" class="com.aowin.daoimpl.UserDAOImpl">
<property name="hibernateTemplate" ref="hibernateTemplate"></property>
</bean>
<bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="configLocation" value="classpath:hibernate.cfg.xml"></property>
</bean>
<!-- 负责开启、提交事务 -->
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
<bean id="transactionInterceptor" class="org.springframework.transaction.interceptor.TransactionInterceptor">
<property name="transactionManager" ref="transactionManager"></property>
<property name="transactionAttributes">
<props>
<prop key="*">PROPAGATION_REQUIRED</prop>
</props>
</property>
</bean>
<bean id="autoproxy" class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
<property name="beanNames" value="*Service"></property>
<property name="interceptorNames" value="transactionInterceptor"></property>
</bean>
</beans>
struts
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<constant name="struts.devMode" value="true" />
<package name="default" namespace="/user" extends="struts-default">
<action name="userlist" class="userAction" method="getUsers">
<result>/list.jsp</result>
</action>
<action name="input" class="userAction" method="addInput">
<result>/input.jsp</result>
</action>
<action name="update" class="userAction" method="update">
<result>/update.jsp</result>
</action>
<action name="updatedo" class="userAction" method="updatedo">
<result name="input">/result.jsp</result>
<result>/result.jsp</result>
</action>
<action name="delete" class="userAction" method="delete">
<result>/result.jsp</result>
</action>
<action name="add" class="userAction" method="addUser">
<!-- 配置重复提交的拦截器 -->
<interceptor-ref name="token"></interceptor-ref>
<!-- 配置全局的拦截器(有单独的拦截器默认的就会被替换掉,注意此时一定要加上) -->
<interceptor-ref name="defaultStack"></interceptor-ref>
<result name="input">/result.jsp</result>
<result name="success">/result.jsp</result>
<result name="invalid.token">/error.jsp</result>
</action>
</package>
</struts>
dao
import java.util.List;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import com.aowin.idao.IUserDAO;
import com.aowin.model.User;
public class UserDAOImpl extends HibernateDaoSupport implements IUserDAO {
public void addUser(User user) {
this.getHibernateTemplate().save(user);
}
public void deleteUser(User user) {
this.getHibernateTemplate().delete(user);
}
public List<User> getAllUser() {
String hql = "from User" ;
List<User> list = this.getHibernateTemplate().find(hql);
return list;
}
public void updateUser(User user) {
this.getHibernateTemplate().update(user);
}
public User getOneUser(int id) {
String hql = "select u from User u where u.id=?";
List<User> list = this.getHibernateTemplate().find(hql, id);
return list.get(0);
}
}
action 中部分代码是老师的:
import java.util.List;
import com.aowin.iservice.IUserService;
import com.aowin.model.User;
import com.aowin.serviceimpl.UserServiceImpl;
import com.opensymphony.xwork2.Action;
import com.opensymphony.xwork2.ActionSupport;
@SuppressWarnings("serial")
public class UserAction extends ActionSupport {
private int id;
private String message;
private User user;
private List<User> userList;
private IUserService userService;
public IUserService getUserService() {
return userService;
}
public void setUserService(IUserService userService) {
this.userService = userService;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
public List<User> getUserList() {
return userList;
}
public void setUserList(List<User> userList) {
this.userList = userList;
}
/**
* 查询所有用户
*
* @return
*/
public String getUsers() {
userList = userService.getUserList();
return Action.SUCCESS;
}
/**
* 准备添加用户
*
* @return
*/
public String addInput() {
return Action.SUCCESS;
}
/**
* 添加用户
*
* @return
*/
public synchronized String addUser() {
userList = userService.getUserList();
// 业务逻辑的验证
if (userList.contains(this.user)) {
this.message = "已经存在相同用户,不能添加";
return "input";
}
// 增加用户
userService.addMessage(user.getUsername(), user.getAddress());
this.message = "添加用戶成功";
return Action.SUCCESS;
}
/**
* 验证表单输入的合法性
*/
public void validateAddUser() {
if (null == this.user) {
this.message = "请输入合法的用户名,地址";
// 强制去找input试图
this.addFieldError("", "");
} else if (null == user.getAddress() || "".equals(user.getAddress())) {
this.message = "请输入合法的用户名或者地址";
this.addFieldError("", "");
} else if (null == user.getUsername() || "".equals(user.getAddress())) {
this.message = "请输入合法的用户名或者地址";
this.addFieldError("", "");
}
}
/**
* 准备修改用户
*
* @return
*/
public String update() {
for (User u : userService.getUserList()) {
if (u.getId() == this.id) {
user = u;
}
}
return Action.SUCCESS;
}
/**
* 修改用户
*
* @return
*/
public String updatedo() {
// 用户名 密码没有实际修改就提交
for (User u : userService.getUserList()) {
if (u.getId() == this.id
&& u.getUsername().equals(user.getUsername())
&& u.getAddress().equals(user.getAddress())) {
this.message = "您没有做修改";
return Action.INPUT;
}
}
// 用户名密码确实有修改过
if (userService.getUserList().contains(this.user)) {
this.message = "存在相同的用户名、地址,不能修改";
return Action.INPUT;
}
userService.updateMessage(id, user.getUsername(), user
.getAddress());
this.message = "修改用户成功";
return Action.SUCCESS;
}
/**
* 验证修改用户
*/
public void validateUpdatedo() {
// 验证表单输入域的合法性
validateAddUser();
}
/**
* 删除用户
*
* @return
*/
public String delete() {
userService.delMessage(id);
this.message = "删除成功";
return Action.SUCCESS;
}
}
显示用的是jsp页面 可以用S标签 也可以用一般的html标签 |
|
|