2.3.4.5.6.7.8.Mypage9.10.11.12.13.14.Struts2.1Tags15.16.17.一、控制标签18.19.#、if/elseif/el" />
当前位置:文档之家› struts标签

struts标签

Struts 2.1 Tags

最近学习 Struts 2.1 Tags 做了些笔记,贴出来大家一起学习下,希望大家多多交流。

别的都不说了,我就贴代码,代码里注释比较详细,呵呵。

文件目录,如下:

index.jsp 代码

Java代码

1.<%@ page language="java" import="java.util.*" pageEncoding="UTF

-8"%>

2.<%@page import="com.rao.bean.Sex"%>

3.<%@ taglib prefix="s" uri="/struts-tags"%>

4.<%@ taglib prefix="sx" uri="/struts-dojo-tags"%>

5.

6.

7.

8. My page

9.

10.

11.

12.

13.

14. Struts 2.1 Tags

15.

16.

17. 一、控制标签


18.

19. #、if /elseif/ else @用于逻辑判断

20.

21.

22. 你是何方妖怪?

23.

24.

25. 未成年人不能进入!

26.

27.

28. 您已经成年!

29.

30.

31. 您已经老了!

32.

33.
-----------------------------------------------------

---------

34. #、append @用于将多个集合合并

35. <

/s:set>

36. <

/s:set>

37.

38.

39.

40.

41.

42. |

43.

44.
----------------------------------------------------

----------

45. #、generator

46. generator 标签,该标签可以将指定字符串按指定分隔符分割成多

个字串。生成的多个字串可以用iterator标签进行迭代输出。可以这么理解:generator标签将一个字符串转换成一个List集合。在该标签体内,整个临时生成的集合将为Valuestack的顶端,但一旦该标签结束,生成的集合将被移除 Valuestack。generator标签有如下几个属性:

47.

48. 1、count属性:指定生成集合中元素的总数。可选属性。

49.

50. 2、val属性:必填属性,指定被解析的字符串。

51.

52. 3、separator属性:这是一个必填属性,指定用于分割字符串的分

隔符。

53.

54. 4、 converter属性:可选属性,指定一个转换器,转换器负责将生

成的集合中的每个字符串转换成对象,通过这个转换器可以将一个含有分隔符的字符串解析成对象的集合。转换器必须一个继承

org.apache.struts2.util.IteratorGenerator.Converter的对象。

55.

56. 5、var属性,可选属性。如果指定了该属性,则将生成的集合保存

在Stack Context中。如果不指定该属性,则将生成的集合放入

ValueStack的顶端,该标签一结束,生成的集合就被移除。该属性也可替换成id。

57.

58.

="2">

59.

60.

61.

62.

63.

64.
----------------------------------------------------

----------

65. #、iterator 用于迭代数据

66. <

/s:set>

67.

68.

69.

70.

71.

72.

73.

74.

75.

76.

77.

78.

79.

pink">

80.

81.

82.

83.

84.

85.

86.

87.

88.

89.

索引 奇? 偶? 首? 尾? 当前迭代数量

90.

91.

92.
----------------------------------------------------

----------

93. #、merge @和类似:用于将多个集合合并

94. <

/s:set>

95. <

/s:set>

96.

97.

98.

99.

100.

101. |

102.

103.
--------------------------------------------------------------

104. #、sort @用于排序

105.

106.

107.

108. ,

109.

110.

111.
--------------------------------------------------------------

112. #、subset @用户截取集合中的子集; 注:decider:可选属性,指定由开发者自己决定是否选中该元素.

113.

114.

115. 116.

117. ,

118.

119.

120.
--------------------------------------------------------------

121.二、数据标签

122.


123. #、action @用于导入一个Action

124.使用action标签,可以允许在jsp页面中直接调用Action,在调用Action时候,可以指定需要被调用的Action的name和namespace.如果指定了executeResult参数的属性值为true,该标签会把Action的处理结果(视图资源)包含到本页面中. 使用action标签指定属性有: 125.

126. id: 可选属性,作为该Action的引用ID

127.

128. name:必选属性,指定调用Action

129.

130. namespace:可选属性,指定该标签调用Action所属namespace

131.

132. executeResult:可选属性,指定是否将Action的处理结果包含到本页面中.默认值为false,不包含.

133.

134. ignoreContextParam:可选参数,指定该页面的请求参数是否需要传入调用的Action中,默认值是false,即传入参数.

135.

136. s:param是以request方式的值的,而不是以参数传值,所以request.getParameter("")会获取不到值,通过

request.getAttribute("")方式可以获取

137.

138.

139.

140.

141.

142.
--------------------------------------------------------------

143. #、bean @用于导入一个javaBean,相当于:jsp:useBean 标签

144. 145. 146.

147.

148. userId:

149. userName:

150.
--------------------------------------------------------------

151. #、date @用于格式化日期

152.

153.当期系统时间是:

154.
--------------------------------------------------------------

155. #、debug @用于调试程序,让开发人员一目了然的知道当前请求、值栈、栈中的各项参数

156.

157.
--------------------------------------------------------------

158. #、i18n @用于访问国际化资源文件的内容

159. 1.默认访问全局范围内的资源文件;

160.

161.

162. 三毛

163. 学习

164.

165.

166.


167. 2.访问包范围内的资源文件;

168.

169. 170.

171. 三毛

172. 学习

173.

174.

175.


176. 3.访问Action范围内的资源文件;

177.

178.

179.

180. 三毛

181. 学习

182.

183.

184.
--------------------------------------------------------------

185. #、include @用于导入一个jsp文件,等同于:jsp:include 标签

186.

187.
--------------------------------------------------------------

188. #、param @用于给指定参数设置值

189. 190. 191.

192.

193. userId:

194. userName:

195.
--------------------------------------------------------------

