学习了一天的struts2架构了,现在简单的总结一下:
Struts 2是Struts的下一代产品,是在 struts 1和WebWork的技术基础上进行了合并的全新的Struts 2框架。其全新的Struts 2的体系结构与Struts 1的体系结构差别巨大。Struts 2以WebWork为核心,采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制器能够与ServletAPI完全脱离开,所以Struts 2可以理解为WebWork的更新产品,所以struts2的一个重要的优点就是可以将软件层次分开。
Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。
一般要做一个网站,都要遵循MVC的框架,MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用于组织代码用一种业务逻辑和数据显示分离的方法,这个方法的假设前提是如果业务逻辑被聚集到一个部件里面,而且界面和用户围绕数据的交互能被改进和个性化定制而不需要重新编写业务逻辑MVC被独特的发展起来用于映射传统的输入、处理和输出功能在一个逻辑的图形化用户界面的结构。
要分析一个网站,按照我们人类的思维,都会从可视化的界面分析开始,现在我们根据V-C-M的顺序来研究一下以上两节中做的Demo。
首先是View层,主要有两个界面,一个是login.jsp,另一个是register.jsp,两个文件里边分别有一个表单,每个表单都有一个action行为,如action="loginAction",当点击summit按钮的时候会触发,到底会触发哪个类的哪个函数呢,这个在struts.xml的文件里会有映射的类和方法,比如:
<action name="loginAction" class="com.dianzi.action.login.LoginAction" method="login"> <result name="success">/jsp/login/success.jsp</result> <result name="input">/jsp/login/login.jsp</result> <result name="error">/jsp/error.jsp</result> </action>
就是所映射的类和方法,表明当点击summit时,会触发loginAction行为,在映射文件中又将loginAction行为映射给了com.dianzi.action.login.LoginAction的类的login方法。
然后就是Controller层了,在View层中点击事件,通过映射文件将其行为传给Controller层,在此层中会做一些逻辑处理,如:
public String login() { User user = new User(username, password); int state = userDao.login(user); System.out.println("state=" + state); if (state == -1) { this.addFieldError("username", "用户名不正确,请先注册!"); return INPUT; } else if (state == -2) { this.addFieldError("password", "密码不正确,请重新输入密码!"); return INPUT; } else if (state > 0) { System.out.println("[测试]登录成功!用户ID=" + state); this.setId(state); return SUCCESS; } else { this.addFieldError("username", "登录失败,请与管理员联系!"); return INPUT; } }
此逻辑处理就是用输入的用户名和密码创建一个User对象,生成User对象后就会和我们Model层的数据结构映射起来。
public int login(User user) { // int state = 0 ; //初始化状态变量 Session session = util.getSession(); try { Query queryName = session .createQuery("from User u where u.name = ?"); queryName.setString(0, user.getName()); List listName = queryName.list(); if (null == listName ||listName.isEmpty()) { return -1; // 用户名不存在 } Query queryNamePswd = session .createQuery("from User u where u.name = ? and u.password = ?"); queryNamePswd.setString(0, user.getName()); queryNamePswd.setString(1, user.getPassword()); List listNamePswd = queryNamePswd.list(); if (null == listNamePswd ||listNamePswd.isEmpty()) { return -2; // 密码不正确 } Iterator it = listNamePswd.iterator(); User userquery = (User) it.next(); return userquery.getId(); // 验证成功,取ID值 } catch (Exception e) { System.out.println("UserDaoImpl.isExist()方法发生异常:"); e.printStackTrace(); return 0; // 异常时返回0 } finally { util.closeSession(session); } }
User对象装进model层后,会进数据库去查看数据库中是否有此用户名和帐号,如果有返回用户id,如果没有返回其他值。而对象与数据库之间的映射又是通过一些映射文件来完成的,如User.hbm.xml。
<hibernate-mapping package="com.dianzi.model"> <class name="User" table="T_USER_TEST"> <id name="id" column="id" type="java.lang.Integer"> <generator class="native"></generator> </id> <property name="name" column="name" type="java.lang.String" length="100"> </property> <property name="password" column="password" type="java.lang.String" length="100"> </property> <property name="roleId" column="roleId" type="java.lang.Integer"> </property> </class> </hibernate-mapping>
经过mapping后就可以那对象的属性和数据库的字段进行匹配,根据匹配情况会返回不同的值,返回的值被Controller层接受后做一些处理,比如Controller层会根据登陆返回的值,login函数会返回不同的值。
Controller返回不同的值后,映射文件会根据返回的值的不同决定View层应该show出的界面。
所以总的过程应该时View-Mapping-Contoller—Mapping-Mapping-Model-Controller-Mapping-View顺序。
最后将我做的Demo上传如附件。
相关推荐
Spring和Struts框架学习总结
个人struts2框架学习后的梳理和总结,内容丰富,从配置文件到action类、result、ognl、类型转换器、国际化、拦截器、表单验证等等内容,还推荐了很多博客链接,有了它自学Struts2框架毫无压力!
一个运用了struts框架的学生请假系统 myeclipse开发 有完整数据库 数据库为sqlserver2008
struts2框架的输入校验与校验框架,这都是上课的总结笔记
Struts 是一种非常优秀的基于...本文在总结了Struts框架技术及其工作原理的基础上,结合“面向铸造行业的网络化制造ASP平台开发”项目,提出了在线租用 模块的设计思路,这为今后更好的应用采用Struts框架提供了参考。
因为最近攻防演练,对公司的资产进行梳理,发现部分应用还使用的struts1框架,所以赶快收集整理了相关的漏洞以及相关的整改方案。提供给大家。
Struts 2及AJAX框架的详细介绍 值得一看
关于struts2框架的学习总结,非常实用知识对关键部分通过自己的学习总结出来非常具有实际参考价值
a) Struts2是以web work优秀的设计思想为核心,吸收了struts1的部分优点,建立了一个基于webwork和struts1的MVC框架。 二、 优点: a) 结构清晰,使开发者只关注业务逻辑实现即可。 b) 提供了丰富的标签,大大提高了...
Strutst2框架的详细总结,里面有每个框架的具体知识和注意事项
struts2学习笔记总结
如何搭建struts框架,最近突然想把大家框架的一些知识总结下,并做下记录!之后会陆续发布如何搭建ssh。ssi等框架的内容。今天先说下如何大家struts框架
ssh jar包框架整合项目struts2、spring、hibernate,整合简单的jar包总结。 ssh jar包框架整合项目struts2、spring、hibernate,整合简单的jar包总结。
框架搭建总结内容,对于j2ee开发的同学们来说,是一个很好的学习和提高的机会。
struts 简单总结的附件 Struts2是一个基于MVC设计模式的Web应用框架,它本质上相当于一个servlet,在MVC设计模式中,Struts2作为控制器(Controller)来建立模型与视图的数据交互。Struts 2是Struts的下一代产品,是在...
Struts是一个MVC框架,通过配置文件很好地实现了模型与视图的分离。 基于Struts开发的应用由3类组件构成:控制器组件、模型组件(Java Bean)和视图组件(ActionForm)。 控制器组件包括ActionServlet,是Struts的...
struts2框架的学习总结,总共五天!
在总结传统B/S架构的科技管理系统存在的许多弊端的基础上,探讨Struts框架的体系结构及实现MVC设计模式的机制,详细分析科技管理系统的主要功能,并利用Struts框架和Java语言对该系统进行设计和开发,为使用Struts...
Struts框架的应用,包括了用户管理,行程管理,文件的上传与下载等功能
培训时所讲的内容,总结了Struts_2,hibernate,spring,Springmvc,Mybatis框架,文档里有相对应的代码,很详细,整洁