【2】SSH整合-分层代码实现

来源:互联网 发布:拍照打字软件 编辑:程序博客网 时间:2024/05/16 12:11

接着开始进行编码

【1】新建javabean,以user类为模板,

public class User {
   
    private Integer id;
    private String     firstname;
    private String  lastname;
    private int     age;  ……

}

为每个属性生成get和set方法,这是spring要使用所必须的,以后要使用的类也一样

同时为此基本的Bean配置和编写此bean和数据库的映射文件,文件名为user.hbm.xml

内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mapping>
    <class name="oa.sean.bean.User" table="users">
   
    <id name="id" type="java.lang.Integer" column="id">
        <generator class="increment"></generator>
    </id>
   
    <property name="firstname" type="string" column="firstname" length="50"></property>
    <property name="lastname" type="string" column="lastname" length="50"></property>
    <property name="age" type="java.lang.Integer" column="age" ></property>
   
    </class>
</hibernate-mapping>

【2】为struts添加国际化标准

在src中新建struts.properties  内容为struts.custom.i18n.resources=globalMessages

同时也在相同目录下新建globalMessages-en.properties和globalMessages-zh.properties文件

以zh文件内容为例

firstname=/u59d3
lastname=/u540d
age=/u5e74/u9f84

这样在以后页面当中使用如果浏览器的语言是中文的话就可以以中文的方式进行显示,英文的话则按照en的配置文件进行显示

当然要修改相应的页面标签,如下

<s:textfield name="user.firstname" label="%{getText('firstname')}"></s:textfield>

【3】新建user的dao操作

创建一个user的接口

public interface UserDAO {
   
    public void saveUser(User user);
   
    public void removeUser(User user);
   
    public User findUserById(Integer id);
   
    public List<User> findAllUsers();
   
    public     void updateUser(User user);

}

之后定义一个impl类来实现此接口中的方法

部分代码如下:

public class UserDAOImpl extends HibernateDaoSupport implements UserDAO {

    @SuppressWarnings("unchecked")
    public List<User> findAllUsers() {
                        //是类名,不是表名
        String hql="from User user order by user.id desc";
        return (List<User>)this.getHibernateTemplate().find(hql);       
    }……

}

可以使用hibernate中提供的方法来简化数据库的操作

【4】创建服务层代码

dao操作不能直接被action调用,要在中间添加服务层

新建一个service的接口

public interface UserService {
    //action 和 dao之间要加入此服务层
    public List<User> findAll();
   
    public void save(User user);
   
    public void delete(User user);
   
    public User findById(Integer id);
   
    public void update(User user);

}

与dao类似,实现此接口

public class UserServiceImpl implements UserService {

    private UserDAO userDao;
   
   
    //要让spring进行注入要设置get和set方法
    public UserDAO getUserDao() {
        return userDao;
    }

    public void setUserDao(UserDAO userDao) {
        this.userDao = userDao;
    }
……

}

在此编写中服务层代码只是简单调用dao方法

服务依赖于spring将其注入,再调用dao进行操作

【5】编写action方法中的execute方法

public class SaveUserAction extends ActionSupport {
   
    private User user;
    private UserService userService;
   
    public UserService getUserService() {
        return userService;
    }

    public void setUserService(UserService userService) {
        this.userService = userService;
    }

    public User getUser() {
        return user;
    }

    public void setUser(User user) {
        this.user = user;
    }
   
    @Override
    public String execute() throws Exception {
        this.userService.save(user);
        return SUCCESS;
    }
   
}

在action中调用服务层的方法进行保存

【6】配置文件

struts.xml是控制前台控制的扭转

spring的则是bean之间的依赖关系和注入关系

<struts>
    <package name="user" extends="struts-default">
        <action name="saveUser" class="saveUserAction">
            <result name="success" type="redirect">listUser.action</result>
            <result name="input">/save.jsp</result>
        </action>
    </package>
     
</struts>