196. #、property @输出结果,很像EL表达式,但是可以依托于OGNL 表带是很强大

197.同上

198.
--------------------------------------------------------------

199. #、push @该标签可以把程序员在ActionContext中引用的对像压入valuestack中,为以后访问对象提供了方便

200.

201.
--------------------------------------------------------------

202. #、set @用户声明对象或属性

203.

204. ,你好啊!

205.
--------------------------------------------------------------

206. #、text @用户获取国际化资源文件的内容

207.请参考 il8n标签

208.
--------------------------------------------------------------

209. #、url @用于组拼一个请求路径

210. 211. 212. 213.

214.

215.

216.注意:

217.

>

218. value以字符处

理:

219. value明确指定以ognl表达式处

理:

220.

221.
--------------------------------------------------------------

222.

223.三、UI标签

224.


225.

226. #、checkboxlist @复选框列表

227. 1> .list 生成;

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

228. name:checkboxlist的名字

229. list:checkboxlist要显示的列表

230. value:checkboxlist默认被选中的选

项,checked=checked

231.

232.

233.

234. 2> .Map 生成;

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

235. name:checkboxlist的名字

236. list:checkboxlist要显示的列表

237. listKey:checkbox 的value的值

238. listValue:checkbox 的lablel(显示的值)
239. value:checkboxlist默认被选中的选

项,checked=checked

240.

241.

242.
--------------------------------------------------------------

243. #、combobox

244.

245.
--------------------------------------------------------------

246. #、radio @单选框

247. <%

248. Sex sex1 = new Sex(1,"男");

249. Sex sex2 = new Sex(2,"女");

250. List list = new ArrayList(); 251. list.add(sex1);

252. list.add(sex2);

253. request.setAttribute("sexs",list);

254. %>

255.这个与checkboxlist差不多;
256. 1>.如果集合为javabean:


257. 2>.如果集合为list:


258. 3>.如果集合为map:


259.


260.
--------------------------------------------------------------

261. #、select @下拉列表框

262.这个与s:checkboxlist差不多;

263. 1>.如果集合为javabean:


264. 2>.如果集合为list:


265. 3>.如果集合为map:


266.

267.
--------------------------------------------------------------

268. #、doubleselect @级联菜单

269. 270.

271.

272.

273.

274.
--------------------------------------------------------------

275. #、optiontransferselect

276.

name="abc" doubleList="{'111','222','333','444'}" list="{'aaa' ,'bbb','ccc','ddd'}" doubleName="number">

277.
--------------------------------------------------------------

278. #、updownselect @可上下选择的select

279.

name="selectCity" list="#jxList" headerValue="-Please Select T he City-" headerKey="-1">

280.
--------------------------------------------------------------

281. #、sx:datetimepicker @日期选择控件

282.使用步骤:声明:我这里用的是strut 2.1.8.1,在struts2.0的版本中可能有所不同;

283. 1.导入

struts2-dojo-plugin-2.1.8.1.jar DoJo 插件包;

284. 2. 导入标签:

<%--@ taglib prefix="sx" uri="/struts-dojo-tags"--%>;

285. 3.在需要使用的页面中的head标签之间加上<%-- --%>;

286.

287.
--------------------------------------------------------------

288. #、sx:tabbedpanel @选项卡控件

289.声明:这个标签代码转至:

https://www.doczj.com/doc/f511770448.html,/s/blog_6145ed810100ecud.html,版权归作者所有;写的挺好拿来大家共同学习。

290.

291.

292. 293.


294. 最简单的选项卡:

295.

296.

297.

298. Local Tab 1

299.

300.

301. Local Tab 2

302.

303.

304.

305.

306.

307.


308. 加载其他页面的选项卡:

309.

310.

311.

312. Remote Tab 1

313.

314.

315. Remote Tab 1

316.

317.

318.

319.

320.

321.


322. 设置选项卡底下的内容懒加载,即等需要的时候再加载,使用属性preload="false":

323.

324.

325.

326. Remote Tab 1

327.

328.

329. Remote Tab 1

330.

331.

332.

333.

334.

335.


336. 固定大小的选项卡,使用属性cssStyle和doLayout:

337.

338.

339.

340. Local Tab 1

341.

342.

343. Local Tab 2

344.

345.

346.

347.

348.

349.


350. 每次点击选项卡时都重新刷新内容,使用属性refreshOnShow:

351.

352.

353.

354. Remote Tab 1

355.

356.

357. Remote Tab 2

358.

359.

360.

361.

362.

363.

364.


365. 使得其中一个选项卡失效:

366.

367.

368.

369. Local Tab 1

370.

371.

372. Local Tab 2

373.

374.

375.

376.

377.

378.


379. 设置选项卡在底部显示 (可以

是: top, right, bottom, left):

380.

381.

cssStyle="width:200px;height:100px;" doLayout="true">

382.

383. Local Tab 1

384.

385.

386. Local Tab 2

387.

388.

389.

390. 391.


392. 设置选项卡允许关闭,使用属性closeable: 393.

394.

395.

396. Local Tab 1

397.

398. 399. Local Tab 2

400.

401.

402.

403.
--------------------------------------------------------------

404. #、sx:textarea @textarea控件

405. < /sx:textarea>

406.

407.
--------------------------------------------------------------

408. #、sx:tree @树控件

409.

410.

411.

412.

413.

414.

415.

416.

417.

418.

419.

420.

421.

struts.xml 代码:

Xml代码

1.

2.

uts Configuration 2.1.7//EN" "struts-2.1.7.dtd" >

3.

4.

5.

6.

7.

8.

9. /success.jsp

10.

11.

12.

13.

TagsAction1.java 代码:

Java代码

1.package com.rao.action;

2.

3.import com.opensymphony.xwork2.ActionSupport;

4.

