struts2
文章平均质量分 83
jdluojing
这个作者很懒,什么都没留下…
展开
-
Struts2学习笔记(十七) 文件下载(File Download)
前面我们刚刚学完文件上传,那么我们就接着来看和文件上传相对应的文件下载吧。对于文件上传而言,文件下载实现起来要简单的多。通常我们可以直接将一个超链接的地址指向我们想要给用户下载的资源即可。但是如果这些资源是浏览器能够解析的文件类型,比如html文件等,那么浏览器将不会提示用户下载这些文件了,而是会直接在浏览器中打开。这样做还有一个问题,那就是我们的资源文件的地址就直接暴露给用户了,它可以在其他的页原创 2012-05-27 01:42:10 · 2311 阅读 · 0 评论 -
Struts2学习笔记(十五) 国际化(Internationalization)
概述国际化(Internationalization),通途的讲,就是让软件实现对多种语言的支持。可以通过简单的设置就可以从一种语言切换到另一种语言。用的最多的地方就是在应用程序的界面表示上。我们经常接触到一些软件,他们支持多种语言,并且可以随用户的切换。比如我们常用的eclipse就是。通常在实现多语言支持时尽量保持亮点:(1) 不给软件开发带来过多的额外负担。(2) 实现语原创 2012-05-24 21:28:43 · 2149 阅读 · 0 评论 -
Struts2学习笔记(十三) 输入校验(上)
验证器概述一个健壮的Web应用程序必须确保用户输入是合法的。比如在注册用户的时候,将用处注册信息保存到数据库之前一般我们会判断用户输入的密码长度是否过短,或者用户的email地址格式是否正确。Strut2提供了一些内建的输入验证程序,通过使用他们,不需要变成即可实现对用户输入的校验,我们只需要在xml配置文件中做出声明就可以了,声明的内容包括,那么字段需要进行验证,在验证失败时应该把什么样的出原创 2012-05-22 23:00:50 · 1476 阅读 · 0 评论 -
Struts2学习笔记(十四) 输入校验(下)
自定义验证器我们已经看到了,只要实现了Validator接口的类都可以作为验证器。我们看一下Validator接口的源码:public interface Validator { void setDefaultMessage(String message);String getDefaultMessage();String getMessage(Object object);原创 2012-05-23 01:54:50 · 1943 阅读 · 0 评论 -
Struts2学习笔记(十二) 类型转换(Type Conversion)(下)
null引用处理我们知道,我们在Action中定义属性时并没有对他们进行初始化,那么也就是Struts2在对请求参数进行类型转换时,我们的Action属性可能还是null。那么框架会自动将这些null的属性实例化一个默认的对象(在学习Parameters拦截器时已经看过源代码了):(1) 如果我们的属性声明为List(Collection)类型,那么默认会给他实例化一个ArrayLis原创 2012-05-22 00:09:14 · 6611 阅读 · 0 评论 -
Struts2学习笔记(十一) 类型转换(Type Conversion)(上)
类型转换概述把请求参数映射到动作属性的工作是由Parameters拦截器来负责,它是defaultStack拦截器栈中的医院。我们知道,所有的请求参数都是String类型,但是动作的属性却并不都是String类型,那么肯定需要通过某种方式来实现String类型和其他数据类型之间的转换。前面我刚刚学习了OGNL,我们知道通过OGNL能够在拦截器和视图中操作我们的Action成员属性,我们也知道将原创 2012-05-21 23:59:49 · 8673 阅读 · 0 评论 -
Struts2学习笔记(十) OGNL
OGNL介绍OGNL是Object-Graph Navigation Language的缩写,它是一种功能强大的表达式语言(Expression Language,简称为EL),通过它简单一致的表达式语法,可以存取对象的任意属性,调用对象的方法,遍历整个对象的结构图,实现字段类型转化等功能。它使用相同的表达式去存取对象的属性。OGNL三要素(1).expression 求值表达式——首原创 2012-05-20 23:43:16 · 3910 阅读 · 0 评论 -
Struts2学习笔记(八) 拦截器(Interceptor)(上)
什么是拦截器(Interceptor)拦截器是struts2框架最重要的特性之一。它可以让你在Action 方法执行前后(Result执行之后)进行一些功能处理。在前面学习Action和学习Result的时候我们就已经开始学习拦截器了,因此现在我们对如何使用它已经不陌生了。在学习Spring的时候我们会接触到一种设计思想,叫做面向切面编程(AOP)。也就是说我们将一些通用的功能组件抽取出来原创 2012-05-19 20:52:58 · 7856 阅读 · 0 评论 -
Struts2学习笔记(七) 结果(Result)(下)
异常映射我们知道在action的execute方法签名中定义了可以抛出任何类型的异常。至于这个异常抛给了谁,那当然是struts2框架了,如果我们没有设置响应的策略,那么struts2也不会对异常进行处理,又直接抛给web容器了。如果我们需要Aaction在发生异常时跳转到指定的提示页面,那么我们当然可以在action中使用try..catch语句来返回不同的结果,但是Struts2为我们原创 2012-05-19 16:42:30 · 2574 阅读 · 0 评论 -
Struts2学习笔记(九) 拦截器(Interceptor)(下)
拦截器的查找顺序如果我们在多个地方配置了拦截器,那么框架会按什么样的顺序进行查找呢:(1) 首先查找当前Action是否声明了拦截器,如果有则使用这个拦截器,不再继续寻找,如果没有,则执行下一步(2) 其次,查找当前Action所在的包中是否声明了默认的拦截器引用,即看元素下有没有元素,如果有就使用它,不再继续寻找。如果没有,则执行下一步(3) 最后,递归寻找Actio原创 2012-05-20 01:32:29 · 1775 阅读 · 0 评论 -
Struts2学习笔记(六) 结果(Result)(上)
大多数情况下我们的用例可以被分成两个部分。一是我们需要改变和查询应用程序的状态,而是需要呈现和更新应用程序的视图。在Struts2中Action管理应用程序的状态,Result Type管理视图。Rsult是什么简单的说Result就是Action方法执行完毕之后返回的一串字符串,他指示出Action执行完之后的下一个页面在哪里,具体页面的位置是我们在struts.xml中配置的,就是子元原创 2012-05-19 14:49:06 · 3247 阅读 · 0 评论 -
Struts2学习笔记(四) Action(中)
前面说道实现Action一般选择继承ActionSupport的方式,因为它提供了一些额外的功能,比如基本的数据验证和访问本地信息。基本数据验证由于ActionSupport类实现了Validateable接口,那么在该动作被触发的时候会在执行动作方法之前先执行validate方法,如果验证没有通过,那么就会返回信息输入结果页面。因此我们只需要在Action中重写validate方法就可以原创 2012-05-17 22:10:45 · 3372 阅读 · 0 评论 -
Struts2学习笔记(五) Action(下)
调用非execute方法在前面有关Action的学习中,我们的Action中真正实现业务逻辑的只有execute方法,如果我们每个Action中都只有这么一个方法的话,那么当我们程序中需要的功能很多时,我们就不得不手动编写很多的Action类了,这显然是不合理的。前面我也说道了我们的Action类并不一定非得继承某个类或者实现某个接口,我们可以使用POJO来作为我们的Action,并且我们的A原创 2012-05-18 19:30:58 · 2774 阅读 · 0 评论 -
struts2学习笔记(三) Action(上)
Action是什么应用程序可以完成的每一个操作都可以称之为动作。例如,显示一个登录表单是一个动作,将用户信息保存起来也是一个动作。动作类其实就是普通的java类,他们可以有属性和方法,但是需要遵循一些规则:(1)每个属性必须有一个get和一个set方法,属性命名遵循JavaBean命名规则。(2)动作类必须有一个不带任何参数的构造器。如果Action中没有定义构造器,那么编译器会自原创 2012-05-17 01:25:11 · 2532 阅读 · 2 评论 -
struts2学习笔记(一) MVC模式
在学习struts2之前首先了解一下MVC模式。 MVC是一个设计模式,它强制性的使应用程序的输入、处理和输出分开。使用MVC应用程序被分成三个核心部件:模型、视图、控制器。它们各自处理自己的任务。分层概念模型(Model)用于封装与应用程序的业务逻辑相关的数据以及对数据的处理方法。“模型”有对数据直接访问的权力,例如对数据库的访问。“模型”不依赖“视图”和“控制器”,也就是说,模型不原创 2012-05-16 13:43:26 · 1378 阅读 · 0 评论 -
struts2学习笔记(二) 初识Struts2
使用Struts2的好处(1) 第一个好处就是我们不必非得编写一个控制器不可,这使得我们可以把注意力集中在编写各种动作类里的业务逻辑方面。 (2) Struts2使用了一个基于XML的配置文件来匹配URI和动作。因为xml是文本文件,因此对应用程序的许多修改都用不着在重新编译有关代码。(3) 对动作类进行实例化和提取用户输入去填充相关动作属性的工作都有Struts2来原创 2012-05-16 19:26:13 · 1686 阅读 · 2 评论 -
Struts2学习笔记(十九) 验证码
概述验证码也是我们在web应用中经常要用到的功能。基本思路就是,我们在服务端动态的生一成张图片,然后将它输出到客户端。图片上包含一些字符信息,我们将这些字符信息事先保存在session中,那么客户端在看到图片之后,将图片上的字符输出到表单中,然后将表单提交。我们接收到表单数据之后,对表单中提交的验证码与session中保存的验证码进行比对,如果相同,那么验证通过。否则,验证失败!采取一些处理。原创 2012-05-30 00:32:26 · 2370 阅读 · 0 评论 -
Struts2学习笔记(十八) 防止表单重复提交
概述有些时候,我们在想某个网页提交了信息之后,由于某些原因,我们会重复点击提交,或者刷新页面,或者是在提交页面呈现之后点击后退按钮,从而导致这些表单数据被重复提交。在大多数情况下我们是不希望这种情况发生的,我们不可能强迫使用者不这么做,那么我们就只能自己想办法来尽量避免这些情况了。下面我们来看一个例子:public class HelloServlet extends HttpSe原创 2012-05-29 01:21:19 · 6068 阅读 · 0 评论 -
Struts2学习笔记(十六) 文件上传(File Upload)
使用jsp/Servlet实现文件上传在我们的web应用中,文件上传是一项非常常见的功能。以前我学习php的时候也用php写过文件上传,不过php中实现起来比较方便,只需要从全局变量$_FILES中获取到上传文件的临时存放路径等信息,再把它拷贝到目标地址并重命名就可以了。在Java中要实现文件上传要稍微复杂一点。我们需要通过request的getInputStream方法来获取到相关的输入流,原创 2012-05-26 18:18:01 · 3554 阅读 · 0 评论