学习小项目--学生信息管理系统用ssh2完善数据库用的是mysql

前些天做了个学生信息的管理系统 无非是些信息的增删改查  这次用了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标签

 

你可能感兴趣的:(java,ssh2)