5.public class TagsAction1 extends ActionSupport {

6. private String userName;

7. public String getUserName() {

8. return userName;

9. }

10. public void setUserName(String userName) {

11. https://www.doczj.com/doc/f511770448.html,erName = userName;

12. }

13.

14. @Override

15. public String execute() throws Exception {

16.

17. return SUCCESS;

18. }

19.

20.}

GlobalNativeAction.java

Java代码

1.package com.rao.action;

2.

3.import com.opensymphony.xwork2.ActionContext;

4.import com.opensymphony.xwork2.ActionSupport;

5./**

6. * 演示的是在Action 中获取国际化资源文件中的内容

7. * @author Administrator

8. *

9. */

10.public class GlobalNativeAction extends ActionSupport {

11.

12. @Override

13. public String execute() throws Exception {

14. //不带有占位符的获取方法

15. //ActionContext.getContext().put("message", this.getTex

t("welcome"));

16. //带有占位符的获取方法

17. ActionContext.getContext().put("message", this.getText(

"welcome",new String[]{"raozhiyong","study"}));

18. return "message";

19. }

20.

21.}

struts2_zh_CN.properties

welcome 全局范围:{0},这是一个中文的国际化资源文件,欢迎你的使用

{1}!!!GlobalNativeAction_zh_CN.properties

welcome Action 范围:{0},这是一个中文的国际化资源文件,欢迎你的使用{1}!!!

package_zh_CN.properties

welcome package 范围:{0},这是一个中文的国际化资源文件,欢迎你的使用{1}!!!

Sex.java

Java 代码

1. package com.rao.bean;

2.

3. public class Sex {

4. private int id;

5. private String name;

6.

7. public Sex(int id, String name) {

8. super();

9. this.id = id;

10. https://www.doczj.com/doc/f511770448.html, = name;

11. }

12.

13. public int getId() {

14. return id;

15. }

16. public void setId(int id) {

17. this.id = id;

18. }

19. public String getName() {

20. return name;

21. }

22. public void setName(String name) {

23. https://www.doczj.com/doc/f511770448.html, = name;

24. }

25.

26.}

UserBean.java

Java代码

1.package com.rao.bean;

2.

3.import java.io.Serializable;

4.

5.public class UserBean implements Serializable{

6.

7. private static final long serialVersionUID = 1L;

8. public UserBean() {}

9.

10. private Integer userId;

11. private String userName;

12. public Integer getUserId() {

13. return userId;

14. }

15. public void setUserId(Integer userId) {

16. https://www.doczj.com/doc/f511770448.html,erId = userId;

17. }

18. public String getUserName() {

19. return userName;

20. }

21. public void setUserName(String userName) {

22. https://www.doczj.com/doc/f511770448.html,erName = userName;

23. }

24.

25.}

MyComparator.java

Java代码

1.package https://www.doczj.com/doc/f511770448.html,parator;

2.

3.import https://www.doczj.com/doc/f511770448.html,parator;

4.

5.public class MyComparator implements Comparator {

6.

7. public int compare(Integer o1, Integer o2) {

8. int c = https://www.doczj.com/doc/f511770448.html,pareTo(o2);

9. return c;//可以完成顺序排序

10. //return -c;//可以完成倒序排序

11. }

12.}

运行结果,附上图片:

Struts2框架工作原理及应用体会

2012年第11卷第6期 产业与科技论坛2012.(11).6 Industrial &Science Tribune Struts2框架工作原理及应用体会 □宋 君 张家爱 【摘要】通过针对特定用户的分析,搭建以Struts2为技术核心的旅行社管理系统。本文简单的介绍了MVC 、 Struts2的工作原理,同时总结了在项目制作过程中所得到的心得。 【关键词】 Struts2;MVC ;FilterDispatcher ;Action 【基金项目】本文为大学生科技创新院级基金项目(编号:2011070)成果 【作者单位】宋君,吉林农业科技学院信息工程学院;张家爱,吉林农业科技学院信息工程学院教师 本着锻炼自我与积极参与到实用性技术的目标,以发掘自身创新意识为前提。利用空闲时间,在老师的指导下,进行了一次大学生创新项目的实践性活动。本着实用原则,以某中小旅行社为客户(根据用户需求,匿名),以Struts2框架为基点,进行了一次旅行社管理系统的开发。在项目结束之余, 特将在项目过程中经历的种种认识进行了简单的总结,希望让阅读本文的朋友们,更多的参与到此类活动中。 一、基础思想— ——MVC 简述作为时下经典框架之一, MVC 具有其独特的价值。MVC 框架简单的说,就是将数据模型与用户视图进行分离。通过控制器进行协调处理的一种结构是框架。同时,也是本文中要讨论的Sturts2框架的基础思想。 M 是指模型层(Model ),V 是指用户视图(View ),C 则是指控制器 (Controller )。这种划分方式是以将模型层与视图层进行代码分离,从而降低两者之间的耦合性,使同一程序可以使用不同形式进行表现。不同层之间的修改不会或尽量少的印象到其他层功能的史前为前提。有效的提高的代码的维护性和设计难度。 图1 二、 Struts2工作原理(一)Struts2框架组成。Struts2框架由三个主要部分组成:核心控制器、业务控制器,以及由用户实现的业务逻辑组件。这里我们将侧重于核心控制器与业务控制器的理解与说明。 (二)核心控制器:FilterDispatcher 。FilterDispatcher 是Struts2框架的核心控制器,在此,我们可以将FilterDispatcher 看作一个类似于过滤网的过滤器。当用户发出请求,并到达Web 硬哟那种时,该过滤器会过滤用户请求。如果用户请求的结尾为action ,则将该请求转入Struts2框架进行处理。当Struts2框架获得了*.actio 请求后,会根据请求前面“*”的那部分内容,决定调用哪个业务逻辑组件作为响应单位。这里需要说明的是Struts2用来处理用户请求的Action 实例并不是业务控制器,而是作为Action 的代理———正因为Struts2的一大特点,与Servlet API 的非耦合性,使得用户实现的业务控制器无法直接处理用户请求。有效的提高了后期调试维护的效率。而Struts2框架再次提供了了一系列的拦截器。这些拦截器负责将HttpServletRequest 请求的参数解析出来,传入Action 中,并毁掉Action 的Execute 方法来处理用户请求。用户实现的Action 类仅作为Struts2的Action 代理的代理目标。用户实现的业务控制器则包含了对用户请求的处理。用户的请求数据包含在HttpServletRequest 对象中,而用户的Action 类无需访问HttpServletRequest 对象。拦截器负责将HttpServletRequest 里的请求数据解析出来,并传给业务逻辑组件Action 实例。 (三)业务控制器。业务控制器就是前文提到的用来实现用户Action 的实力,这里的每个Action 类通常包含有一个execute 方法,当业务控制器处理完用户的请求后,该方法将会针对此次处理返回一个字符串— ——该字符串就是一个逻辑树图名。当程序开发人员开发出系统所需要的业务控制器后,还需要针对性的配置Struts2的Action ,即需要配置Ac- tion 的以下三个部分:(1)Action 所处理的URl 。(2)Action 组件所对应的实现类。(3)Action 里包含的逻辑试图和物理资源之间的对应关系。每个Action 都要处理一个用户请求,而用户请求则总是包含有指定的URL 。当核心控制器过滤用户请求,并调用后,根据请求的URL 和Action 处理URL 之间的对应关系来处理转发。 · 342·

