Topquan's Blog

          分享價值----成就你我----我的博客----你的家

          eclipse下struts+spring+hibernate快速入門(二)

          Web層.
          創建Struts Action,為了在一個action中實現CRUD操作,Action繼承了DispatchAction根據參數決定調用方法。在src/com.jandar.web.struts.action下創建UserAction.java
          import javax.servlet.http.HttpServletRequest;
          import javax.servlet.http.HttpServletResponse;
          import org.apache.commons.logging.Log;
          import org.apache.commons.logging.LogFactory;
          import org.apache.struts.action.ActionForm;
          import org.apache.struts.action.ActionForward;
          import org.apache.struts.action.ActionMapping;
          import org.apache.struts.action.ActionMessage;
          import org.apache.struts.action.ActionMessages;
          import org.apache.struts.action.DynaActionForm;
          import org.apache.struts.actions.DispatchAction;
          import com.jandar.model.User;
          import com.jandar.service.spring.UserManager;
          public class UserAction extends DispatchAction {
          private static Log log = LogFactory.getLog(UserAction.class);
          private UserManager mgr = null;
          public void setUserManager(UserManager userManager) {
          this.mgr = userManager;
          }
          public ActionForward delete(ActionMapping mapping, ActionForm form,
          HttpServletRequest request,
          HttpServletResponse response)
          throws Exception {
          if (log.isDebugEnabled()) {
          log.debug("entering ''delete'' method...");
          }
          mgr.removeUser(request.getParameter("user.id"));
          ActionMessages messages = new ActionMessages();
          messages.add(ActionMessages.GLOBAL_MESSAGE,
          new ActionMessage("user.deleted"));
          saveMessages(request, messages);
          return list(mapping, form, request, response);
          }
          public ActionForward edit(ActionMapping mapping, ActionForm form,
          HttpServletRequest request,
          HttpServletResponse response)
          throws Exception {
          if (log.isDebugEnabled()) {
          log.debug("entering ''edit'' method...");
          }
          DynaActionForm userForm = (DynaActionForm) form;
          String userId = request.getParameter("id");
          // null userId indicates an add
          if (userId != null) {
          User user = mgr.getUser(userId);
          if (user == null) {
          ActionErrors errors = new ActionMessages();
          errors.add(ActionMessages.GLOBAL_MESSAGE,
          new ActionMessage("user.missing"));
          saveErrors(request, errors);
          return mapping.findForward("list");
          }
          userForm.set("user", user);
          }
          return mapping.findForward("edit");
          }
          public ActionForward list(ActionMapping mapping, ActionForm form,
          HttpServletRequest request,
          HttpServletResponse response)
          throws Exception {
          if (log.isDebugEnabled()) {
          log.debug("entering ''list'' method...");
          }
          request.setAttribute("users", mgr.getUsers());
          return mapping.findForward("list");
          }
          public ActionForward save(ActionMapping mapping, ActionForm form,
          HttpServletRequest request,
          HttpServletResponse response)
          throws Exception {
          if (log.isDebugEnabled()) {
          log.debug("entering ''save'' method...");
          }
          // run validation rules on this form
          ActionErrors errors = form.validate(mapping, request);
          if (!errors.isEmpty()) {
          saveErrors(request, errors);
          return mapping.findForward("edit");
          }
          DynaActionForm userForm = (DynaActionForm) form;
          mgr.saveUser((User)userForm.get("user"));
          ActionMessages messages = new ActionMessages();
          messages.add(ActionMessages.GLOBAL_MESSAGE,
          new ActionMessage("user.saved"));
          saveMessages(request, messages);
          return list(mapping, form, request, response);
          }
          public ActionForward unspecified(ActionMapping mapping, ActionForm form,
          HttpServletRequest request,
          HttpServletResponse response)
          throws Exception {
          return list(mapping, form, request, response);
          }
          }
          UserAction.java通過UserManger訪問業務層,UserManager通過依賴注入
          2. 創建struts ActionFrom
          可以在src/com.jandar.web.struts.form下創建一個UserForm.java的struts ActionForm,我們也可以采用已建好的模型來配置form bean即采用動態form
          org.apache.struts.validator.DynaValidatorForm 同時指定property 為
          com.jandar.model.User詳見struts-config.xml配置文件.

          配置struts-config.xml
          1. 配置struts-config.xml
          <?xml version="1.0" encoding="UTF-8"?>
          <!DOCTYPE struts-config PUBLIC
          "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN"
          "<struts-config>
          <!-- ======================================== Form Bean Definitions -->
          <form-beans>
          <form-bean
          name="userForm" type="org.apache.struts.validator.DynaValidatorForm">
          <form-property name="user" type="com.jandar.model.User"/>
          </form-bean>
          </form-beans>
          <!-- =================================== Global Forward Definitions -->
          <global-forwards>
          </global-forwards>
          <!-- =================================== Action Mapping Definitions -->
          <action-mappings>
          <action path="/user" type="com.jandar.web.struts.action.UserAction "
          name="userForm" scope="request" parameter="method" validate="false">
          <forward name="list" path="/userList.jsp"/>
          <forward name="edit" path="/userForm.jsp"/>
          </action>
          </action-mappings>
          <!-- ================================ Message Resources Definitions -->
          <message-resources parameter="messages"/>
          </struts-config>
          2. 通過struts-config.xml把struts和spring結合起來
          UserAction.java中的UserManager需要通過依賴注入,通過plug-in技術將spring加到struts中,在struts-config.xml中增加一下代碼
          <plug-in className="org.springframework.web.struts.ContextLoaderPlugIn">
          <set-property property="contextConfigLocation"
          value="/WEB-INF/applicationContext.xml,
          /WEB-INF/action-servlet.xml"/>
          </plug-in>
          讓struts啟動同時初始化spring,讀取spring的配置文件applicationContext.xml,并且把struts的action也交給spring管理,把action配置到action-servlet.xml中
          新建action-servlet.xml
          <?xml version="1.0" encoding="UTF-8"?>
          <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
          "
          <beans>
          <bean name="/user" class="com.jandar.web.struts.action.UserAction" singleton="false">
          <property name="userManager"><ref bean="userManager"/></property>
          </bean>
          </beans>
          同時將action映射到org.springframework.web.struts.DelegatingActionProxy即修改
          <action path="/user" type="org.springframework.web.struts.DelegatingActionProxy"
          name="userForm" scope="request" parameter="method" validate="false">
          <forward name="list" path="/userList.jsp"/>
          <forward name="edit" path="/userForm.jsp"/>
          </action>
          3. 新建web.xml配置文件
          <?xml version="1.0" encoding="UTF-8"?>

          <web-app xmlns="

          xmlns:xsi="

          xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee

          <servlet>

          <servlet-name>action</servlet-name>

          <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>

          <init-param>

          <param-name>config</param-name>

          <param-value>/WEB-INF/struts-config.xml</param-value>

          </init-param>

          <init-param>

          <param-name>debug</param-name>

          <param-value>3</param-value>

          </init-param>

          <init-param>

          <param-name>detail</param-name>

          <param-value>3</param-value>

          </init-param>

          <load-on-startup>1</load-on-startup>

          </servlet>


          <servlet-mapping>

          <servlet-name>action</servlet-name>

          <url-pattern>*.do</url-pattern>

          </servlet-mapping>


          <welcome-file-list>

          <welcome-file>index.jsp</welcome-file>

          </welcome-file-list>


          </web-app>

          4. 新建index.jsp,userList.jsp,userForm.jsp
          index.jsp
          <%@ page language="java"%>

          <%@ taglib uri="

          <%@ taglib uri="

          <%@ taglib uri="

          <%@ taglib uri="

          <%@ taglib uri="

          <%@ taglib uri="<html:html locale="true">

          <head>

          <html:base />


          <title>index.jsp</title>

          </head>


          <body>

          <html:link href="user.do?method=list">List all user</html:link>

          </body>

          </html:html>

          userForm.jsp
          <%@ page language="java"%>
          <%@ taglib uri="
          <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
          <html:html locale="true">
          <head>
          <html:base />
          <title>userform.jsp</title>
          </head>
          <body>
          <html:form action="user.do?method=save" method="post" focus="id">
          <html:hidden property="user.id"/>
          <table border="0">
          <tr>
          <td>id:</td>
          <td><html:text property="user.firstname"/></td>
          </tr>
          <tr>
          <td>lastname:</td>
          <td><html:text property="user.lastname" /></td>
          </tr>
          <tr>
          <td colspan="2" align="center"><html:submit property="tijiao"/></td>
          </tr>
          </table>
          </html:form>
          </body>
          </html:html>
          userList.jsp
          <%@ page language="java"%>
          <%@ taglib uri="
          <%@ taglib uri="<%@ taglib uri="<%@ taglib uri="<%@ taglib uri="<%@ taglib uri="<%@ taglib uri="<html:html locale="true">
          <head>
          <html:base />
          <title>userList.jsp</title>
          </head>
          <body>
          This a struts page. <br>
          <table class="list">
          <thead>
          <tr>
          <th>id</th>
          <th>firstName</th>
          <th>lastName</th>
          </tr>
          </thead>
          <tbody>
          <logic:iterate id="user" name="users">
          <tr>
          <td>
          <a href="user.do?method=edit&amp;id=<bean:write name="user" property="id"/>"><bean:write name="user" property="id"/></a>
          </td>
          <td><bean:write name="user" property="firstName"/></td>

          <td><bean:write name="user" property="lastName"/></td></tr>
          </logic:iterate>
          </tbody>
          </table>
          </body>
          </html:html>

          posted on 2006-08-09 23:15 topquan 閱讀(751) 評論(0)  編輯  收藏 所屬分類: Spring

          主站蜘蛛池模板: 扬州市| 南华县| 张家口市| 黔东| 尼勒克县| 时尚| 文登市| 绥滨县| 赤水市| 黔东| 靖江市| 林州市| 美姑县| 高碑店市| 卫辉市| 龙山县| 龙陵县| 谷城县| 莒南县| 博爱县| 栾川县| 辽阳市| 洪泽县| 收藏| 双流县| 建瓯市| 格尔木市| 仁布县| 界首市| 大姚县| 乌拉特后旗| 扬中市| 曲靖市| 淳安县| 从化市| 岗巴县| 潼关县| 临潭县| 宜兰市| 中阳县| 陈巴尔虎旗|