J2EE劍俠行

          直覺我的J2EE應用生涯,打造我心中的一把利劍。

          常用鏈接

          統計

          技術鏈接

          最新評論

          三個JAVA文件完成你的MVC應用

          只需要你三個JAVA類和兩個配置文件,就可以完成你的MVC應用,我們就做一個示例吧。


          本文以一個登錄為例。

          第一個JAVA文件


          /**============================================================
          ?*?版權:?Antbee?版權所有?(c)?2002?-?2006
          ?*?文件:?com.antbee.sysmanage.login.action.UserAction
          ?*?所含類:?UserAction
          ?*?修改記錄:
          ?*?日期????????????????作者????????????????內容
          ?*?=============================================================
          ?*?2006-8-28????????????和巍雅?????????????建立文件
          ?*?============================================================
          */

          package?com.antbee.sysmanage.login.action;

          import?java.util.List;

          import?javax.servlet.http.HttpServletRequest;
          import?javax.servlet.http.HttpServletResponse;
          import?javax.servlet.http.HttpSession;

          import?org.apache.struts.action.ActionForm;
          import?org.apache.struts.action.ActionForward;
          import?org.apache.struts.action.ActionMapping;
          import?org.apache.struts.actions.DispatchAction;
          import?org.apache.struts.validator.DynaValidatorForm;
          import?com.antbee.hibernate.model.AirlineUserInformation;
          import?com.antbee.sysmanage.login.dao.UserDAO;

          /**
          ?*?<p>
          ?*?</p>
          ?*
          ?*?<p>
          ?*?Copyright:?版權所有?(c)?2002?-?2006
          ?*?</p>
          ?*?<p>
          ?*?Company:?antbee
          ?*?</p>
          ?*
          ?*?
          @author?@家軍
          ?*?
          @version?1.0
          ?
          */

          public?class?UserAction?extends?DispatchAction?{
          ????
          //?依賴注入
          ????private?UserDAO?userDAO;

          ????
          public?UserDAO?getUserDAO()?{
          ????????
          return?userDAO;
          ????}

          ????
          public?void?setUserDAO(UserDAO?userDAO)?{
          ????????
          this.userDAO?=?userDAO;
          ????}????????

          ????
          /**
          ?????*
          ?????*?用戶登錄
          ?????*
          ?????*?
          @param
          ?????*?
          @return
          ?????*?
          @throws
          ?????
          */
          ????
          public?ActionForward?Login(ActionMapping?mapping,?ActionForm?form,
          ????????????HttpServletRequest?request,?HttpServletResponse?response)
          ????????????
          throws?Exception?{
          ????????HttpSession?session?
          =?request.getSession();
          ????????DynaValidatorForm?LoginActionForm?
          =?(DynaValidatorForm)?form;
          ????????AirlineUserInformation?User?
          =?(AirlineUserInformation)?LoginActionForm
          ????????????????.get(
          "User");
          ????????
          if?(User?!=?null)?{
          ????????????String?MDpwd?
          =?CommonTools.encrypt(User.getPassword());
          ????????????
          if?(userDAO.Login(User.getLoginName(),?MDpwd))?{
          ????????????????
          //?成功登錄
          ????????????????
          //?加載一些session
          ????????????????AirlineUserInformation?LegalUser?=?userDAO.GetUser(User
          ????????????????????????.getLoginName());
          ????????????????String?LoginName?
          =?LegalUser.getLoginName();
          ????????????????String?UserName?
          =?LegalUser.getUserName();
          ????????????????String?UserId?
          =?LegalUser.getUserId().toString();
          ????????????????String?UserType?
          =?LegalUser.getUserType().toString();
          ????????????????String?DeptId?
          =?LegalUser.getAirlineDepartmentInformation()
          ????????????????????????.getDepartmentId().toString();
          ????????????????String?DeptName?
          =?LegalUser.getAirlineDepartmentInformation().getDepartmentName();
          ????????????????String?RoleId?
          =?LegalUser.getSysRoleInfo().getRoleId()
          ????????????????????????.toString();
          ????????????????session.setAttribute(
          "LoginName",?LoginName);//?登錄名
          ????????????????session.setAttribute("UserName",?UserName);//?用戶姓名
          ????????????????session.setAttribute("UserId",?UserId);//?用戶ID
          ????????????????session.setAttribute("DeptId",?DeptId);//?部門ID
          ????????????????session.setAttribute("DeptName",?DeptName);//?部門DeptName
          ????????????????session.setAttribute("UserType",?UserType);//?用戶類別
          ????????????????session.setAttribute("RoleId",?RoleId);//?角色ID
          ????????????????return?mapping.findForward("Comein");
          ????????????}
          ????????}
          ????????request.setAttribute(
          "UserMsg",?"User.LawLess");
          ????????
          return?mapping.findForward("Fail");
          ????}

          ????
          /**
          ?????*
          ?????*?用戶退出
          ?????*
          ?????*?
          @param
          ?????*?
          @return
          ?????*?
          @throws
          ?????
          */
          ????
          public?ActionForward?LogOut(ActionMapping?mapping,?ActionForm?form,
          ????????????HttpServletRequest?request,?HttpServletResponse?response)
          ????????????
          throws?Exception?{
          ????????HttpSession?session?
          =?request.getSession();
          ????????session.removeAttribute(
          "LoginName");//?登錄名
          ????????session.removeAttribute("UserName");//?用戶姓名
          ????????session.removeAttribute("UserId");//?用戶ID
          ????????session.removeAttribute("DeptId");//?部門ID
          ????????session.removeAttribute("UserType");//?用戶類別
          ????????session.removeAttribute("RoleId");//?角色ID
          ????????session.invalidate();//?控件無效
          ????????return?mapping.findForward("LogOut");
          ????}


          第二個JAVA文件:


          /**============================================================
          ?*?版權:?antbee?版權所有?(c)?2002?-?2006
          ?*?文件:?com.antbee.kams.sysmanage.login.dao.UserDAO
          ?*?所含類:?IUserDAO
          ?*?修改記錄:
          ?*?日期????????????????作者????????????????內容
          ?*?=============================================================
          ?*?2006-8-28???????????@家軍?????????????建立文件
          ?*?============================================================
          */

          package?com.antbee.sysmanage.login.dao;

          import?java.util.List;

          import?com.antbee.hibernate.model.AirlineUserInformation;

          /**
          ?*?<p></p>
          ?*
          ?*?<p>Copyright:?版權所有?(c)?2002?-?2006</p>
          ?*?<p>Company:?antbee</p>
          ?*
          ?*?
          @author?@家軍
          ?*?
          @version?1.0
          ?
          */

          public?interface?UserDAO?{
          ????
          //用戶登錄 如果是正確的用戶名/密碼,則返回true,否則返回false
          ????public?boolean?Login(String?UserName,String?PassWord);
          ????
          //取得用戶信息
          ????public?AirlineUserInformation?GetUser(String?LoginName);
          }


          第三個JAVA文件;

          /**============================================================
          ?*?版權:?antbee?版權所有?(c)?2002?-?2006
          ?*?文件:?com.antbee.sysmanage.login.dao.hibernate.UserDAOImpl
          ?*?所含類:?UserDAOImpl
          ?*?修改記錄:
          ?*?日期????????????????作者????????????????內容
          ?*?=============================================================
          ?*?2006-8-28????????????@家軍?????????????建立文件
          ?*?============================================================
          */

          package?com.antbee.sysmanage.login.dao.hibernate;

          import?java.util.ArrayList;
          import?java.util.Collections;
          import?java.util.Comparator;
          import?java.util.Iterator;
          import?java.util.List;
          import?java.util.Set;

          import?org.springframework.orm.ObjectRetrievalFailureException;
          import?org.springframework.orm.hibernate3.support.HibernateDaoSupport;


          import?com.antbee.hibernate.model.AirlineUserInformation;
          import?com.travelsky.kams.sysmanage.login.dao.UserDAO;

          /**
          ?*?<p>
          ?*?</p>
          ?*
          ?*?<p>
          ?*?Copyright:?版權所有?(c)?2002?-?2006
          ?*?</p>
          ?*?<p>
          ?*?Company:?antbee
          ?*?</p>
          ?*
          ?*?
          @author?Administrator
          ?*?
          @version?1.0
          ?
          */

          public?class?UserDAOImpl?extends?HibernateDaoSupport?implements?UserDAO?{

          ????
          /*
          ?????*?(非?Javadoc)
          ?????*
          ?????*?@see?com.travelsky.kams.sysmanage.login.dao.IUserDAO#Login(java.lang.String,
          ?????*??????java.lang.String)?用戶登錄?如果是正確的用戶名/密碼,則返回true,否則返回false
          ?????
          */
          ????
          public?boolean?Login(String?UserName,?String?PassWord)?{
          ????????
          //?TODO?Auto-generated?method?stub
          ????????String?finduser?=?"from?AirlineUserInformation?as?user?where?user.loginName='"
          ????????????????
          +?UserName?+?"'?and?user.password='"?+?PassWord?+?"'";
          ????????List?Lfinduser?
          =?this.getHibernateTemplate().find(finduser);
          ????????
          if?(Lfinduser.size()?>=?1)?{
          ????????????
          return?true;
          ????????}
          ????????
          return?false;
          ????}

          ????
          /*
          ?????*?(非?Javadoc)
          ?????*
          ?????*?@see?com.travelsky.kams.sysmanage.login.dao.IUserDAO#Login(java.lang.String,
          ?????*??????java.lang.String)?取得用戶信息
          ?????
          */
          ????
          public?AirlineUserInformation?GetUser(String?LoginName)?{
          ????????
          //?TODO?Auto-generated?method?stub
          ????????AirlineUserInformation?user?=?null;
          ????????String?finduser?
          =?"from?AirlineUserInformation?as?user?where?user.loginName='"
          ????????????????
          +?LoginName?+?"'";
          ????????List?Lfinduser?
          =?this.getHibernateTemplate().find(finduser);
          ????????
          if?(Lfinduser.size()?>=?1)?{
          ????????????user?
          =?(AirlineUserInformation)?Lfinduser.get(0);
          ????????}?
          else?{
          ????????????
          throw?new?ObjectRetrievalFailureException(
          ????????????????????AirlineUserInformation.
          class,?LoginName);
          ????????}
          ????????
          return?user;
          ????}
          }


          兩個配置文件,
          第一個struts-config.xml

          <?xml?version="1.0"?encoding="UTF-8"?>
          <!DOCTYPE?struts-config?PUBLIC?"-//Apache?Software?Foundation//DTD?Struts?Configuration?1.2//EN"?"http://struts.apache.org/dtds/struts-config_1_2.dtd">

          <struts-config>
          ????
          <data-sources?/>
          ????
          <!--?動態驗證FORM??-->
          ????
          <form-beans>
          ????????
          <form-bean?name="LoginActionForm"
          ????????????type
          ="org.apache.struts.validator.DynaValidatorForm">
          ????????????
          <form-property?name="User"
          ????????????????type
          ="com.antbee.hibernate.model.AirlineUserInformation"?/>
          ????????
          </form-bean>
          ????
          </form-beans>
          ????
          <!--?全局異常?-->
          ????
          <global-exceptions>
          ????????
          <exception?key="error.required"
          ????????????type
          ="org.springframework.dao.DataAccessException"
          ????????????path
          ="/dataAccessFailure.jsp"?/>
          ????
          </global-exceptions>
          ????
          <!--?全局轉向?-->
          ????
          <global-forwards>
          ????????
          <!--?所有非法用戶返回登錄頁面??-->
          ????????
          <forward?name="LoginGo"?path="/User.do?method=LogOut"></forward>
          ????????
          <!--?業務規則出錯信息提示??-->
          ????????
          <forward?name="Fail"?path="/jsp/common/failed.jsp"></forward>
          ????
          </global-forwards>
          ????
          <!--?分發控制?-->
          ????
          <action-mappings>
          ????????
          <action?path="/User"
          ????????????type
          ="org.springframework.web.struts.DelegatingActionProxy"
          ????????????name
          ="LoginActionForm"?scope="request"?parameter="method"
          ????????????validate
          ="false">
          ????????????
          <forward?name="UserMenu"?path="/jsp/leftMenu.jsp"?/>
          ????????????
          <forward?name="Comein"?path="/jsp/index.jsp"?/>
          ????????????
          <forward?name="LogOut"?path="/login.jsp"?/>
          ????????
          </action>????????
          ????
          </action-mappings>
          ????
          <!--?資源文件?-->
          ????
          <message-resources?parameter="resources.ApplicationResources"?/>
          ????
          <!--?使用Spring控制事務?-->
          ????
          <plug-in
          ????????
          className="org.springframework.web.struts.ContextLoaderPlugIn">
          ????????
          <set-property?property="contextConfigLocation"
          ????????????value
          ="classpath:applicationContext.xml"?/>
          ????
          </plug-in>
          ????
          <!--?使用表單驗證共同類validator?-->
          ????
          <plug-in?className="org.apache.struts.validator.ValidatorPlugIn">
          ????????
          <set-property?property="pathnames"
          ????????????value
          ="/WEB-INF/validator-rules.xml,?/WEB-INF/validation.xml"?/>
          ????
          </plug-in>
          </struts-config>


          第二個XML文件:
          applicationContext.xml


          <?xml?version="1.0"?encoding="UTF-8"?>
          <!DOCTYPE?beans?PUBLIC?"-//SPRING//DTD?BEAN//EN"?"http://www.springframework.org/dtd/spring-beans.dtd">

          <beans>

          ????
          <!--Start?of?Session?Factory?-->
          ????
          <bean?id="SessionFactory"
          ????????class
          ="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
          ????????
          <property?name="configLocation">
          ????????????
          <value>classpath:hibernate.cfg.xml</value>
          ????????
          </property>
          ????????
          <property?name="hibernateProperties">
          ????????????
          <props>
          ????????????????
          <prop?key="connection.provider_class">
          ????????????????????org.hibernate.connection.ProxoolConnectionProvider
          ????????????????
          </prop>
          ????????????????
          <prop?key="hibernate.dialect">
          ????????????????????org.hibernate.dialect.Oracle9Dialect
          ????????????????
          </prop>
          ????????????
          </props>
          ????????
          </property>
          ????
          </bean>
          ????
          <!--End?of?SessionFactory?-->

          ????
          <!--Start?of?TransactionManager?-->
          ????
          <bean?id="TransactionManager"
          ????????class
          ="org.springframework.orm.hibernate3.HibernateTransactionManager"
          ????????abstract
          ="false"?singleton="true"?lazy-init="default"
          ????????autowire
          ="default"?dependency-check="default">
          ????????
          <property?name="sessionFactory">
          ????????????
          <ref?bean="SessionFactory"?/>
          ????????
          </property>
          ????
          </bean>
          ????
          <!--End?of?TransactionManager?-->
          ????
          <!--?基本的DAO?BEGIN-->
          ????
          <bean?id="BaseTransactionProxy"
          ????????class
          ="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"
          ????????abstract
          ="true">
          ????????
          <property?name="transactionManager">
          ????????????
          <ref?bean="TransactionManager"?/>
          ????????
          </property>
          ????????
          <property?name="proxyTargetClass">
          ????????????
          <value>true</value>
          ????????
          </property>
          ????????
          <property?name="transactionAttributes">
          ????????????
          <props>
          ????????????????
          <prop?key="save*">PROPAGATION_REQUIRED</prop>
          ????????????????
          <prop?key="remove*">PROPAGATION_REQUIRED</prop>
          ????????????????
          <prop?key="*">PROPAGATION_REQUIRED</prop>
          ????????????
          </props>
          ????????
          </property>
          ????
          </bean>
          ????
          <!--?基本的DAO?END?-->

          ????
          <!--Start?of?userDAO?-->
          ????
          <bean?id="userDAO"
          ????????class
          ="com.antbee.sysmanage.login.dao.hibernate.UserDAOImpl">
          ????????
          <property?name="sessionFactory">
          ????????????
          <ref?local="SessionFactory"?/>
          ????????
          </property>
          ????
          </bean>
          ????
          <bean?id="userDAOProxy"?parent="BaseTransactionProxy"
          ????????class
          ="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
          ????????
          <property?name="target">
          ????????????
          <ref?local="userDAO"?/>
          ????????
          </property>
          ????
          </bean>
          ????
          <!--End?of?userDAO?-->
          ????????????????

          ????
          <!--Start?of?UserAction?-->
          ????
          <bean?name="/User"
          ????????class
          ="com.antbee.sysmanage.login.action.UserAction"?singleton="false">
          ????????
          <property?name="userDAO">
          ????????????
          <ref?bean="userDAOProxy"?/>
          ????????
          </property>
          ????
          </bean>
          ????
          <!--End?of?AddUserAction?-->

          </beans>


          其它的POJO使用myeclise插件就會自動生成。

          呵呵是不是開發很簡單呢,能夠節省你多少的工作量呀,如果有興趣的同志可以共同探討。

          posted on 2006-09-29 11:43 @家軍 閱讀(1903) 評論(3)  編輯  收藏 所屬分類: J2EE技術類

          評論

          # re: 三個JAVA文件完成你的MVC應用 2006-09-29 12:18 竹十一

          !好題目!
          還以為你用3個文件自己實現了MVC呢,失望!  回復  更多評論   

          # re: 三個JAVA文件完成你的MVC應用 2006-09-29 14:11 kangxm

          樓主!好牛的題目!可惜你的文章應該放到新手區吧!  回復  更多評論   

          # re: 三個JAVA文件完成你的MVC應用 2006-09-30 11:15 冰川

          呵呵,能總結也是不錯滴。  回復  更多評論   

          主站蜘蛛池模板: 富顺县| 张家港市| 陕西省| 封开县| 密山市| 莱州市| 嘉义县| 襄汾县| 东乡族自治县| 新营市| 房产| 聂拉木县| 万源市| 上高县| 海兴县| 墨玉县| 江永县| 右玉县| 古蔺县| 苏尼特右旗| 定西市| 翁源县| 孟连| 桦南县| 武宣县| 剑川县| 青岛市| 西峡县| 旺苍县| 金溪县| 太仓市| 东平县| 宁国市| 海盐县| 高安市| 嵊州市| 八宿县| 武鸣县| 东明县| 普兰店市| 荃湾区|