几乎每次做项目都是一样的心路历程,从无从下手到一点点熟悉然后再到感觉很轻松完成。几乎每一个阶段都要经历这样的历程。所以到下一个项目,就应该知道艰难的日子总会过去的。耐下心,一步一步的走。
我们在项目的过程中,在老师的讲解中一点点的理解到了SSH网上商城的一条线的结构。不同于之前项目的是,我们所有的前台页面都需要在struct和applicationContext.xml配置文件中做相应的配置。首先我们在项目中创建好各个包,也就是根据功能分的模块。根据分层思想我们将每个模块分为action层,dao层和service外加实体vo层。然后在包下建立相关的类。这一点和我们之前学习的没有什么差别。下面让小编带我们看看差别到底在哪里?
我们以用户为例:
hbm.xml为映射文件。service是业务层逻辑,dao层是对数据库进行连接的,action用来执行方法,并且把数据返回页面。structs和applicationContext是配置文件。让我们以注册为例看一下各层的代码吧。
1、首先要建立jsp页面;建立各个包和各个类。
2、用户注册的方法Action方法
/** * 用户注册的方法 */ public String regist(){ //判断验证码 //从session中获取验证码随机值 String checkcode1=(String) ServletActionContext.getRequest().getSession() .getAttribute("checkcode"); if(checkcode.equalsIgnoreCase(checkcode1)){ this.addActionError("您的验证码输入错误"); return "checkcodeFail"; } userService.save(user); this.addActionMessage("注册成功!请去邮箱激活!"); return "msg"; } 3、service层
//业务层完成用户注册代码 public void save(User user) { //将数据存入到数据库 user.setState(0);//0代表用户未激活 1,代表用户已激活 String code=UUIDUtils.getUUID()+UUIDUtils.getUUID(); user.setCode(code); userDao.save(user); //发送激活邮件; MailUitls.sendMail(user.getEmail(), code); }
4、dao
//注册用户存入数据库代码实现 public void save(User user) { this.getHibernateTemplate().save(user); } 5、vo实体层package cn.itcast.shop.user.vo; /** * 用户模块的实体类 * @author Emily * */ public class User { private Integer uid; private String username; private String password; private String name; private String email; private String phone; private String addr; private Integer state; private String code; public Integer getUid() { return uid; } public void setUid( Integer uid) { this.uid = uid; } public String getUsername() { return username; } public void setUsername( String username) { this.username = username; } public String getPassword() { return password; } public void setPassword( String password) { this.password = password; } public String getName() { return name; } public void setName( String name) { this.name = name; } public String getEmail() { return email; } public void setEmail( String email) { this.email = email; } public String getPhone() { return phone; } public void setPhone( String phone) { this.phone = phone; } public String getAddr() { return addr; } public void setAddr( String addr) { this.addr = addr; } public Integer getState() { return state; } public void setState( Integer state) { this.state = state; } public String getCode() { return code; } public void setCode( String code) { this.code = code; } } 6、hbm.xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> <hibernate-mapping> <class name="cn.itcast.shop.user.vo.User" table="user"> <id name="uid"> <generator class="native"></generator> </id> <property name="username"></property> <property name="password"></property> <property name="name"></property> <property name="email"></property> <property name="phone"></property> <property name="addr"></property> <property name="state"></property> <property name="code"></property> </class> </hibernate-mapping> 7、因为我们在Action中返回的是“msg”,就是注册成功之后,返回消息提示页面为注册成功,所以在struts的配置文件中,配置。因为成功页面很多的提示都需要用到,所以将他配置成全局。 8、applicationContext中需要配置Hibernate的映射文件
在applicationContextx.xml中配置action service和dao
至此,注册一条线就成功了。页面上的验证码就省略了。如有需要,请看SSH上成源码。感谢您宝贵的时间。如有错误,望大神斧正!
