视图

srczh.jar视图层是框架中输出到展示给客户端的内容、包含srczh.js、srczh.css、这章涵盖了框架在视图中的几大使用要点,从数据输出到标签数据之间的绑定、格式化、模板输出以及加密输出等功能。

src标签

src标签是框架中提供的一种全新标签功能,也是视图层中的核心展示类技术,抛弃jsp定义与约束,因为这个特性,开发人员完全可以把前端设计人员的设计的静态页面拿来使用,这将在确认业务需求、原型设计、到前后端开发融合环节及开发中大大提升效率,而且不仅可以适用于各类语言html,还可以是css、js、word、json等任意文字模板,系统也因这个功能可将页面定义任意文件类型。

src标签介绍

src_import<src_import url="..."></src_import>页面转向“...”页面重定向请求可以是静态和动态地址
src_include<src_include url="..."></src_include>页面包含“...”包含请求可以是静态和动态地址
src_bind{[...]}基本输出"..."输出绑定变量,支持众多数据类型
src_list <src_list name="...">***</src_list> 数据遍历"..."为绑定变量名,"***"为迭代html代码,迭代过程中支持条件标签格式化标签和绑定标签
src_if <src_if whe="...">***</src_if> 条件判断"..."为判断条件,条件为真输出"***"部分html代码
src_ifelse <src_ifelse whe="...">***<src_else>***</src_ifelse> 条件判断"..."为判断条件,条件为真输出第一"***"部分html代码,
条件为假输出第二"***"部分
src_fmt <src_fmt name="..." type="***"></src_fmt> 格式化输出"..."为绑定数据,"***"为格式化类型
src_when <src_when name="..." whe="***" ></src_when> 按字典输出"..."为变量名称,"***"为字典
src_out <src_out type="...">***</src_out> 转义输出"..."为转义类型,"***"为输出内容
keep 原样输出增加keep属性使标签不被解析原样输出,这样在做示例的时候非常有用

使用案例及说明

src_bind

向页面或文件输出控制器传入的变量内容,使用{[]},一对花括号中间中括号包含输出变量。该变量可以是基础数据或bean、map、json、session。

绑定对象以及属性

控制器中使用srcBind(数据对象)进行输出绑定或者使用SrcView对象进行数据输出绑定。

数据类型绑定方式说明
Map{[map]}输出一个map对象
{[map.key]}输出map对象中该key的值
{[map(key)]}输出一个map对象的所有key
{[map(val)]}输出一个map对象的所有value
{[map(length)]}输出一个map对象的元素数量
List{[list]}输出一个list对象,通常在迭代标签中使用List对象
{[(string)]}迭代中以字符形式输出List中包含对象
{[list.length]}输出一个list对象的长度
{[list(数字)]}输出一个list中对应数字下标的对象
Array{[arr]}输出一个Array对象
{[(string)]}迭代中以字符形式输出Array中包含对象
{[arr(length)]}输出一个数组对象的长度
{[arr(数字)]}输出一个数组中对应数字下标的对象
javaBean{[bean]}输出一个实体对象
{[bean.属性]}输出一个实体中对应属性的值
{[bean(属性)]}优先输出固定属性,实体属性值输出请使用点{[bean.属性]}
{![**]}绑定标签中加入!使标签不被解析,原样显示输出,这样用于演示示例
绑定标签固定属性

注意,固定属性在小括号中:{[对象(固定属性)]}

属性名称适用类型说明
(index)List,Array数据索引值,通常在迭代中使用
(length)Map,List,Array数据长度,适用容器数据
(string)Map,List,Array直接将迭代对象以字符输出
(数字)List,Array数据下标,通常在迭代中使用
(key)MapMap中的所有key值
(val)MapMap中的所有value值
标签使用域
使用域示例说明
request{[...]}每一次请求中
session{[$...]}每一次会话中
Appliction{[@...]}全局任何时候
src_import

页面重定向到地址“/src/index”

1
<src_import url="/src/index"></src_import>
src_include

页面中包含一个top页面“/src/index/top”,

1
<src_include url="/src/index/top"></src_include>
src_list

src_list可以将一个列表数据、数组、等数据循环展现到页面,可以在html、word、cvs、js、css等任意页面文件任意位置出现,该标签只有name一个属性,可以包含其它标签。

1
<src_list name="ulst"></src_list>
src_if

src_if标签为条件表达式标签,属性whe中用来表达其结果是否true或false,为true则输出标签体中间内容,为fasle的时候不显示。 条件表达式 表示session中UINTRO的属性是否==null

1
<src_if whe="{[num]}>0">{[num]}</src_if>
1
<src_if whe="{[$userSession.UINTRO]}==null">这家伙不懒,但什么也没有留下 </src_if>
src_ifelse

src_ifelse标签为条件表达式标签,可以表达ture和false两种情况。

1
<src_ifelse whe="{[$userSession.UINTRO]}==null">这家伙不懒,但什么也没有留下<src_else>{[$userSession.UINTRO]}</src_ifelse>

表达式中第一字符$表示该属性在session对象中

src_fmt
1
<src_fmt name="{[$weblogin.CDATE]}" type="yyyy-MM-dd HH:mm"></src_fmt>

src_fmt格式化标签 type 属性说明

时间类型yyyy-MM-dd HH:mm:ss支持所有时间类型格式化
***时间简化 如下:
*分钟前
*小时前
*天前
*月前
*年前
数字类型#,###.000金额计数法
+++数量简化 如下:
*K+
*W+
*KW+
*E+
.E+
src_when

