隨筆-208  評論-469  文章-30  trackbacks-0


          動(dòng)畫教程第十五集

           

          本集為第十二集Struts+Spring+Hibernate練習(xí)(完整) 續(xù)集

           

          下載地址:http://oksonic.kc100.net/download/sonic015.rar

           

          將增加以下部份內(nèi)容

           

          注冊新用戶,用戶瀏覽、刪除用戶

           

          現(xiàn)在導(dǎo)入原工程

           

          打開 UserDAO.java 文件,增加以下方法,此方法為增加用戶

          public interface UserDAO {

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

              public abstract boolean addUser(User user);

          }

           

          打開 UserDAOImp.java 文件,添加接口方法的實(shí)現(xiàn),并為方法編寫以下內(nèi)容:

              public boolean addUser(User user) {

                  try {

                      this.getHibernateTemplate().save(user);

                  } catch (Exception e) {

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

                      return false;

                  }

                  return true;

              }

           

           

          按下 Ctrl + N 使用向?qū)?chuàng)建 add.jsp AddForm(動(dòng)態(tài))AddAction.java文件這是注冊新用戶的Action

           

          修改配置內(nèi)容如下

          <action

                attribute="addForm"

                input="/add.jsp"

                name="addForm"

                path="/add"

                scope="request"

                validate="true"

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

           

          第一句實(shí)現(xiàn)了必須對提交的數(shù)據(jù)進(jìn)行驗(yàn)證

          第二句實(shí)現(xiàn)了和spring集成

           

          修改 AddAction.java 文件,內(nèi)容如下:

           

              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();

                  }

              }

           

          關(guān)于在Action中使用 User 對像我在這里沒有使用 IoC 方式進(jìn)行管理這不好希望大家在正式應(yīng)用中使用。

           

          spring配置文件applicationContext.xml中加入以下內(nèi)容

                 <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 文件的首行替換為以下內(nèi)容目的是為了使用UTF-8的編碼格式顯示頁面

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

           

          修改 validation.xml 文件加入以下內(nèi)容

                  <form name="addForm">

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

                        <arg0 key="prompt.username" />

                     </field>

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

                        <arg0 key="prompt.password" />

                     </field>

                 </form>

           

           

          現(xiàn)在整個(gè) AddUser 已經(jīng)完成,如果你覺得不放心的話可以在這里停一停先進(jìn)行這一段的測試!

           

          創(chuàng)建一個(gè)Action用于查詢數(shù)據(jù),名稱為 find

           

          創(chuàng)建 display.jsp 文件,用于顯示所有用戶

           

          創(chuàng)建一個(gè) 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 文件內(nèi)容如下

              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中加入以下內(nèi)容

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

                 <property name="userDAO">

                     <ref bean="userDAOProxy" />

                 </property>

              </bean>

           

          修改 display.jsp 文件內(nèi)容如下

          <%@ 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>

            <body>

              <logic:present name="users">

              <form action="del.do">

              <table border="1">

              <logic:iterate id="element" name="users">

              <tr><td width="100">

                 <input type="radio" name="select" value="<bean:write name="element" property="id"/>">

              <bean:write name="element" property="username"/>

              </td></tr>

              </logic:iterate>

              </table>

              <INPUT type="submit" name="Submit" value="submit">

              </form>

              </logic:present>

            </body>

          </html>

           

          現(xiàn)在整個(gè) Display 已經(jīng)完成,如果你覺得不放心的話可以在這里停一停先進(jìn)行這一段的測試!

           

          新建一個(gè) Action 用于刪除選中的用戶,name:del

           

          修改 struts-config.xml 文件中的以下內(nèi)容為:

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

           

          修改 UserDAO.java 文件增加以下方法

          public interface UserDAO {

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

              public abstract boolean addUser(User user);

              public abstract List findAllUser();

              public abstract boolean delUser(Integer lid);

          }

           

          修改 UserDAOImp.java 文件添加新增的兩個(gè)方法并編寫以下內(nèi)容

              public boolean delUser(Integer lid) {

                  try {

                      User user=(User)this.getHibernateTemplate().load(User.class,lid);

                      this.getHibernateTemplate().delete(user);

                  } catch (Exception e) {

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

                      return false;

                  }

                  return true;

              }

           

          修改 DelAction.java 文件內(nèi)容如下

          public class DelAction extends Action {

           

              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) {

                  Integer selid=Integer.valueOf(request.getParameter("select"));

                  if(userDAO.delUser(selid))

                      return mapping.findForward("indexGo");

                  return mapping.getInputForward();

              }

          }

           

          spring配置文件applicationContext.xml中加入以下內(nèi)容

                 <bean name="/del" class="com.test.struts.action.DelAction" 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>

              <br>

              <a href="find.do">Display</a>

            </body>

          </html>

           

           

          代碼已經(jīng)全部完成,可以進(jìn)行測試了!!!

           

          在添加用戶的過程中出現(xiàn)了錯(cuò)誤,就是沒有驗(yàn)證就直接提交了,并能夠提交空的用戶!

          這里解決的方式有多種,修改程是肯定的了,還有就是在設(shè)計(jì)數(shù)據(jù)庫的時(shí)候加上限制如將 username 和 password 為字設(shè)置為 not null

           

          將修改這一段

          <form-bean name="addForm" type="org.apache.struts.action.DynaActionForm">

                <form-property name="password" type="java.lang.String" />

                <form-property name="username" type="java.lang.String" />

              </form-bean>

           

          修改后

          <form-bean name="addForm" type="org.apache.struts.validator.DynaValidatorForm">

                <form-property name="password" type="java.lang.String" />

                <form-property name="username" type="java.lang.String" />

              </form-bean>

           

          可以了,這集就講到這里了!下集再見!

          posted on 2006-01-17 19:57 EricWong 閱讀(171) 評論(0)  編輯  收藏 所屬分類: Java
          主站蜘蛛池模板: 平舆县| 凤山市| 洛宁县| 三门县| 西乌珠穆沁旗| 山丹县| 宿迁市| 莱芜市| 新沂市| 揭东县| 垫江县| 白朗县| 璧山县| 汨罗市| 和硕县| 鄂温| 奇台县| 成都市| 通州市| 天气| 惠水县| 双桥区| 永修县| 霞浦县| 澄城县| 九江市| 靖边县| 安达市| 思茅市| 安图县| 建水县| 河津市| 山东省| 开平市| 大宁县| 永兴县| 湘乡市| 化德县| 西乌珠穆沁旗| 北京市| 哈巴河县|