stream结果类型
>>将文件数据(通过InputStream获取)直接写入响应流
>>相关参数的配置
————————————————————————————
contentType 设置发送到浏览器的MIME类型
contentLength 设置文件的大小
contentDisposition 设置响应的HTTP头信息中的Content-Disposition参数值
...
一、Grid Guide
特点:快速生成栅格
二、Foundation
特点:一款类似Bootstrap的框架,有为栅格、排版、按钮和其它动态元素的预定义CSS类。但是它的设计更加简单,更加容易去自定义布局。
三、CodePen
特点:实现新创意代码,它启动迅速,十分可靠,易于启动且当你改动代码时会自动更新。还能支持几乎所有的库,可以添加外部资源。
四、Unheap
特点:最新的jQuery插件...
Commons-FileUpload组件
>>Commons是Apache开放源代码组织的一个Java子项目,其中的FileUpload是用来处理http文件上传的子项目。
>>Commons-FileUpload组件特点
>>使用简单:可以方便的嵌入到JSP文件中,编写少量代码即可完成文件的上传功能;
>>能够全程控制上传内容;
>>能够对上传文件的大小、类型进行控制;
环境要求
...
实现Interceptor接口
>>void init():初始化拦截器所需资源
>>void destroy():释放在init()中分配的资源
>>String intercept(ActionInvocation ai) throws Exception
>>实现拦截器功能
>>利用ActionInvocation参数获取Action状态
>>返回结果码(result)字符串
继承...
params拦截器
>>负责将请求参数设置为Action属性
servletConfig拦截器
>>将源于Servlet API的各种对象注入到Action
fileUpload拦截器
>>对文件上传提供支持
exception拦截器
>>捕获异常,并且将异常映射到用户自动以的错误页面
validation拦截器
>>调用验证框架进行数据验证
workflow拦截器
...
Struts 2将核心功能放倒多个拦截器中实现,拦截器可以自由选择和组合,增强了灵活性,有利于系统的解耦。
Struts 2大多数核心功能是通过拦截器实现的,每个拦截器完成某项功能。
拦截器方法在Action执行之前和之后执行。
拦截器栈:
>> 从结构上看,拦截器栈相当于多个拦截器的组合。
>>在功能上看,拦截器栈也是拦截器
拦截器与过滤器原理很相似。
...
Struts2整体架构
>>核心接口和类
ActionMapper 根据请求的URL查找是否存在对应Action调用
ActionMapping 保存调用Action的映射信息,如namespace、name等
ActionProxy 在XWork和真正的Action之间充当代理
ActionInvocation 表示Action的执行状态,保存拦截器、Action实例
Interceptor 在请求处理之前或者之后执行的S...
OGNL表达式注意事项
访问Bean的属性
>>Bean的类型必须遵循JavaBean规范
>>必须具有无参构造
>>setter/getter方法复合JavaBean规范
反问集合对象
>>可以使用属性名[index]的方式访问
>>列表、数组
>>可以使用属性名[key]的方式访问
>>Map对象
——...
什么是OGNL?
>>Object Graph Navigation Language
>>开源项目,取代页面中Java脚本,简化数据访问
>>和EL同属于表达式语言,但功能更为强大
OGNL在Struts2中做的两件事情
>>表达式语言
>>将表单和Struts2标签与特定的Java数据绑定起来,用来将数据移入、移除框架;
>>类型转换
>...
视图控制器
常用结果类型
difpatcher:默认结果类型,后台使用RequestDispatcher转发请求
redirect:后台使用的secdRedirect()将请求重定向至指定的URL
redirectAction:主要用于重定向到Action
<result type="redirect"></result>
通过值判断跳到哪个页面
<result type="redirectAction">${nextDispose}</result> //报错位置$...
作用:减少Action数量
使用:actionName!methodName.action
禁用:将属性struts.enable.DynamicMethodInvocation设置为false(默认,开启动态方法开关)
方法一:
<constant name="struts.enable.DynamicMethodInvocation" value="true"/> //开启动态开关
<action name="user" class="类的全路径名">
<result name="(唯一的)返回字...