浏览 5872 次
锁定老帖子 主题:三个JAVA文件完成你的MVC应用
该帖已经被评为隐藏帖
|
|
---|---|
作者 | 正文 |
发表时间:2006-09-25
非常报歉,因为老板在,所以前几天落下了这个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插件就会自动生成。 呵呵是不是开发很简单呢,能够节省你多少的工作量呀,如果有兴趣的同志可以共同探讨。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间: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应用的关键部分都写出来了,也用不着完整的例子了 |
|
返回顶楼 | |