src_when字典标签使用以及属性whe说明
若name属性中变量a数据是1,则输出“zhou”;若是2输出“zhang”;3则输出“jun”。

1
<src_when name="{[a]}" whe="1:zhou;2:zhang;3:jun"></src_when>
src_out

src_out转义输出标签使用
很多时候开发web程序的时候面临一个输出html标签数据影响到页面的显示,这个时候需要对数据进行转义,src_out标签很好的解决了这个问题,还支持转unicode编码,这个标签还有很大的扩展空间,你想到什么功能没有。

1
<src_out type="unicode">{[a]}</src_out>

属性type说明

html输出数据进行html标签转义
unicode输出字符转成unicode转码
notunicode将unicode数据转成字符
sensitive敏感字符输出
operation加入运算输出能力,可以是语法运算及数学运算

数据绑定

把页面中的参数于控制器中的实体对象或数据类型对象相互绑定,这里在控制器中直接返回数组方式绑定输出User对象。

绑定说明

表单提交的数据绑定,设置一个实体类,当然直接使用参数用map接收也是可以的,下面示例一个简单的绑定介绍。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
public class User {
 
    private String id;
    private String uname;
    private String tel;
     
    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
    public String getUname() {
        return uname;
    }
    public void setUname(String uname) {
        this.uname = uname;
    }
    public String getTel() {
        return tel;
    }
    public void setTel(String tel) {
        this.tel = tel;
    }
     
}

表单中使用用户实体类做绑定实例

1
2
3
4
5
 <form action="/src/login/regis" method="post">
    <input type="text" name="user.uname" >
    <input type="text" name="user.tel" >
    <input type="submit" value="注册" >
 </form>

控制器中定义绑定对象实例user,这里可以不用get、set

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
@SuppressWarnings("all")
public class LoginAction extends SrcAction{
     
    //申明业务层注入对象
    private LoginDao ldao;
     
    //需要绑定的参数对象
    private User user;
     
     
    /**
     * 跳转到注册页面
     */
    public Object[] regis(){
        if(user!=null) {
            user=ldao.regis(user);
        }
             
        //返回注册页面以及注册完成的user对象
        return new Object[] {"/html/toRegis.html",user};
    }
     
}

Dao中查询可以直接传对象实例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
/** 绑定用户注册 */
public User regis(User user) {
    SrcJdbc jdbc=new SrcJdbc();
    jdbc.Object="src_userinfo";//将要访问的表名
    jdbc.return="ID";
    user.setId("SEQ_USERINFO.NEXTVAL");//oracle 数据库中如主键使用序列
    try {
        //新增后直接返回id号
        int id=this.srcDao.insert(jdbc, user);
        user.setId(id+"");  //成功后将返回的id写回实体类
    catch (SQLException e) {
        e.printStackTrace();
        Slog.error("用户实体注册失败:"+e.getMessage());  //记录失败日志
        user.setId("");//失败的情况,id为无
    }
    return user;
}
展示对象

将一个对象和展示页面输出绑定,更多输出绑定请查看[src标签]段落。

1
2
3
4
5
6
 <form action="/src/login/regis" method="post">
   <input type="hidden" name="user.id" value="{[user.id]}">
    <input type="text" name="user.uname" value="{[user.uname]}">
    <input type="text" name="user.tel" value="{[user.tel]}">
    <input type="submit" value="注册" >
 </form>
子页面

srczh.jar框架中使用子页面碎片,页面组合展示可以直接使用标签src_includer,包含中的碎片文件支持src标签数据绑定
属性url中可以是静态或动态地址

1
2
3
4
5
6
<!-- 用法示例 -->
<div class="top"><src_include url="/top.html"></src_include></div>
 
<div class="cent"><src_include url="/cent.html"></src_include></div>
 
<div class="foot"><src_include url="/foot.html"></src_include></div>

word模板使用,是将创建好的word文件另存为doc后,使用ultaEdit或其它字符工具打开,找到你每个需要替换的字符使用标签替代,除了src_import,src_includer其它标签都可以支持使用,导出方法可以查看章节[控制器-响应][导出doc]

1
2
3
4
5
6
<!-- 用法示例 -->
<w:r>
<w:rPr><w:rFonts w:hint="eastAsia"/><w:sz w:val="21"/><w:szCs w:val="21"/>
<w:lang w:val="en-US" w:eastAsia="zh-CN"/></w:rPr>
<w:t>{[docname]}</w:t>
</w:r>

js输出加密

配置及使用

srczh.jar可以给输出到客户端的javaScript代码进行加密,但是文件却不会加密,还可以在配置文件控制加密,或自行加密文件,对于开发调试到生产阶段有非常好的灵活性

配置文件中打开配置

1
2
3
4
#加密输出javascript 默认false 
src.encryScript=true
#指定文件加密,多文件使用逗号隔开 
src.encryScript_file=login.js

在页面中引入js文件 “/js/login.js”

1
2
3
4
<script type="text/javascript" src="/js/login.js"></script>
<script type="text/javascript">
    hello("login");
</script>

访问页面中查看其输出内容

加密javascript

通过浏览器下载它

加密javascript

查看发布路径中的源文件还是原样子

加密javascript

请您对本章评分:
2016 - 2021 © srczh.com 版权所有 增值电信经营许可:粤ICP备19068081号
深圳市中文远星科技有限公司