JSON插件提供了一种名为json的ResultType,一旦为某个Action指定了一个类型为json的Result,则该Result无需映射到任何视图资源。将下载到的jsonplugin-0.7.jar文件复制到Web应用的WEB-INF路径下,即可完成JSON插件的安装。
早在我刚学Struts2之初的时候,就想写一篇文章来阐述Struts2如何返回JSON数据的原理和具体应用了,但苦于一直忙于工作难以抽身,渐渐的也淡忘了此事。直到前两天有同事在工作中遇到这个问题,来找我询问,我又细细地给他讲了一遍之后,才觉得无论如何要抽一个小时的时间来写这篇文章,从头到尾将Struts2与JSON的关系说清楚。
Struts2是在WebWork2基础发展而来的。和struts1一样, Struts2也属于MVC框架。不过有一点大家需要注意的是:尽管Struts2和struts1在名字上的差别不是很大,但Struts2和struts1在代码编写风格上几乎是不一样的。那么既然有了struts1,为何还要推出struts2。
本文由浅入深介绍Struts2的文件上传及下载.Struts2上传要用到commons-fileupload包和commons-io包,注意导入。
从struts2.1开始,struts2不再推荐使用Codebehind作为零配置插件,而是改为使用Convention插件来支持零配置,和Codebehind相比,Convention插件更彻底,该插件完全抛弃配置信息,不仅不需要是使用struts.xml文件进行配置,甚至不需要使用Annotation进行配置,而是由struts2根据约定自动配置。 如何使用Convention
Struts提供了一个过滤器调度器ActionServlet作为控制器,程序员不必自行用servlet编写一个。<br> Struts使用了一个基于XML的配置文件来匹配URI和动作。因为XML文档是文本文件,所以对应用程序的许多改动都用不着重新编译有关代码即可生效。 对动作类进行实例化和提取用户输入去填充有关动作属性的工作都由Struts负责。而不用servlet一个个去取前台参数。<br> Struts可以在后台对用户输入做一些基本的合法性验证,并在遇到不合法的输入时自动地把用户重定向到相关的输入表单。
Extjs2.2登陆(struts2+json)方法
Struts2 入门
Struts的第一个版本是2001年5月分发布的,它的最初设想是通过结合JSP和Servlet,使Web应用的视图和业务/应用逻辑得以清晰地分离开来。自从第一版发布以来,Struts实际上已成为业界公认的Web应用标准。
Struts2标签
Struts 2里面开始使用convention-plugin 实现零配置,将所有的配置文件删除,用约定大于配置的方法来实现URL的跳转。Struts规定了一套默认的约定,只要遵守这些约定,就可以实现无需配置文件的URL跳转。
OGNL就是对象图像导航语言( Object Graphic Navigation Language )英文全程的缩写,是一个开源的项目,struts2选择此表达式为默认的表达式语言。 OGNL表达式也其他的表达式相比有自己的特性
拦截器(Interceptor)是动态拦截Action调用的对象,类似于Servlet中的过滤器。在执行Action的业务逻辑处理方法(execute())之前,Struts2会首先执行在struts.xml中引用的拦截器。<br> 拦截器是struts2的一个重要特性。Struts2框架的大多数核心功能都是通过拦截器来实现的,像避免表单重复提交、类型转换、对象组装、验证、文件上传等,都是在拦截器的帮助下实现的。拦截器之所以称为“拦截器”,是因为它可以在Action执行之前和执行之后拦截调用。
Struts作为MVC 2的Web框架,自推出以来不断受到开发者的追捧,得到用广泛的应用。作为最成功的Web框架,Struts自然拥有众多的优点: MVC 2模型的使用 功能齐全的标志库(Tag Library) 开放源代码
MVC是Model-View-Controller的简称,即模型-视图-控制器。MVC是Xerox PARC在20世纪80年代为编程语言Smalltalk-80发明的一种软件设计模式,至今已被广泛使用。 <br> MVC把应用程序分成3个核心模块:模型(Model)、视图(View)和控制器(Controller),它们分别担当不同的任务。如下图所示显示了这几个模块各自的功能及它们的相互关系。
下载完成struts2.1.8 完成jdk + eclipse + tomcat环境配置 下载struts2 学习资料
第五章类型转换和OGNL Chapter回顾与作业点评栈的特点有哪些?顺序栈和链栈有什么不同?Action和ValueStack的关系是什么?ValueStack类push()方法的作用是什么?Chapter预习检查为什么要进行类型转换?OGNL和EL有什么异同?OGNL中访问根元素和非根元素有什么区别?
Struts2应用第四章回顾与作业点评Struts2执行流程是什么?Result结果类型有哪些,存在什么区别?Struts2中自定义拦截器有哪些方式?
Struts2深入第三章回顾与作业点评Struts2中开发一个Action有几种方法?package元素与Java中的包有什么异同之处?Result结果类型有哪些?有什么区别?预习检查Struts2中为什么需要拦截器?拦截器和拦截器栈有什么异同?自定义拦截器有哪些方式?
Struts2配置详解第二章回顾与作业点评使用Struts2开发程序的基本步骤是什么?Struts2中如何获取Servlet的session对象?Struts2表单标签和普通HTML表单标签有什么不同之处?预习检查Struts2Result元素的作用是什么?Struts2中开发一个Action有几种方法?Struts2中如何解决中文乱码问题?