Struts2(下)

资费列表
需求描述 
.资费管理模块:维护的是由电信业务中资费的标准,类似于办理手机号时选择的套餐
.查询功能:是使用列表的方式将维护好的资费数据进行展现

查询功能要求
.按列表形式展现数据,只显示一部分列
.状态字段数据库中存放的是char(1),即0(开通),1(暂停),页面上需要显示出中文含义
.具有分页功能,该功能视具体情况添加

开发思路:
.在浏览器地址栏输入url可以查询资费
.点击页码也可以查询资费
.上诉方式都是针对资费的查询,只是条件发生了变化,因此可以使用一种请求来处理查询功能

开发步骤
1.entity
.根据资费表COST,创建与其对应的实体类Cost

2.DAO
.创建资费模块DAO接口ICostDao.java
.声明查询资费方法
-List<Cost> findAll();
.创建DAO实现类CostDaoImpl,实现ICostDao接口.
-目前阶段的重点在于Struts2的使用,Dao采用模拟的方式模拟实现即可

3.Action
.创建处理查询请求的Action,即findAction
.定义输入属性
-Action需要JSP传入的参数,称为输入属性
-当前案例中不需要输入属性
.定义输出属性
-Action需要传出给JSP的参数,称为输出属性
-当前案例中输出属性为List<Cost> costs;
.根据输入算输出
-Action是业务控制器,其本质就是根据输入算输出
-当前案例中,只需要调用Dao查询出资费数据,并且赋值给输出属性即可

4.struts.xml
.在struts.xml中,配置一个新的package,专门用于封装资费模块中的action
.在当前包下,注册查询的Action

5.JSP
使用jstl循环标签,循环输出内容
 
OGNL
什么是OGNL
Object Graph Navigation Language,是一门功能强大的表达式语言,类似于EL

为什么要用OGNL
.OGNL表达式功能强大
.Struts2默认采用OGNL表达式访问Action的数据,实际上是通过ValueStacl对象来
访问的Action

OGNL
.OGNL是独立的开源组件
.Struts2对其进行了改造和封装,可以参考ValueStacl

OGNL用法
.Struts2中,OGNL表达式要结合Struts2标签来访问数据

8种OGNL的使用方法.
1.访问基本属性
1.1在action中追加基本属性并初始化,同时提供get和set方法

2.访问实体对象

3.访问数组/集合
改成OGNL标签

4.访问Map

5.运算

6.调用方法
可以在OGNL中调用返回值所具备的方法

7.创建集合
使用OGNL表达式创建一个临时集合并输出

8.创建Map
使用OGNL表达式创建一个临时Map并输出

如何获取Session
.获取的session的方式
.ActionContext
-ActionContext.getContext().getSession
-返回类型为Map<String,Object>

.ServletActionContext
-ServletActionContext.getRequest.getSession();
-返回类型为HttpSession

.SessionAware
-让Action实现SessionAware接口
-实现void setSession(Map<String,Object> session)方法
Struts2会在实例化Action后调用该方法,通过方法参数将Session对象注入进来
-定义成员变量,接收注入进来的Session对象

各种方式的对比
.返回类型的对比
-第一和第三种方式,获取的session是Map<String,Object>类型Struts2采用该类型的目的
是简化session,session本身的存储结构和Map是一致的.
-第二种方式获取的是HttpSession,为了保持兼容性.
.获取凡是对比
-第一和第二种是我们主动获取Session
-第三种是采用注入的方式注入session,这种方式是被动的

.推荐使用第三种
-采用注入思想,更为灵活
-面向接口编程符合时代潮流

常用的result
result标签type属性的若干值如下:
dispatcher:用于转发的result,可以将请求转发给JSP
在这之前我们使用的result都是这种默认的result
该默认行为是定义result,通过default="true"指定的

redirectAction
.用于将请求重定向给另外一个Action

拦截器:
1.1作用:
拦截器的用途:拦截器适合封装一些通用处理,例如请求参数传递给action的属性,日志的记录,
权限检查,事务处理等待,拦截器是通过配置方式调用的,因此使用方法比较灵活,便于维护和
扩展
Struts2框架下如何创建拦截器
1.创建拦截器组件
    public String intercept(ActionInvocation invocation) throws Exception {
//        拦截器--前部分处理
        invocation.invoke();
//        拦截器--后续处理
            return null;
        }
        
2.注册拦截器
在Struts2.xml中,注册拦截器
<interceptors>
        <interceptor name="别名" class="实现类"></interceptor>
</interceptors>    

3.引用拦截器
.如果那个Action希望被拦截器扩展,需要在此action引用拦截器

<action>
    <interceptor-ref name="拦截器">
    ..可以引用多个
</action>

--练习:拦截器的HelloWorld

拦截器是在实例化action之后调用业务方法之前开始调用的

猜你喜欢

转载自blog.csdn.net/CXY_ZPH/article/details/86633023
今日推荐