速动画教程第十五集

 

本集为第十二集Struts+Spring+Hibernate练习(完整) 续集

 

下载地址:http://sonic.peakle.net/download/sonic015.rar

 

将增加以下部份内容

 

注册新用户,用户浏览、删除用户

 

现在导入原工程

 

打开 UserDAO.java 文件,增加以下方法,此方法为增加用户

public interface UserDAO {

    public abstract boolean isValidUser(String username, String password);

    public abstract boolean addUser(User user);

}

 

打开 UserDAOImp.java 文件,添加接口方法的实现,并为方法编写以下内容:

    public boolean addUser(User user) {

        try {

            this.getHibernateTemplate().save(user);

        } catch (Exception e) {

            System.out.println(e.getMessage());

            return false;

        }

        return true;

    }

 

 

按下 Ctrl + N 使用向导创建 add.jsp AddForm(动态)AddAction.java文件这是注册新用户的Action

 

修改配置内容如下

<action

      attribute="addForm"

      input="/add.jsp"

      name="addForm"

      path="/add"

      scope="request"

      validate="true"

      type="org.springframework.web.struts.DelegatingActionProxy" />

 

第一句实现了必须对提交的数据进行验证

第二句实现了和spring集成

 

修改 AddAction.java 文件,内容如下:

 

    private UserDAO userDAO;

   

    public UserDAO getUserDAO() {

        return userDAO;

    }

    public void setUserDAO(UserDAO userDAO) {

        this.userDAO = userDAO;

    }

 

    public ActionForward execute(

        ActionMapping mapping,

        ActionForm form,

        HttpServletRequest request,

        HttpServletResponse response) {

        DynaActionForm addForm = (DynaActionForm) form;

        User user=new User();

        user.setUsername(addForm.getString("username"));

        user.setPassword(addForm.getString("password"));

        addForm.set("password", null);

        if (userDAO.addUser(user)) {

            return mapping.findForward("indexGo");

        } else {

            return mapping.getInputForward();

        }

    }

 

关于在Action中使用 User 对像我在这里没有使用 IoC 方式进行管理这不好希望大家在正式应用中使用。

 

spring配置文件applicationContext.xml中加入以下内容

       <bean name="/add" class="com.test.struts.action.AddAction" singleton="false">

       <property name="userDAO">

           <ref bean="userDAOProxy" />

       </property>

    </bean>

 

修改 index.jsp 文件

<html>

  <head>

    <title>Struts+Spring+Hibernate</title>

  </head>

 

  <body>

    <a href="login.jsp">Login</a>

    <br>

    <a href="add.jsp">Add User</a>

  </body>

</html>

 

修改 add.jsp 文件的首行替换为以下内容目的是为了使用UTF-8的编码格式显示页面

<%@ page language="java" contentType="text/html; charset=UTF-8" %>

 

修改 validation.xml 文件加入以下内容

        <form name="addForm">

           <field property="username" depends="required">

              <arg0 key="prompt.username" />

           </field>

           <field property="password" depends="required">

              <arg0 key="prompt.password" />

           </field>

       </form>

 

 

现在整个 AddUser 已经完成,如果你觉得不放心的话可以在这里停一停先进行这一段的测试!

 

创建一个Action用于查询数据,名称为 find

 

创建 display.jsp 文件,用于显示所有用户

 

创建一个 forward 指向 display.jsp 选中 redirect

 

修改 UserDAO.java 文件,增加 findAllUser() 方法,代码如下:

    public abstract List findAllUser();

 

修改 UserDAOImp.java 文件,增加 findAllUser() 方法,代码如下:

    public List findAllUser() {

        List users=this.getHibernateTemplate().find("from User u");

        if(users.size()>0)

            return users;

        return null;

    }

 

修改 struts-config.xml 文件

<action path="/find" type="org.springframework.web.struts.DelegatingActionProxy" />

 

修改 FindAction.java 文件内容如下

    private UserDAO userDAO;

   

    public UserDAO getUserDAO() {

        return userDAO;

    }

    public void setUserDAO(UserDAO userDAO) {

        this.userDAO = userDAO;

    }

 

    public ActionForward execute(

        ActionMapping mapping,

        ActionForm form,

        HttpServletRequest request,

        HttpServletResponse response) {

        List users=userDAO.findAllUser();

        if(users!=null){

            HttpSession session=request.getSession();

            session.setAttribute("users",users);

            return mapping.findForward("displayGo");

        }

        return mapping.getInputForward();

    }

 

spring配置文件applicationContext.xml中加入以下内容

       <bean name="/find" class="com.test.struts.action.FindAction" singleton="false">

       <property name="userDAO">

           <ref bean="userDAOProxy" />

       </property>

    </bean>

 

修改 display.jsp 文件内容如下

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

<%@ taglib uri="http://jakarta.apache.org/struts/tags-bean" prefix="bean"%>

<%@ taglib uri="http://jakarta.apache.org/struts/tags-html" prefix="html"%>

<%@ taglib uri="http://jakarta.apache.org/struts/tags-logic" prefix="logic"%>

<html>

  <head>

    <title>DISPLAY</title>

  </head>