Strurts2

阐述struts2的执行流程。 Struts 2框架本身大致可以分为3个部分:核心控制器FilterDispatcher、业务控制器Action 和用户实现的企业业务逻辑组件。 核心控制器FilterDispatcher是Struts 2框架的基础,包含了框架内部的控制流程和处理 机制。业务控制器Action和业务逻辑组件是需要用户来自己实现的。用户在开发Action和业务逻辑组件的同时,还需要编写相关的配置文件,供核心控制器FilterDispatcher来使用。Struts 2的工作流程相对于Struts 1要简单,与WebWork框架基本相同,所以说Struts 2 是WebWork的升级版本。 基本简要流程如下: 1、客户端浏览器发出HTTP请求。 2、根据web.xml配置,该请求被FilterDispatcher接收。 3、根据struts.xml配置,找到需要调用的Action类和方法,并通过IoC方式,将值注入给Aciton。 4、Action调用业务逻辑组件处理业务逻辑,这一步包含表单验证。 5、Action执行完毕,根据struts.xml中的配置找到对应的返回结果result,并跳转到 相应页面。 6、返回HTTP响应到客户端浏览器。 工作原理 在Struts2框架中的处理大概分为以下几个步骤 1 客户端初始化一个指向Servlet容器(例如Tomcat)的请求 2 这个请求经过一系列的过滤器(Filter)(这些过滤器中有一个叫做ActionContextCleanUp的可选过滤器,这个过滤器对于Struts2和其他框架的集成很有帮助,例如:SiteMesh Plugin) 3 接着FilterDispatcher被调用,FilterDispatcher询问ActionMapper来决定这个请是否 需要调用某个Action 4 如果ActionMapper决定需要调用某个Action,FilterDispatcher把请求的处理交给ActionProxy 5 ActionProxy通过Configuration Manager询问框架的配置文件,找到需要调用的Action 类 6 ActionProxy创建一个ActionInvocation的实例。 7 ActionInvocation实例使用命名模式来调用,在调用Action的过程前后,涉及到相关拦截器(Intercepter)的调用。 8 一旦Action执行完毕,ActionInvocation负责根据struts.xml中的配置找到对应的返回结果。返回结果通常是(但不总是,也可能是另外的一个Action链)一个需要被表示的JSP

Struts2学习之二--Struts2标签介绍

Struts2学习之二--Struts2标签介绍 热12已有 14625 次阅读 2009-07-12 18:53 [顶]3G移动--Android开发工程师全能班 (转) Struts2学习之二--Struts2标签介绍 在上一篇文章《为Struts 2.0做好准备》中,我过于详细地介绍了Struts 2.0开发环境和运行环境的配置,所以,本文很少涉及的以上两方面的细节。如果,您看完《为Struts 2.0做好准备》后,还有什么不明白,或者没法运行文中例子,请联系我。我的E-MAIL:Max.M.Yuan@https://www.doczj.com/doc/f511770448.html,。 在介绍常用标志前,我想先从总体上,对Struts 1.x与Struts 2.0的标志库(Tag Library)作比较。 分类将标志库按功能 分成HTML、Tiles、 Logic和Bean等 几部分 严格上来说,没有分类,所有标志都在URI 为“/struts-tags”命名空间下,不过, 我们可以从功能上将其分为两大类:非UI 标志和UI标志 表达式语言(expression languages)不支持嵌入语言 (EL) OGNL、JSTL、Groovy和Velcity 以上表格,纯属个人总结,如有所不足或错误,请不吝指正 好了,我要开始介绍“常用”(这里所谓的“常用”,是指在已往工作中使用Struts里经常用到的)的标志了。 1.非UI标志 o if、elseif和else 描述: 执行基本的条件流转。

参数: 名称必 需 默 认 类型描述备注 test 是Boolean 决定标志里内容是否 显示的表达式 else标志 没有这个 参数 id 否Object/String 用来标识元素的id。在UI和表单中为HTML的id属性 例子: <%@ page contentType="text/html; charset=UTF-8" %> <%@ taglib prefix="s" uri="/struts-tags" %> Condition Flow

Condition Flow

