`

三个JAVA文件完成你的MVC应用

 
阅读更多
只需要你三个JAVA类和两个配置文件,就可以完成你的MVC应用,我们就做一个示例吧。
非常报歉,因为老板在,所以前几天落下了这个BLOG,对不起了。

本文以一个登录为例。

第一个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插件就会自动生成。

呵呵是不是开发很简单呢,能够节省你多少的工作量呀,如果有兴趣的同志可以共同探讨。
分享到:
评论
9 楼 jzx19770812 2006-12-02  
不错的文章,很适合我这样的初学者,目前在写个bookstore的例子,正在做事务的配置呢,作者的文章对我很有帮助,谢谢。
:D

其实作者的这三个文件两个配置已经把struts+spring+hibernate应用的关键部分都写出来了,也用不着完整的例子了
8 楼 ouspec 2006-10-10  
恩,这个帖子,请等待申诉
7 楼 heweiya 2006-10-09  
呵呵,居然被评为垃圾贴,心里倒是不明白了,这个我没有照抄谁家的代码,只是在不断实践中去掉了反复COPY代码而且对实际编码又哆嗦的service层。也就是以前要用的至少5个JAVA文件,还有比较哆嗦的配置文件等。三个JAVA文件好象工作量会减少很多吧。
为什么又有人反对呢?想不明白。
N,可能是标题让人反感吧。
我现在开发就是使用这个结构组织自己的程序的,开发量比较小,正在研究使用ANT来生成尤如rails一样的东东呢。希望ANT出一个scaffold,使用 antbee script/generate controller LoginAction Login LoginOut。
6 楼 jigsaw 2006-09-29  
楼主真的很强。。。看标题还以为是自己写了个超简单的框架呢。。。

哪怕你把这里的内容拷贝过来也好得多啊
http://csis.pace.edu/~bergin/mvc/mvcgui.html
5 楼 java虫 2006-09-29  
少了service层,其他的没看出来哪有什么简单之处

建议改一下帖子的标题
4 楼 BirdGu 2006-09-29  
这是在干嘛?普及Spring?
3 楼 jichongchong 2006-09-27  

没东西啊
2 楼 ouspec 2006-09-25  
例子呢?
1 楼 毛冬 2006-09-25  
例子! 例子!!

相关推荐

    很好的JAVA的MVC框架应用实例

    Java MVC框架是软件开发中广泛使用的模式,它将应用程序分为三个主要部分:模型(Model)、视图(View)和控制器(Controller)。这个标题所指的“很好的JAVA的MVC框架应用实例”很可能是提供了一个使用Java实现MVC...

    利用Java做的基本MVC框架

    在IT行业中,MVC(Model-View-Controller)框架是一种广泛应用的设计模式,它将应用程序的逻辑分为三个主要组件,以实现更好的分离关注点和代码组织。"利用Java做的基本MVC框架"指的是使用Java编程语言实现的一个MVC...

    利用MVC模式开发Java应用程序

    ### 利用MVC模式开发Java应用程序 #### 一、MVC模式简介 MVC(Model-View-Controller)模式是一种广泛应用于软件工程中的架构模式,尤其在Web应用开发领域非常常见。它将应用程序分为三个核心组件:模型(Model)、...

    Java版 坦克大战 MVC游戏框架

    首先,MVC模式是软件工程中常用的一种设计模式,它将应用程序分为三个主要部分:模型(Model)、视图(View)和控制器(Controller)。在坦克大战游戏中,模型负责处理游戏的业务逻辑,如坦克移动、射击、碰撞检测等...

    Java EE企业级应用开发教程 Spring+Spring MVC+MyBatis 第2版 Jav 第2版源码

    《Java EE企业级应用开发教程》第二版,结合Spring、Spring MVC和MyBatis三大框架,为读者提供了全面深入的Java后端开发学习路径。这本书的源码资源旨在帮助开发者通过实践来理解并掌握企业级应用开发的核心技术。 ...

    java MVC项目是实战

    1. **MVC模式**:MVC是一种软件设计模式,它将应用程序分为三个核心部分:模型(Model)负责数据处理和业务逻辑,视图(View)负责显示用户界面,控制器(Controller)处理用户的输入并调用模型和视图。 2. **模型...

    Java的MVC模型案例

    MVC将应用程序分为三个主要部分:模型(Model)、视图(View)和控制器(Controller),使得各部分职责明确,易于维护。在这个基于Java的MVC案例中,我们将深入探讨这些组件以及它们如何协同工作。 1. **模型...

    基于MVC框架的java web开发

    在Java Web开发领域,Model-View-Controller(MVC)模式是一种广泛采用的设计模式,它将应用程序分为三个主要组件:模型(Model)、视图(View)和控制器(Controller),以实现业务逻辑、数据处理和用户界面的分离...

    myweb.rar_java MVC_mvc_mvc.zip_mvc选课_选课系统 java

    MVC三层框架在这里指的是系统的结构分为三个主要部分:模型(Model)负责处理业务逻辑和数据,视图(View)负责显示用户界面,而控制器(Controller)则协调模型和视图之间的交互。学生选课系统能够正常运行,意味着它已经...

    java 简易计算器 mvc 设计模式

    在软件开发中,MVC(Model-View-Controller)设计模式是一种常用架构模式,它将应用程序分为三个主要部分:模型(Model)、视图(View)和控制器(Controller)。这个模式有助于提高代码的可重用性和可维护性。本...

    java 三层架构==MVCLogin

    在这个架构中,系统被划分为三个主要部分:表现层(View)、业务逻辑层(Service)和数据访问层(DAO)。MVC(Model-View-Controller)模式是其中表现层的一种实现方式,它将应用的用户界面、数据模型和控制逻辑分离...

    JAVA MVC +实例

    Java MVC(Model-View-Controller)框架是一种广泛应用于Web开发的设计模式,它将应用程序分为三个主要部分:模型(Model)、视图(View)和控制器(Controller),以实现业务逻辑与用户界面的分离,提高代码的可...

    mvc.rar_java MVC 简单_mvc 数据库

    1. **MVC模式**:这是一种软件设计模式,将应用程序分为三个主要部分,即模型、视图和控制器,以提高代码的可维护性和解耦性。 2. **Java MVC框架**:如Spring MVC,它简化了构建Web应用的过程,提供了强大的依赖...

    pureMVC java版框架搭建例子

    纯MVC(PureMVC)是一个轻量级的框架,设计用于提高开发效率,它将应用程序分为三个核心组件:模型(Model)、视图(View)和控制器(Controller),以实现松耦合和模块化。在Java环境下,PureMVC提供了一种规范化的...

    比较实用的MVC框架类-JAVA

    2. **Spring**:Spring是一个全面的Java应用框架,也是开发MVC应用程序的首选。它提供了依赖注入、AOP(面向切面编程)、事务管理等功能,并且能够与JPA集成,提供ORM(对象关系映射)支持。 3. **FreeMarker**:这...

    java程序,MVC自定义框架

    Java程序中的MVC(Model-View-Controller)框架是一种广泛应用于Web开发的设计模式,它将应用程序的业务逻辑、用户界面和数据访问分离,使得各部分的职责更加清晰,便于维护和扩展。本自定义框架类似于知名的Struts...

    MVC 多文件上传

    MVC是一种广泛应用于Web开发的设计模式,它将应用程序分为三个主要部分:模型(Model)、视图(View)和控制器(Controller)。这种结构有助于保持代码的清晰性和可维护性。 首先,让我们理解多文件上传的概念。多...

    mvc Java 三层结构编程

    在这个"mvc Java 三层结构编程"实例中,我们将会深入探讨如何利用Java实现一个包含登录功能的MVC应用。 **模型(Model)层**是应用程序的核心部分,它负责处理业务逻辑和数据操作。在这个例子中,模型层可能包括...

    《Java EE企业级应用开发教程(Spring+Spring MVC+MyBatis)》配套资源.zip

    《Java EE企业级应用开发教程(Spring+Spring MVC+MyBatis)》是一本深入讲解如何使用Java EE技术栈进行企业级应用开发的教材。它主要聚焦于Spring框架、Spring MVC以及MyBatis这三大核心组件,它们是现代Java Web...

    java mvc代码

    在这个"java mvc代码"示例中,我们可能看到的是一个简单的Java Web项目,可能包含了模型(Model)、视图(View)和控制器(Controller)三个主要组成部分。 **模型(Model)**:这是应用程序的核心,负责处理业务...

Global site tag (gtag.js) - Google Analytics