`
liuyf8688
  • 浏览: 97075 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Struts2学习笔记

阅读更多

struts2学习笔记
1.MVC模式与观察者模式?
2.Struts1简单介绍?
Struts1的核心是控制器,
控制器有两部分组成:
(1)核心控制器(ActionServlet)
(2)业务逻辑控制器(Action)
Struts1的缺点:
(1)支持的表现层技术单一
(2)与Servlet API严重耦合,难于测试
(3)代码严重依赖于Struts1 API,属于侵入式设计
3.WebWork简单介绍?
核心是ServletDispatcher。
控制器有两部分组成:
(1)核心控制器(ServletDispatcher)
(2)业务逻辑控制器(Action)
4.Struts2简单介绍?
配置文件:
(1)配置Action的struts.xml文件。
(2)配置Struts2全局属性的struts.properties文件。
5.Struts2中的验证框架?
是基于XWork的validator框架。
校验文件遵守的规则:
(1)命名规则ActionName-validator.xml,其中ActionName就是要校验的Action的类名。
(2)校验文件应该同Action类的class文件位于同一个路径下。
另:struts.xml中Action需要定义input逻辑视图名。
6.Struts2框架的组成部分?
(1)核心控制器FilterDispatcher
(2)业务控制器
(3)用户实现的业务逻辑组件
7.Struts2中的常量定义?
定义方式:
(1)在struts.properties
例:key=value
(2)在struts.xml
例:<constant name="" value="" />
(3)在web.xml
例:

<init-param>
<param-name>name</param-name>
<param-value>value</param-value>
</init-param>

Struts2常量加载顺序:
(1)struts-default.xml(struts2-core.jar)
(2)struts-plugin.xml(struts2插件jar文件中)
(3)struts-xml
(4)struts.properties
(5)web.xml
8.Struts2的配置文件是从上到下处理,父包应该在子包前面定义。
9.Struts2中的命名空间配置?
(1)不支持为单独的Action设置命名空间,通过为包指定namespace属性来为包下面的所有的Action指定共同的命名空间。
10.通配符的应用?
(1)<action name="*Action" class="" method="{1}">
</action>
(2) <action name="*Action" class="test.{1}Action">
</action>
(3) <action name="*_*" class="test.{1}Action" method="{2}">
</action>
(4) <action name="*">
<result>/{1}.jsp</result>
</action>
11.类型转换器
转换器须实现接口或实现类:
interface:TypeConverter(OGNL)
method:convertValue
Class:
<1>DefaultTypeConverter(OGNL)
method:convertValue
<2>StrutsTypeConverter(Struts)
method:convertFromString
convertToString
转换器分类:
(1)局部类型转换器
格式:
<1>ActionName-conversion.properties。
(2)全局类型转换器
格式:
<1>xwork-conversion.properties。
12.Struts2中的拦截器?
为拦截器指定参数:
(1)在拦截器定义时
<interceptor />
(2)在使用拦截器时动态分配
<interceptor-ref name="">
<param name></param>
</interceptor-ref>
13.Struts2国际化?
加载资源文件的方式:
(1)指定struts.custom.i18n.resources的值
(2)包范围资源文件
pakeage_language_country.properties(放于包路径下,该包及子包都可以使用。)
(3)Action范围资源文件
ActionName_language_country.properties(和Action同目录)
(4)临时指定资源文件(存放于/WEB-INF/classes)
<1>
<s:i18n>
<s:text />
</s:i18n>
<2>
<s:i18n>
<s:form />
</s:i18n>
Action中加载资源文件的顺序:
(1)Action范围的资源文件
(2)Action父类范围的资源文件
(3)Action实现的接口范围的资源文件
(4)如果Action实现接口ModelDriven,则对于getModel()方法返回的model对象,重新执行第(1)步。
(5)查找当前包下baseName为package系列的资源文件。
(6)查找当前包的父包,直到最顶层包。
(7)查找struts.custom.i18n.resources指定的资源文件。
(8)输出key字符串。
JSP中加载资源文件的顺序:
两种情况:
(1)使用<s:i18n />作为父标签的<s:text />,<s:form />
<1><s:i18n />指定的文件
<2>struts.custome.i18n.resources
<3>输出key字符串
(2)不使用<s:i18n />作为父标签的<s:text />,<s:form />
<1>struts.custome.i18n.resources
<2>输出key字符串
14.OGNL中的集合操作?
取子集:
(1)?:取出所有符合选择逻辑的元素。
(2)^:取出符合选择逻辑的第一个元素。
(3)$:取出符合选择逻辑的最后一个元素。
15.Lambda(λ)表达式?
16.Struts2主题和模板?
主题:
Struts2中的主题:simple, xhtml, css_xhtml, ajax。
(1)通过设定UI标签的theme属性
(2)通过设定UI标签外围Form标签的theme属性
(3)通过取得page会话范围内的命名为theme的属性
(4)通过取得request中的theme
(5)session中的theme
(6)application中的theme
(7)struts.ui.theme常量
注:设定在前面的会屏蔽后面的。
模板加载:
struts.ui.templateDir来指定模板目录。
加载顺序:
(1)web应用中的template/xhtml(此为设定的主题)/name.ftl
(2)classpath:/template/xhtml/name.ftl
通过修改struts.ui.templateSuffix常量的值,改变Struts2的默认模板技术。
Struts.ui.templateSuffix常量值:
(1)ftl:基于FreeMarker模板技术
(2)vm:基于velocity模板技术
(3)jsp:基于jsp模板技术
17.FreeMarker模板?
模板结构:
(1)文本
(2)注释,<#-- -->
(3)插值,${...}或#{...}
(4)FTL指令:FreeMarker指令,类似于HTML标记。名字前加#区分,不会输出。
FTL指令规则:
(1)开始标签<#directivename parameters>
(2)结束标签</#directivename>
(3)空标签<#directivename parameters/>
其中标签前面的#符号也可以变成@, 如果该指令是一个用户指令而不是系统内建指令时,应将#符号改为@ 符号。
插值规则:
(1)通用插值,${expr}
(2)数字格式化插值,#{expr}或#{expr; format}
表达式:
语法:
(1)转义字符
\":双引号(u0022)
\':单引号(u0027)
\\:反斜杠(u005C)
\n:换行(u000A)
\r:回车(u000D)
\t:Tab(u0009)
\b:退格键(u0008)
\f:Form feed(u000C)
\l:<
\g:>
\a:&
\{:{
\xCode:直接通过4位十六进制数来指定Unicode码,输出该Unicode对应的字符。
注:特殊格式:
${r"要输出的文本"}
(2)集合和Map连接,用"+"运算符。
(3)算术运算符,+、-、 *、/、%
内建int函数。
eg.${1.1?int}
(4)比较运算符
=(==)、!=、>(gt)、>=(gte)、<(lt)、<=(lte)
(5)逻辑运算符
&&、||、!
(6)内建函数
@字符串函数
html:对字符串进行HTML编码
cap_first:使字符串第一个字母大写
lower_case:将字符串转换成小写
upper_case:将字符串转换成大写
trim:去掉字符串前后的空白字符
@集合函数
size:取序列中元素的数目
int:取数字的整数部分
(7)空值处理运算符
!:指定缺失变量的默认值(variable!或variable!defaultVlaue)
??:判断某个变量是否存在(variable??)
(8)运算符优先级
<1>一元运算符:!
<2>内建函数:?
<3>乘除法:*、/、%
<4>加减法:+、-
<5>比较:<、>、<=、>=(lt、lte、gt、gte)
<6>相等:=(==)、!=
<7>逻辑与:&&
<8>逻辑非:||
<9>数字范围:..
FreeMarker常用指令:
(1)if指令
<#if condition>
<#elseif condition>
<#else>
</#if>
(2)switch, case, default, break指令
<#switch value>
<#case refValue1>
<#break />
<#default>
</#switch>
(3)list,break指令
<#list sequence as item>
...
<#break />
</#list>
循环变量:
item_index:当前变量的索引值
item_has_next:是否存在下一个对象
(4)include指令
<#include filename [options]>
options:
parse:指定被包含文件是否作为FTL文件来解析,默认为true
encoding:指定包含页面时所用的解码集
(5)import指令
<#import path as mapObject>
将path指定的模板文件中的所有变量,放到一个名为mapObject的Map对象中。
(6)noparse指令
<#noparse>
</#noparse>
(7)escape, noescape指令
<#escape identifier as expression>
...
<#noparse>...</#noparse>
</#escape>
(8)assign指令
<1><#assign name=value [in namespacehash] />
<2><#assign name [in namespacehash]
</#assign>
(9)setting指令
<#setting name=value />
value:
<1>locale:该选项指定该模板所用的国家/语言选项
<2>number_format:指定格式化输出数字
<3>boolean_format:指定两个布尔值的语法格式,默认值是"true, false"
<4>date_format, time_format, datetime_format:格式化日期的格式。
<5>time_zone:指定时区
(10)macro、nested、return指定
<#macro name paramList>
<#nested loopvarList>
<#return>
</#macro>
使用FreeMarker作为Struts2的视图技术:
1.在FreeMarker模板中使用Struts2标签:
(1)将系统所需的标签库定义文件(*.tld)复制到Web应用中。
(2)在Web.xml文件中启动JSPSupportServlet。
<servlet>
<servlet-name>JSPSupportServlet</servlet-name>
<servlet-class>org.apache.struts2.views.JspSupportServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
(3)在FreeMarker模板中使用assign指令导入标签库
<#assign s(@此为引用前缀)=JspTagLibs["/WEB-INF/Struts-tags.tld"]/>
(4)在FreeMarker模板中增加了标签库定义后,就可以在FreeMarker模板中使用Struts2标签了。
eg.
<@s.form action="list">
<@s.textfield label="" name=""/>
<@s.submit value="" />
</@s.form>
2.解析模板中的变量
Struts2解析FreeMarker的顺序:
(1)FreeMarker模板内建的变量
(2)ValueStack中的变量
(3)ActionContext中的变量
(4)HttpServletRequest范围的属性
(5)HttpSession范围的属性
(6)ServletContext范围的属性
FreeMarker模板的内建变量:
(1)stack 代表ValueStack eg.${stack.findString("ognl expr")}
(2)action 代表刚刚执行过的Action实例
(3)response,res 代表HttpServletResponse实例
(4)request,req 代表HttpServletRequest实例
(5)session 代表HttpSession实例
(6)application 代表ServletContext实例
(7)base 代表用户请求的上下文路径
18.Struts2整合Spring?
整合策略:
(1)将Action实例交给Spring窗口来负责生成,管理。利用IOC特性。
(2)利用Spring插件的自动装配方式,当Spring插件创建Action实例后,立即将Spring容器中对应的业务逻辑组件注入Action
实例。
19.Struts2中的文件上传?
上传原理:
1.表单的enctype属性?
指定表单数据的编码方式。
<1>application/x-www-form-urlencoded:这是默认编码方式,只处理表单域中的value,将表单域的值处理成url编码方式。
<2>multipart/form-data:二进制编码。将文件域指定文件的内容也封装到请求参数里。
<3>text/plain:当表单的action是mailto:URL时处理方便。适用于直接通过表单发送邮件的方式。
2.错误信息?
(1)struts.message.error.file.too.large
(2)struts.message.error.type.not.allowed
(3)struts.messages.error.uploading 未知错误




分享到:
评论

相关推荐

    struts2学习笔记(完美总结)——转自OPEN经验库

    struts2学习笔记,非本人所写,但有学习的价值,总结的很好,分享一个!

    struts2学习笔记总结

    struts2学习笔记总结

    struts2学习笔记

    struts2学习笔记struts2学习笔记struts2学习笔记

    struts2学习笔记3数据类型转换

    struts2学习笔记3数据类型转换struts2学习笔记3数据类型转换struts2学习笔记3数据类型转换struts2学习笔记3数据类型转换struts2学习笔记3数据类型转换struts2学习笔记3数据类型转换struts2学习笔记3数据类型转换

    struts2学习笔记.doc

    本人学习struts2的笔记,希望大家可以多多学习以后共同交流

    struts2学习笔记(1)

    1. struts2框架的引入 1)把struts2的相关jar包导入到项目中去 2)把struts2框架的配置文件struts.xml复制粘贴到项目中的src下面(同时也可以把log4j.properties放到src下) 在这里我们主要是要的这个struts.xml文件...

    struts2学习笔记(详细文字)

    structs2很详细的学习笔记,structs2的建造,工作原理,例子,逐步讲解,纯文字的

    Struts2 学习笔记

    01 Struts2-Action 5 一、 Struts作用: 5 二、 搭建Struts2的运行环境: 5 三、 Namespace 6 四、 标签 6 五、 Action 6 六、 路径问题的说明 8 七、 Action的动态调用方法 8 八、 Action通配符(wildcard)的配置 9 ...

Global site tag (gtag.js) - Google Analytics