浏览 4373 次
|
锁定老贴子 主题:三个JAVA文件完成你的MVC应用
该帖已经被评为隐藏帖
|
|
|---|---|
| 作者 | 正文 |
|
最后更新时间:2006-09-29
只需要你三个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插件就会自动生成。 呵呵是不是开发很简单呢,能够节省你多少的工作量呀,如果有兴趣的同志可以共同探讨。 声明:JavaEye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
|
|
| 返回顶楼 | |
|
最后更新时间:2006-09-25
例子! 例子!!
|
|
| 返回顶楼 | |
|
最后更新时间:2006-09-25
例子呢?
|
|
| 返回顶楼 | |
|
最后更新时间:2006-09-27
没东西啊 |
|
| 返回顶楼 | |
|
最后更新时间:2006-09-29
这是在干嘛?普及Spring?
|
|
| 返回顶楼 | |
|
最后更新时间:2006-09-29
少了service层,其他的没看出来哪有什么简单之处
建议改一下帖子的标题 |
|
| 返回顶楼 | |
|
最后更新时间:2006-09-29
楼主真的很强。。。看标题还以为是自己写了个超简单的框架呢。。。
哪怕你把这里的内容拷贝过来也好得多啊 http://csis.pace.edu/~bergin/mvc/mvcgui.html |
|
| 返回顶楼 | |
|
最后更新时间:2006-10-09
呵呵,居然被评为垃圾贴,心里倒是不明白了,这个我没有照抄谁家的代码,只是在不断实践中去掉了反复COPY代码而且对实际编码又哆嗦的service层。也就是以前要用的至少5个JAVA文件,还有比较哆嗦的配置文件等。三个JAVA文件好象工作量会减少很多吧。
为什么又有人反对呢?想不明白。 N,可能是标题让人反感吧。 我现在开发就是使用这个结构组织自己的程序的,开发量比较小,正在研究使用ANT来生成尤如rails一样的东东呢。希望ANT出一个scaffold,使用 antbee script/generate controller LoginAction Login LoginOut。 |
|
| 返回顶楼 | |
|
最后更新时间:2006-10-10
恩,这个帖子,请等待申诉
|
|
| 返回顶楼 | |
|
最后更新时间:2006-12-02
不错的文章,很适合我这样的初学者,目前在写个bookstore的例子,正在做事务的配置呢,作者的文章对我很有帮助,谢谢。
:D 其实作者的这三个文件两个配置已经把struts+spring+hibernate应用的关键部分都写出来了,也用不着完整的例子了 |
|
| 返回顶楼 | |