" /> Max's file here Scott's file here

strusts2课堂总结

一、 1、struts2 struts2是mvc设计思想的一个实现,可以将项目低耦合,提高扩展性 2、struts2和struts1的区别 struts2不是struts1的升级,而是继承的下xwork的血统,它吸收了struts1和webwork 的优势。 struts2的action是原型,安全的,struts2的action是单例,非安全 3、步骤: 1、导入包 2、在web.xml文件中,加入struts2的核心拦截器 3、在src下放入struts2的xml struts.xml 4、url http://localhost:8080/Struts2_01_HelloWorld/demo/hello.action 二、 1、默认值 2、转发和重定向的区别 转发:url显示的依然是上一个的url,共享上一次的请求 重定向:url显示的是下一个的url,不共享 3、url http://localhost:8080/Struts2_02_Default/demo/hello.action 4、路径 http://localhost:8080/Struts2_02_Default/demo/a/b/c/hello.action 1、原路径找不到,http://localhost:8080/Struts2_02_Default/demo/a/b/hello.action 2、如果1找不到,http://localhost:8080/Struts2_02_Default/demo/a/hello.action 3、如果2找不到,http://localhost:8080/Struts2_02_Default/demo/hello.action 3、如果3找不到,http://localhost:8080/Struts2_02_Default/hello.action 三、 11、自定义action

struts2 实验报告

1.系统分析与设计 1.1 系统功能描述 本系统是个非常简单的注册、登录系统。本系统的实现是基于Struts2、Spring、Hibernate 三个框架,系统功能单一,业务逻辑简单。 当用户注册信用户时,就是向系统中增加一个新用户,对应的数据库增加一条记录。 当用户输入注册信息时,系统提供了基本的输入验证判断用户输入是否合法,只有当用户输入满足基本输入要求时,才会被提交到实际的登录系统,进行实际的登录处理。 系统还使用了随机产生的图形验证码来防止刷新,防止用户通过单击浏览器的书安心按钮来重复注册多个用户。 系统还提供了一种Ajax方式来验证用户输入的注册名是否有效,系统要求所有的用户名不能重复。故当用户输完用户名后,系统立即在页面上方提示用户该用户名是否可用,如果系统中没有该用户名,则系统提示该用户名可用;否则提示用户该用户名重复,用户必须重新选择用户名注册。 当用户注册一个新用户名之后,就可以使用系统的登录功能来登录系统了,用户输入登录用的用户名、密码后,系统一样提供了基本的输入校验。 除此之外,系统还采用了随机产生图形验证码来防止恶意用户的暴力破解,系统随机生成一个图形验证码,而用户登录必须输入图形验证码中显示的字符串,只有用户输入的字符串和系统随机生成的验证码字符相同时,系统才允许用户登录。 1.2 系统功能流程

1.3 数据库设计 相关的映射文件: 一旦提供了上面的映射文件,Hibernate 就可以理解User 和user_table 之间的对应关系。 2.系统实现与测试 2.1 系统采用的关键技术 MVC 框架采用了Struts2框架,Struts2框架的易用性,极好的简化了系统的MVC 层的实现;本系统使用了Struts2的JSON 插件来完成Ajax 功能,除此之外本系统为了避免进行底层的Ajax 交互,还是用了一个简单Prototype.js 函数库,用以简化Ajax 编程。Struts2框架的稳定性,为系统的稳定运行提供了保证。

Strus2标签库

Strus2标签库 Struts2提供了一套标签库用于简化JSP层的编程,开发者只需要标签中做少量的设置,就可以实现各种常用的效果。Struts2的标签与Action联系比较紧密,使用标签后,Struts会自动完成JSP层的显示数据、在Action层采集数据等工作。 Struts2的标签都统一包含在struts-tags.tld文件中(位于struts2-core-2.2.1.jar中),使用统一前缀。 Struts标签库大致分为: UI标签:包括表单标签,非表单标签 非UI标签:流程控制标签,数据访问标签 首先要在JSP中使用taglib编译指令导入标签库,然后才可以使用标签。 <%@taglib prefix="s" uri="/struts-tags"%> 以上代码用于导入Struts2标签库,其中URI就是对应web.xml文件中指定的标签库的URI,而prefix属性值是该标签库的前缀。 第1节OGNL语言 OGNL是Object-Graph Navigation Language的缩写,它是一种功能强大的表达式语言(Expression Language,简称为EL),通过它简单一致的表达式语法,可以存取对象的任意属性,调用对象的方法,遍历整个对象的结构图,实现字段类型转化等功能。它使用相同的表达式去存取对象的属性。 OGNL语法类似于EL,主要使用.作为操作符,例如要访问person.getCountry().getName()可以这样写:https://www.doczj.com/doc/f511770448.html,。 1.1 OGNL的常用符号 主要是#号,其作用有三种: 1. 访问OGNL上下文与ActionContext资源,相当于ActionContext.getContext(), 常用#属性如下表: parameters: 相当于:request.getParameter("userName");

Struts2的介绍及总结

