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 @家军 阅读(1879) 评论(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 冰川

呵呵,能总结也是不错滴。  回复  更多评论   


只有注册用户登录后才能发表评论。


网站导航: