第03章 Struts2应用 课堂
- 格式:ppt
- 大小:1.48 MB
- 文档页数:102


第八章 Struts2的综合应用
目标
进一步熟悉Struts2的各个技术要点
能自己动手完成一个Struts2的简单应用
8.1 使用MYSQL建立一张数据库表
这里我们使用图形界面的sql工具SQLyog生成数据库表。
图8.1
如图所示,我们在脚本区域就是红色方框所在的位置输入我们的Sql语句,接着在红圈的位置按下“>>”,我们就能生成我们想要的表。
图8.2
如图所示我们在test数据库下生成了一张表user,在下面的红色方框中我们可以很清生成的表user 楚的看到有3个字段,其中主键为“id”,还有2个字段为“username”,“password”。
8.2 建立项目总框架
为了使业务逻辑和控制分离,我们使用了MVC的设计模式。
框架图如下:
图8.3
相应的我们把项目的架构先搭建好,如图所示
图8.4
在我用红圈标出的地方,我们可以看到有3个文件夹web,model,dao,我们把action放在web下,把数据模型放在model下,把和数据库交互的类放在dao下,这样做层次清晰,可以使编码工作变得有据可循。下图为例子。 Web
Dao Model Jsp 图8.5
接着我们可以看到这里有个以“I”开头的文件,他是干什么用的呢,其实他是一个接口,对接口编程可以使我们的代码更为健壮。下面的章节我们会详细解释这种技术。
8.3 实施项目编码
在我们搭好的框架中我们将会一步一步的实现一个用户管理系统。主要的作用是对数据库表user进行增删改查。
首先我们要建立数据库的连接,以及数据库表模型。
示例8.1 User.java
package com.ntc.sample.sshsample2.model;
/**
* User entity.
*
* @author MyEclipse Persistence Tools
*/
public class User implements java.io.Serializable {
常用的MVC框架
目前常用的MVC框架,除了Struts 2的两个前身外,还有一些非常流行的MVC框架,这些框
架都提供了较好的层次分隔能力。在实现良好的MVC 分隔的基础上,还提供一些辅助类库,
帮助应用的开发。
目前常用的MVC框架还有如下一些。
1.JSF
准确地说,JSF是一个标准,而不是一个产品。目前,JSF已经有两个实现产品可供选择,包含
Sun的参考实现和Apache的MyFaces。大部分的时候,我们所说的JSF都是指Sun的参考实现。
目前,JSF是作为JEE 5.0的一个组成部分,与JEE 5.0一起发布。
JSF的行为方法在POJO中实现,JSF的Managed Bean无需继承任何特别的类。因此,无需在
表单和模型对象之间实现多余的控制器层。JSF中没有控制器对象,控制器行为通过模型对象
实现。
当然,JSF也允许生成独立的控制器对象。在Struts 1中,Form Bean包含数据,Action Bean包
含业务逻辑,二者无法融合在一起。在JSF中,既可以将二者分开,也可以合并在一个对象中,
提供更多灵活的选择。
JSF的事件框架可以细化到表单中每个字段。JSF依然是基于JSP/Servlet的,仍然是JSP/Servlet
架构,因而学习曲线相对简单。在实际使用过程中,JSF也会存在一些不足:
— 作为新兴的MVC框架,用户相对较少,相关资源也不是非常丰富。
— JSF并不是一个完全组件化的框架,它依然是基于JSP/Servlet架构的。
— JSF的成熟度还有待进一步提高。
2.Tapestry
Tapestry并不是一种单纯的MVC框架,它更像MVC框架和模板技术的结合,它不仅包含了前
端的MVC框架,还包含了一种视图层的模板技术,使用Tapestry完全可以与Servlet/JSP API
分离,是一种非常优秀的设计。
通过使用Tapestry,开发者完全不需要使用JSP技术,用户只需要使用Tapestry提供的模板技术
实验三 Struts 2 的应用
一. 目的要求
1.掌握Struts 2 通配符;
2.掌握Struts 2 接收参数的三种方式;
3.掌握Struts 2 简单数据校验的功能;
二.实验任务
1. 搭建Struts 2 的开发环境;
2. 实现用户登录。
三.实验环境、设备
计算机、Tomcat7.0、strtus2.3.4、Eclipse。
四.实验指导
(一)背景知识简述
(1) 通配符配置 * {1} {2} …
*_*
(2)接收参数的方法(一般用属性或者DomainModel来接收)
(3)简单参数验证addFieldError: 一般不使用Struts2的UI标签
(二)实验步骤
根据已学知识对实验二已经完成的用户登录模块进行优化要求如下:
(1)使用Struts2通配符实现动态方法调用。
(2)用三种方式接收参数。
(3)简单参数验证。
五.实验结果
源代码清单:
六.运行结果截图 七.回答问题
1. 已实验内容为例,简述Struts2的工作流程。
2. 使用strust,写出处理中文乱码的方法。
3. 全局结果和局部结果的区别是什么?如果全局结果和局部结果都定义了同名结果,如何处理?
4. Struts2 内建的结果类型有哪些?什么是默认的结果类型?
Struts2 框架第三天
今天重点内容安排 :
第一天: struts2 开发流程、 访问Action, Action方法调用, 结果集类型
第二天: 获取请求参数, 请求数据校验机制, 拦截器
1、 ValueStack 值栈的存储原理和相关操作
2、 Ognl 表达式语言语法
3、 struts2 页面控制标签
4、 struts2 form表单相关标签
重点难点: 值栈和Ognl
1. 值栈和Ognl表达式
1.1. 什么是Ognl
Ognl 对象导航图语言 Object Graphic Navigation Language, 类似EL,比EL ${}语法要强大很多, Struts2框架使用OGNL作为默认的表达式语言 必须要引入struts标签库
EL Expression Language 表达式语言, 用来获取 JSP页面四个域范围数据
pageContext、 request、 session、 application )
Ognl 主要用法:
1、 访问OGNL上下文 值栈对象获取数据(最重要)
2、 操作集合对象 (结合struts2 标签库使用 ) ---- 生成checkbox 、生成select
1.2. 什么是值栈 ValueStack接口!
值栈ValueStack 实际上是一个接口, struts2 Ognl使用 都是基于值栈完成的
Struts2 内部提供 OgnlValueStack的 接口实现类,实现了值栈接口 !
前端控制器 每一次请求 都会创建一个值栈对象 源码:
一次请求对应一个值栈对象 值栈生命周期 = request 生命周期的!!
值栈是struts2 一个数据结构,贯穿整个Action实例生命周期 (request生命周期 ),
一次请求对应一个Action实例, 一个Action实例 对应 一个值栈实例