Struts2在WebWork基础上发展起来的,可扩展的JAVA EE web框架。框架设计的目标贯穿整个开发周期,从开发到发布,包括维护的整个过程。 Action类:Struts 2 Action类可以实现一个Action接口,也可实现其他接口,使可选和定制的服务成为可能。Struts2提供一个ActionSupport基类去实现常用的接口。Action接口不是必须的,任何有execute标识的POJO 对象都可以用作Struts2的Action对象。 线程模式:Struts2Action对象为每一个请求产生一个实例,因此没有线程安全问题。 Servlet依赖:Struts 2 Action不依赖于容器,允许Action脱离容器单独被测试。如果需要,Struts2 Action仍然可以访问初始的request和response。但是,其他的元素减少或者消除了直接访问HttpServetRequest 和 HttpServletResponse的必要性。 可测试性:Struts2 Action可以通过初始化、设置属性、调用方法来测试,“依赖注入”支持也使测试更容易。 捕获输入:Struts2直接使用Action属性作为输入属性,消除了对第二个输入对象的需求。Action属性能够通过web页面上的taglibs访问。 表达式语言:Struts 2 使用"ValueStack"技术,使taglib能够访问值而不需要把你的页面(view)和对象绑定起来。ValueStack策略允许通过一系列名称相同但类型不同的属性重用页面(view)。Struts2不仅支持JSTL, Struts2 还可使用OGNL进行类型转换。提供基本和常用对象的转换器。 校验:Struts2支持通过validate方法和XWork校验框架来进行校验。XWork 校验框架使用为属性类类型定义的校验和内容校验,来支持chain校验子属性。

struts2复习题(含答案)

Struts2复习题 1.以下属于struts2的控制器组件是: 2.以下属于struts2的体系结构的是:(多选) 控制器组件配置文件 3.以下属于struts2配置文件中的配置元素是:(多选) A. B. C. D. 4.关于struts1和struts2对比的说法正确的是: 要求Action类继承struts1框架中的Action父类,struts2中则不一定需要继承,可以是POJO 类 中的Action不是线程安全的,而struts2中的Action是线程安全的 和struts2中都使用ActionForm对象封装用户的请求数据 使用OGNL表达式语言来支持页面效果,struts2通过ValueStack技术使标签库访问值 5.以下关于ValueStack说法正确的是:(多选) A.每个Action对象实例拥有一个ValueStack对象 B.每个Action对象实例拥有多个ValueStack对象 中封装了需要传入下一个页面的值,这些值封装在ValueStack对象中 会在请求开始时被创建,请求结束时消亡 6.关于struts2配置文件说法正确的是: A.必须在WEB-INF/classes目录下 B.名字必须为 C.配置Action时,必须配置包信息 D.使用元素配置转发 7.在struts2配置中用()元素来配置常量: A. B. C. D. 8.关于struts2包的说法正确的是: 框架使用包来管理常量 框架定义包时必须指定name属性 框架中配置包时,必须继承自struts-default包,否则会报错 框架中使用包来管理Action 9.struts2中获取Servlet API的方法正确的是:(多选) A.使用ActionContext对象以解耦合的方法访问Servlet API B.使用ServletActionContext对象以解耦合的方式访问Servlet API C.使用ActionContext对象以耦合的方式访问Servlet API D.使用ServletActionContext对象以耦合的方式访问Servlet API 10.struts2动态调用的格式为: ! 11.如果要实现struts2的数据校验功能 A.普通Action类可以实现 B.继承自Action接口可以实现 C.继承自ActionSupport类可以实现 D.继承自ActionValidate类可以实现

java 问题汇总(总结,重点)

在用到spring框架中时,场景如下 post 请求过去,对象接收不到参数的值(解决办法:考虑到在参数上加个@RequestBody 注解即可,有些没加的是框架帮忙处理了后默认接收的是json串) http://localhost:8080/xxxxxxxxxxx-xxxxxxx-api/xxxxxx/xxxxx/xxxxxxxxx/sugges t/add.sgt ================================================== ==================================== mapper.xml->@Repository{存储数据层}->@Service{业务层}->@Controller{展示层} (spring注解可以理解为这样的线性,任其项目结构怎么变这样的线性结构是不会变的,万变不 离其宗) @Repository @Service @Controller均是注册在spring上下文中 @Autowired 在spring上下文中找bean @Qualifier 配合@Autowired使用当找到多个同一类型的bean,则会抛异常,此时可以使用@Qualifier("beanName"),明确指定bean的名称进行注入 @RequestMapping 配置连接 @Required 注册在sett方法上,检查有没有被调用 @RequestParam 绑定参数 @RequestBody读取Request请求的body部分数据,使用系统默认配置的HttpMessageConverter进行解析,然后把相应的数据绑定到要返回的对象上

struts2标签使用实例

Struts2中数据标签使用示例 S truts2提供了大量丰富的标签供使用,它不再像S truts1中一样,将种类标签进行分门列别,但可以根据其使用的用途用以区别。本文通过对S truts2中数据标签的学习,来对S truts2中标签的学习起到一个抛砖引玉的作用。 文中将介绍Action标签、Bean标签、Data标签、Include标签、P aram标签、Set标签、T ext标签、P roperty 标签等标签。 代码下载:https://www.doczj.com/doc/f511770448.html,/y1ps2Mjpc3NiLKuetMOpCsZOOypD6KSdo8-46Zy2wpoMcABeo4vOC NJXtWDEO93-TXgZogwAF YxSOni5BEG2EoN65OFwHdG71v-/St ruts2DataTags.rar?download 一、标签 Action标签,顾名思义,是用来调用Action的标签,在JSP中页面中,可以指向具体指定某一命名空间中的某一Action。而标签的主体用于显示及渲染Actionr的处理结果。 1.WebRoot\pages\dataTagssuccess.jsp处理页面 <%@ page contentType="text/htm l; charset=GBK" %> <%@ taglib prefix="s" uri="/struts-tags" %> Action Tag 示例

Action Tag 示例

s:action标签用于在页面显示结果.
这里使用标签进行页面跳转,并用于显示处理的结果。 2.先来看st ruts.xml中的配置: /pages/dataTags/success.jsp

Struts2知识点总结

