第1章 Struts 2概述 (1)
1.1 Java Web开发模式的变革 (2)
1.1.1 使用Servlet开发Java Web应用 (2)
1.1.2 使用JSP开发Java Web应用 (6)
1.1.3 使用MVC模式开发Java Web应用 (8)
1.1.4 使用MVC框架开发Java Web应用 (12)
1.2 Struts 2框架 (13)
1.3 Struts 2的特点 (13)
1.4 Struts 2的下载 (14)
1.4.1 Struts 2下载文件说明 (15)
1.4.2 运行Struts 2中的例子 (15)
1.5 使用MyEclipse编写Struts 2项目 (16)
1.5.1 新建Web项目,增加Struts 2类库 (16)
1.5.2 web.xml文件 (18)
1.5.3 编写login.jsp (19)
1.5.4 编写loginAction.java (20)
1.5.5 编写loginResult.jsp (21)
1.5.6 编写struts.xml (22)
1.5.7 项目部署后的运行效果 (23)
本章小结 (24)
习题 (24)
第2章 编写Struts 2的action (25)
2.1 Struts 2的action (26)
2.2 Action接口 (27)
2.3 ActionSupport (28)
2.3.1 使用ActionSupport的validate()方法 (29)
2.3.2 使用POJO对象接收视图传递的参数 (31)
2.4 ActionContext (35)
2.4.1 通过ActionContext对象获取HttpSession对象 (36)
2.4.2 通过ActionContext对象获取ServletContext对象 (36)
2.4.3 通过ActionContext对象获取请求参数 (37)
2.4.4 使用ActionContext的实例 (37)
2.5 ServletActionContext (39)
2.6 IoC方式获取Servlet API中的对象 (41)
2.6.1 IoC方式获取HttpSession对象 (41)
2.6.2 IoC方式获取HttpServletRequest对象 (42)
2.6.3 IoC方式获取HttpServletRespose对象 (42)
本章小结 (43)
习题 (43)
第3章 Struts 2的配置 (44)
3.1 Struts 2的架构 (45)
3.2 web.xml中配置Struts 2的过滤器 (46)
3.3 struts.xml的配置 (47)
3.3.1 struts.xml文件的DTD (48)
3.3.2 action的配置 (50)
3.3.3 为action设置参数 (51)
3.3.4 action的别名 (52)
3.3.5 result的配置 (54)
3.3.6 result的类型 (55)
3.3.7 全局result的设置 (56)
3.3.8 package (56)
3.3.9 namespace (57)
3.3.10 使用include标签 (58)
3.3.11 struts-default.xml (59)
3.4 开发guestbook V3.0 (68)
3.4.1 建表 (68)
3.4.2 在Tomcat 7中设置数据库连接池 (69)
3.4.3 创建guestbookv3.0项目 (70)
3.4.4 编写StringUtil.java文件 (71)
3.4.5 编写Guestbook.java文件 (72)
3.4.6 编写GuestbookDao.java文件 (74)
3.4.7 编写GuestbookDaoJdbc.java文件 (74)
3.4.8 编写GuestbookAction.java文件 (77)
3.4.9 修改web.xml文件 (79)
3.4.10 修改struts.xml文件 (79)
3.4.11 编写header.jsp文件 (80)
3.4.12 编写footer.htm文件 (80)
3.4.13 编写error404.htm文件 (81)
3.4.14 编写error500.jsp文件 (81)
3.4.15 使用JSValidation (82)
3.4.16 使用CKEditor (84)
3.4.17 编写addMessage.jsp文件 (89)
3.4.18 编写getMessages.jsp文件 (91)
3.4.19 编写addResult.jsp文件 (92)
3.4.20 程序运行输出效果 (92)
本章小结 (94)
习题 (94)
第4章 Struts 2中的拦截器 (95)
4.1 拦截器(Interceptor) (96)
4.2 编写与配置拦截器 (96)
4.2.1 实现Interceptor接口 (96)
4.2.2 继承AbstractInterceptor 抽象类 (97)
4.2.3 在struts.xml中配置拦截器 (97)
4.3 编写计算action运行时间的拦截器 (98)
4.3.1 新建Java Web项目 (98)
4.3.2 编写TimerInterceptor.java文件 (98)
4.3.3 在struts.xml中配置拦截器 (99)
4.3.4 编写被拦截的action (100)
4.3.5 编写login.jsp和loginResult.jsp文件 (101)
4.3.6 项目运行输出效果 (101)
4.4 Struts 2中内置的拦截器 (101)
4.5 为拦截器设置参数 (103)
4.6 拦截器栈(Interceptor Stack) (104)
4.6.1 struts.xml配置拦截器栈 (104)
4.6.2 Struts 2中自带的拦截器栈 (105)
4.6.3 使用Struts 2自带的拦截器栈 (105)
4.6.4 Struts 2中默认的拦截器栈 (106)
4.7 编写对action进行日志记录的拦截器 (106)
4.7.1 新建Java Web项目 (107)
4.7.2 编写LogInterceptor.java文件 (107)
4.7.3 编写RegisterAction.java文件 (108)
4.7.4 编写result.jsp文件 (108)
4.7.5 编写login.jsp和loginResult.jsp文件 (109)
4.7.6 struts.xml中配置拦截器 (109)
4.7.7 项目运行输出效果 (110)
本章小结 (110)
习题 (110)
第5章 OGNL (111)
5.1 OGNL概述 (112)
5.2 OGNL表达式 (112)
5.2.1 对POJO对象的访问 (112)
5.2.2 对ActionContext中变量的访问 (113)
5.2.3 使用操作符号 (113)
5.2.4 对集合、数组的访问 (113)
5.2.5 构造List或者Map对象 (114)
5.2.6 投影 (114)
5.2.7 选择 (114)
5.2.8 this指针 (114)
5.2.9 OGNL表达式中“%”的使用 (115)
5.2.10 OGNL表达式中“$”的使用 (115)
5.3 演示Struts 2中OGNL表达式的使用 (116)
5.3.1 新建Java Web项目 (116)
5.3.2 编写Address.java文件 (116)
5.3.3 编写Profile.java文件 (117)
5.3.4 编写User.java文件 (118)
5.3.5 编写Product.java文件 (119)
5.3.6 编写UserAction.java文件 (119)
5.3.7 编写ProductAction.java文件 (120)
5.3.8 编写user.jsp文件 (121)
5.3.9 编写products.jsp文件 (123)
5.3.10 修改struts.xml文件 (124)
5.3.11 项目运行输出效果 (124)
本章小结 (125)
习题 (125)
第6章 Struts 2的标签库 (126)
6.1 使用Struts 2的标签 (127)
6.2 非UI的标签 (127)
6.3 UI标签 (147)
本章小结 (163)
习题 (163)
第7章 Struts 2文件上传与下载 (164)
7.1 上传单个文件 (165)
7.1.1 上传单个文件的实例 (165)
7.1.2 设置上传文件的临时目录 (170)
7.1.3 设置上传文件的大小 (170)
7.1.4 限制上传文件的类型 (171)
7.2 上传多个文件 (173)
7.3 文件下载 (178)
7.3.1 文件下载实例(一) (179)
7.3.2 文件下载实例(二) (183)
本章小结 (188)
习题 (188)
第8章 Struts 2的国际化 (189)
8.1 国际化的概念 (190)
8.2 Struts 2的国际化 (190)
8.3 国际化资源文件 (190)
8.4 JSP页面的国际化 (191)
8.4.1 <s:text>标签 (191)
8.4.2 输出带占位符的国际化信息 (192)
8.4.3 <s:i18n>标签 (192)
8.4.4 <s:property>标签 (193)
8.4.5 表单标签中应用国际化 (193)
8.5 action类中应用国际化 (193)
8.6 国际化的实例(一) (194)
8.6.1 新建Java Web项目 (194)
8.6.2 编写loginAction.java文件 (194)
8.6.3 编写login.jsp文件 (195)
8.6.4 编写loginResult.jsp文件 (196)
8.6.5 编写messages_en_US.properties文件 (196)
8.6.6 编写messages_zh_CN.properties文件 (197)
8.6.7 修改struts.xml文件 (197)
8.6.8 部署项目运行 (198)
8.7 用户自主选择语言 (199)
8.8 国际化的实例(二) (199)
8.8.1 新建Java Web项目 (199)
8.8.2 编写loginAction.java文件 (200)
8.8.3 编写lang.jsp文件 (200)
8.8.4 编写loginForm.jsp文件 (201)
8.8.5 编写loginResult.jsp文件 (201)
8.8.6 编写messages_en_US.properties文件 (202)
8.8.7 编写messages_zh_CN.properties文件 (202)
8.8.8 修改struts.xml文件 (203)
8.8.9 部署项目运行 (203)
本章小结 (204)
习题 (204)
第9章 Struts 2的校验框架 (205)
9.1 使用validate()和validateXxx()方法校验 (206)
9.2 Struts 2的校验框架 (208)
9.3 使用Struts 2校验框架的实例(一) (209)
9.3.1 新建Java Web项目 (209)
9.3.2 编写login.jsp文件 (209)
9.3.3 编写loginResult.jsp文件 (210)
9.3.4 编写loginAction.java文件 (210)
9.3.5 编写loginAction-validation.xml文件 (211)
9.3.6 修改struts.xml文件 (212)
9.3.7 实例运行输出效果 (212)
9.4 实现客户端校验 (214)
9.5 13种校验器的说明 (214)
9.5.1 使用required校验器的示例 (215)
9.5.2 使用requiredstring校验器的示例 (216)
9.5.3 使用stringlength校验器的示例 (216)
9.5.4 使用int校验器的示例 (217)
9.5.5 使用double校验器的示例 (217)
9.5.6 使用date校验器的示例 (218)
9.5.7 使用email校验器的示例 (218)
9.5.8 使用url校验器的示例 (219)
9.5.9 使用fieldexpression校验器的示例 (219)
9.5.10 使用regex校验器的示例 (219)
9.5.11 使用conversion校验器的示例 (220)
9.5.12 使用expression校验器的示例 (220)
9.5.13 使用visitor校验器的示例 (221)
9.6 使用Struts 2校验框架的实例(二) (221)
9.6.1 新建Java Web项目 (221)
9.6.2 编写register.jsp文件 (221)
9.6.3 编写result.jsp文件 (222)
9.6.4 编写RegisterAction.java文件 (223)
9.6.5 编写RegisterAction-validation.xml文件 (224)
9.6.6 修改struts.xml文件 (224)
9.6.7 实例运行输出效果 (225)
9.7 使用Struts 2校验框架的实例(三) (226)
9.7.1 新建Java Web项目 (226)
9.7.2 编写register.jsp文件 (226)
9.7.3 编写result.jsp文件 (227)
9.7.4 编写User.java文件 (228)
9.7.5 编写UserAction.java文件 (229)
9.7.6 编写UserAction-register-validation.xml文件 (230)
9.7.7 修改struts.xml文件 (231)
9.7.8 实例运行输出效果 (232)
9.8 使用校验框架实现AJAX方式校验 (232)
9.9 使用Struts 2校验框架的实例(四) (232)
9.9.1 新建Java Web项目 (233)
9.9.2 编写register.jsp文件 (233)
9.9.3 编写result.jsp文件 (234)
9.9.4 编写User.java文件 (234)
9.9.5 编写UserAction.java文件 (234)
9.9.6 编写UserAction-register-validation.xml文件 (235)
9.9.7 修改struts.xml文件 (235)
9.9.8 实例运行输出效果 (235)
9.10 校验框架应用国际化 (235)
9.11 使用Struts 2校验框架的实例(五) (236)
9.11.1 新建Java Web项目 (236)
9.11.2 编写login.jsp文件 (236)
9.11.3 编写loginResult.jsp文件 (236)
9.11.4 编写loginAction.java文件 (237)
9.11.5 编写loginAction-validation.xml文件 (238)
9.11.6 编写messages_en_US.properties文件 (238)
9.11.7 编写messages_zh_CN.properties文件 (239)
9.11.8 修改struts.xml文件 (239)
9.11.9 实例运行输出效果 (240)
本章小结 (241)
习题 (241)
第10章 使用Struts 2 Annotations简化配置 (242)
10.1 Struts 2项目的“0”配置 (243)
10.2 实现“0”配置的实例 (243)
10.2.1 新建Java Web项目 (243)
10.2.2 编写LoginUser.java文件 (244)
10.2.3 编写login-user-input.jsp文件 (245)
10.2.4 编写login-user.jsp文件 (245)
10.2.5 编写index.jsp文件 (246)
10.2.6 项目部署运行 (246)
10.3 Struts 2中的注解 (246)
10.3.1 @Action (246)
10.3.2 @Actions (247)
10.3.3 @Result和@Results (247)
10.3.4 @Namespace (248)
10.3.5 @InterceptorRef和@InterceptorRefs (248)
10.3.6 @ResultPath (249)
10.3.7 @ParentPackage (249)
10.3.8 @ExceptionMapping和@ExceptionMappings (250)
10.4 使用Struts 2 Annotations的实例 (250)
10.4.1 新建Java Web项目 (250)
10.4.2 编写LoginAction.java文件 (251)
10.4.3 编写login.jsp文件 (251)
10.4.4 编写result.jsp文件 (252)
10.4.5 项目部署运行 (253)
本章小结 (253)
习题 (253)
第11章 网络博客系统 (254)
11.1 系统需求分析 (255)
11.1.1 确定用户 (255)
11.1.2 系统的功能 (255)
11.2 系统设计 (256)
11.2.1 系统架构设计 (256)
11.2.2 数据库设计 (257)
11.2.3 域模型的设计 (263)
11.2.4 持久层设计 (263)
11.2.5 业务逻辑层的设计 (264)
11.2.6 表现层的设计 (265)
11.2.7 action类的设计 (266)
11.2.8 权限控制的设计 (267)
11.2.9 分页设计 (267)
11.2.10 数据校验的设计 (271)
11.2.11 订阅博客功能的设计 (273)
11.2.12 开发环境的设定 (273)
11.2.13 Java包名与组织结构的设计 (273)
11.3 编码实现 (274)
11.3.1 建立项目 (274)
11.3.2 域模型代码 (274)
11.3.3 持久层相关的代码 (277)
11.3.4 业务逻辑层相关的代码 (288)
11.3.5 表现层相关的代码 (298)
11.4 部署运行网络博客系统 (318)
本章小结 (319)
习题 (319)