Struts2基础知识 Struts2概述 1.Struts2框架应用javaee三层结构中的web层框架。 2.Struts2框架在struts1和webwork基础之上发展的全新框架。 3.Struts2所解决的问题: 在以往实现一个功能时,都需要写很多的servlet,从而造成后期维护上的不方便。 图解: 4.现在比较稳定的Struts2版本 struts-2.3.24-all.zip 5.web层常见框架 1.struts 2.springMVC Struts2框架入门 1.导入jar包 1.在lib里面有jar包,但不能全部导入,因为里面含有一些spring 包,是不能使用的,导入会导致程序不能运行。 2.到app目录里面复制案例的jar包是最好的方法。 2.创建action 3.配置action类的访问路径

1.创建struts2核心配置文件,该核心配置文件位置和名称是固定的, 位置必须在src下面,名称为struts.xml 。 2.引入dtd约束,可以在案例文件中找到,复制在struts.xml文件中即 可。 3.action的配置 *注意访问路径: http://域名/端口号/项目名/action名.action 注意:.action可以省略,但建议不要省略,为了兼容一些老版本的浏览器。 4.配置Struts2的过滤器,可以在案例中的web.xml文件中找到,复制粘贴 即可。 Struts2执行过程 图解:

Struts2配置

1.是一种常量标签 2.修改Struts2的默认常量值 1.常用方式 在struts.xml中进行配置。 2.其它两种方式 1.在src下面创建struts.properties文件并修改。 2.在web.xml文件中进行修改。 3.Struts2最常用的常量 struts.il8n.encoding=UTF-8,解决表单在通过post方式提交中文时,中文乱码的问题。

struts2面试题(自己总结)

Struts2面试题 1、struts2工作流程 Struts 2框架本身大致可以分为3个部分: 核心控制器FilterDispatcher、业务控制器Action和用户实现的企业业务逻辑组件。核心控制器FilterDispatcher是Struts 2框架的基础,

包含了框架内部的控制流程和处理机制。 业务控制器Action和业务逻辑组件是需要用户来自己实现的。 用户在开发Action和业务逻辑组件的同时,还需要编写相关的配置文件, 供核心控制器FilterDispatcher来使用。 Struts 2的工作流程相对于Struts 1要简单,与WebWork框架基本相同, 所以说Struts 2是WebWork的升级版本。基本简要流程如下: 1 、客户端初始化一个指向Servlet容器的请求; 2、这个请求经过一系列的过滤器(Filter) (这些过滤器中有一个叫做ActionContextCleanUp的可选过滤器, 这个过滤器对于Struts2和其他框架的集成很有帮助,例如:SiteMesh Plugin) 3 、接着FilterDispatcher被调用, FilterDispatcher询问ActionMapper来决定这个请是否需要调用某个Action 4、如果ActionMapper决定需要调用某个Action, FilterDispatcher把请求的处理交给ActionProxy 5、ActionProxy通过Configuration Manager询问框架的配置文件, 找到需要调用的Action类 6、ActionProxy创建一个ActionInvocation的实例。 7、ActionInvocation实例使用命名模式来调用, 在调用Action的过程前后,涉及到相关拦截器(Intercepter)的调用。 8、一旦Action执行完毕,ActionInvocation负责根据struts.xml中的配置找到对应的返回结果。返回结果通常是(但不总是,也可能是另外的一个Action链)一个需要被表示的JSP 或者FreeMarker的模版。在表示的过程中可以使用Struts2 框架中继承的标签。在这个过程中需要涉及到ActionMapper 9、响应的返回是通过我们在web.xml中配置的过滤器 10、如果ActionContextCleanUp是当前使用的,则FilterDispatecher将不会清理sreadlocal ActionContext;如果ActionContextCleanUp不使用,则将会去清理sreadlocals。 2、说下Struts的设计模式 MVC模式: web应用程序启动时就会加载并初始化ActionServler。用户提交表单时,一个配置好的ActionForm对象被创建,并被填入表单相应的数据,ActionServler根据Struts-config.xml文件配置好的设置决定是否需要表单验证,如果需要就调用ActionForm的Validate()验证后选择将请求发送到哪个Action,如果Action不存在,ActionServlet会先创建这个对象,然后调用Action的execute()方法。Execute()从ActionForm对象中获取数据,完成业务逻辑,返回一个ActionForward对象,ActionServlet再把客户请求转发给ActionForward对象指定的jsp组件,ActionForward对象指定的jsp生 成动态的网页,返回给客户。

struts2标签和OGNL表达式

1.OGNL表达式语言 OGNL是Object Graphic Navigation Language(对象图导航语言)的缩写,它是一个开源项目。 Struts 2框架使用OGNL作为默认的表达式语言。 相对EL表达式,它提供了平时我们需要的一些功能,如: 支持对象方法调用,如xxx.sayHello(); 支持类静态方法调用和值访问,表达式的格式为@[类全名(包括包路径)]@[方法名 | 值名],例如:@https://www.doczj.com/doc/f511770448.html,ng.String@format('foo %s', 'bar')或 @cn.itcast.Constant@APP_NAME; 操作集合对象。 Ognl 有一个上下文(Context)概念,说白了上下文就是一个MAP结构,它实现了java.utils.Map接口,在Struts2中上下文(Context)的实现为ActionContext,下面是上下文(Context)的结构示意图 2.访问上下文(Context)中的对象需要使用#符号标注命名空间,如 #application、#session 另外OGNL会设定一个根对象(root对象),在Struts2中根对象就是ValueStack (值栈)。如果要访问根对象(即ValueStack)中对象的属性,则可以省略#命名空间,直接访问该对象的属性即可。 在struts2中,根对象ValueStack的实现类为OgnlValueStack,该对象不是我们想像的只存放单个值,而是存放一组对象。在OgnlValueStack类里有一个List 类型的root变量,就是使用他存放一组对象 |--request |--application context ------|--OgnlValueStack root变量[action, OgnlUtil, ... ] |--session |--attr |--parameters 在root变量中处于第一位的对象叫栈顶对象。通常我们在OGNL表达式里直接写上属性的名称即可访问root变量里对象的属性,搜索顺序是从栈顶对象开始寻找,如果栈顶对象不存在该属性,就会从第二个对象寻找,如果没有找到就从第三个对象寻找,依次往下访问,直到找到为止。 大家注意: Struts2中,OGNL表达式需要配合Struts标签才可以使用。如: 3.由于ValueStack(值栈)是Struts 2中OGNL的根对象,如果用户需要访问值栈中的对象,在JSP页面可以直接通过下面的EL表达式访问ValueStack(值栈)中对象的属性: ${foo} //获得值栈中某个对象的foo属性

Struts2标签使用

Struts2标签使用 (1): ---- 文本输入框 使用: (2): ----- 文本域输入框 使用: (3): ----- 密码输入框 使用: 前三个基本都是一样的。如果是要显示值的话可以这样:value = “实体Bean。Get***()”。 (4): ---- 单选按钮 使用:其中list 属性是必须要有的。 <1>:第一种方式:list = “#{‘male’:’男’,’female’:’女’}”

<2>:第二中方式:list = “#request/session.list”。 ---- 与action 结合起来了。 如果要默认选中的话后面加上value = “”.也可以通过javascript 的方式来默认选中。 (5): --- url连接 --- 超链接 这两个标签一般结合起来来使用。 使用: (6): --- 获取相应form的值 使用: <1>:

Struts1学习笔记总结

Struts1 (1) Struts1和Servlet的关系 (1) 创建第一个Struts1项目 (1) 例子1: (3) 总结重点:struts1的工作流程(基于MVC模式的) (7) 一.普通的Servlet的工作流程 (7) 二.Structs1的工作流程(和上面的对比记忆) (8) Struts标签 (9) Bean标签 (9) html标签 (10) logic标签(逻辑标记) (12) i18n(国际化) (13) Struts1 Struts1和Servlet的关系 Jsp+Servlet+Javabean ActionForm和VO的区别: 一样的内容,不一样的作用 ActionForm只接收前台表单传来的数据 VO是conga后台提取的数据向前台传递 创建第一个Struts1项目 新建一个web项目,选择1.4即可 右键----MyEclipse----Add Struts Capacity

---------------Struts控制文件的路径 TLD(标签) 1) 2):显示信息 3):逻辑标签 struts-config.xml

史上最全的struts2标签

a a标签创建一个HTML超链接,等价于HTML 的登陆 更多 a 信息 action 使用action标签可以允许在JSP页面中直接调用Action。 范例如下: 更多 action 信息 actionerror 这个标签负责输出错误信息到客户端。 示范代码: Action代码如下: public String execute() { addActionError("第一条错误消息!"); addActionError("第二条错误消息!"); return SUCCESS; }.... JSP中: 更多 actionerror 信息 actionmessage

这个标签负责输出提示信息到客户端,例子如下: Action代码如下: public String execute() { addActionMessage("第一条普通消息!"); addActionMessage("第二条普通消息!"); return SUCCESS; } JSP: 更多 actionmessage 信息 append 用来做iterator标签的辅助,将不同iterator中的内容合在一个iterator中。例子: 更多 append 信息 bean bean标签用于创建一个JavaBean的实例。 示范样例: 更多 bean 信息

Struts2的拦截器总结

Struts2 中的拦截器和servelt 中的过滤器是非常的相似的。如果学过过滤器的话,肯定能够感觉的到,尽管有些微的不同。可是struts2的拦截器到底如何使用呢,为什么会有这些配置呢?接下来一一来看。 过滤器和拦截器是非常相似的,过滤器public interface Filter 接口里面有三个方法: ?init(FilterConfig filterConfig), ?destroy(), ?doFilter(ServletRequest request, ServletResponse response, FilterChain chain), 这里面的doFilter() 方法是最重要的,在struts2 中String intercept(ActionInvocation invocation)就相当于此方法。 如何完成一个拦截器呢?在struts2 中要实现一个接口这个接口是什么呢?在哪呢?,是否在哪听说过?是webwork 是我们以前听的最多的关于拦截器的框架,struts2 用了其中一个核心的东西,这个东西在是什么呢?是xwork 。恩,有了它才可以拦截,好了我们在哪找呢?在com.opensymphony.xwork2.interceptor 中找,里面有个Interceptor 这是个接口,里面也有三个方法,有init,destroy 和intercept 三个方法,而在struts2 里面的所有的拦截器都继承这个接口!

为了看这些是怎么实现的,加入了一些打印! 将上面的配置整合起来就是:

这样就可以让Aciton 被拦截了,到此,好了,可以运行程序了: 输出结果是:启动服务器init 被打出 运行后提交action 输出intercept 这个就是初步的一个拦截器。 ======= 在此可能出现一个问题,是什么呢?如果就我们做的注册程序而言,可以想一下,有数据转换,有数据校验,以前当转换和校验不符合的时候,点击提交,会提示相关错误信息,然而,此时当转换和校验依然不符合要求时,点击提交,却不会提示错误信息,为什么呢? ==== 当然你答对了,这些功能都包含在struts2的默认拦截器中,这里没执行是被添加的拦截器myinterceptor取代了。 为了查明原因可以查看一下struts2-core-2.xx.jar中的struts-default.xml 这个文件 这里定义的很多的东西,和我们的程序相关的非常紧密 首先这里有个 ... 和struts.xml 里面的 ...有什么关系呢?很明显可以猜到struts.xml 继承的就是struts-default.xml中的包struts-default。 这个里面还看到标签,这个是定义拦截器栈的,仔细看可以发现里面有个validation 如此可以猜想,validation 也是定义的一个拦截器,猜想当注册信息出错后没有提示信息呢?肯定是相关的验证功能没有执行,以前的执行了,现在没执行,

相关主题
文本预览
相关文档 最新文档