Browse Source

【提交内容】:场景测试

wangyj18 9 years ago
parent
commit
4961819c35

+ 11 - 0
display-server/etc/server-data.xml

8
	
8
	
9
	<action name="FileUpDownload.upload" class="com.ai.server.bean.FileUpDownload" method="upload" verify="false"></action>
9
	<action name="FileUpDownload.upload" class="com.ai.server.bean.FileUpDownload" method="upload" verify="false"></action>
10
	
10
	
11
	<!-- ##################################场景演示########################################################### -->
12
	
13
	<!-- 登录场景*******************初始化验证码 -->
14
	<action name="SceneBean.initVerifyCode" class="com.ai.server.bean.SceneBean" method="initVerifyCode" verify="false"></action>
15
	<!-- 登陆 -->
16
	<action name="SceneBean.login" class="com.ai.server.bean.SceneBean" method="login" verify="false"></action>
17
	<!-- 刷新验证码 -->
18
	<action name="SceneBean.refreshVerifyCode" class="com.ai.server.bean.SceneBean" method="refreshVerifyCode" verify="false"></action>
19
	
20
	<!-- 数据请求场景***************测试您的人品 -->
11
	<action name="SceneBean.dataRequestScene" class="com.ai.server.bean.SceneBean" method="dataRequestScene" verify="false"></action>
21
	<action name="SceneBean.dataRequestScene" class="com.ai.server.bean.SceneBean" method="dataRequestScene" verify="false"></action>
22
	
12
</datas>
23
</datas>

+ 3 - 3
display-server/etc/server-page.xml

93
    
93
    
94
    <!-- Scene Demo -->
94
    <!-- Scene Demo -->
95
	<action name="Scene" template="template/webapp/scene/Scene.html"></action>
95
	<action name="Scene" template="template/webapp/scene/Scene.html"></action>
96
	<action name="Login" template="template/webapp/scene/Login.html"></action>
97
	<action name="DataRequest" template="template/webapp/scene/DataRequest.html"></action>
98
	<action name="TemplateRedirect" template="template/webapp/scene/TemplateRedirect.html"></action>
96
	<action name="SceneBean_login_init" template="template/webapp/scene/Login.html"></action>
97
	<action name="SceneBean_dataRequest" template="template/webapp/scene/DataRequest.html"></action>
98
	<action name="SceneBean_templateRedirect" template="template/webapp/scene/TemplateRedirect.html"></action>
99
	<action name="PageRedirect" template="template/webapp/scene/PageRedirect.html"></action>
99
	<action name="PageRedirect" template="template/webapp/scene/PageRedirect.html"></action>
100
	<action name="TemplateRefresh" template="template/webapp/scene/TemplateRefresh.html"></action>
100
	<action name="TemplateRefresh" template="template/webapp/scene/TemplateRefresh.html"></action>
101
	<action name="PageRefresh" template="template/webapp/scene/PageRefresh.html"></action>
101
	<action name="PageRefresh" template="template/webapp/scene/PageRefresh.html"></action>

+ 156 - 4
display-server/src/com/ai/server/bean/SceneBean.java

1
package com.ai.server.bean;
1
package com.ai.server.bean;
2

2

3
import java.awt.image.BufferedImage;
4
import java.util.Random;
5

3
import com.ai.server.core.bean.DisplayBean;
6
import com.ai.server.core.bean.DisplayBean;
7
import com.ai.server.core.context.DisplayContextData;
8
import com.ai.server.core.session.DisplaySessionManager;
9
import com.ai.server.util.ImageVerify;
4
import com.ailk.common.data.IData;
10
import com.ailk.common.data.IData;
11
import com.ailk.common.data.impl.DataMap;
12
import com.ailk.mobile.util.MobileUtility;
13

14
public class SceneBean extends DisplayBean {
15

16
	/**
17
	 * 数据请求场景
18
	 * 
19
	 * @param param
20
	 * @return
21
	 * @throws Exception
22
	 */
23
	public IData dataRequestScene(IData param) throws Exception {
24
		IData result = new DataMap();
25

26
		// 获取从前台传过来的数据
27
		String data = param.getString("data");
28

29
		// 获取人品--随机数
30
		Random random = new Random();
31
		int testCharacter = random.nextInt(100);
32
		
33
		StringBuffer retMsg = new StringBuffer();
34
		if (testCharacter > 0 && testCharacter < 20) {
35
			retMsg.append("是我不好...不应该和你谈人品问题的...");
36
		} else if (testCharacter >= 20 && testCharacter < 40) {
37
			retMsg.append("您的人品之低下实在让人惊讶啊...");
38
		} else if (testCharacter >= 40 && testCharacter < 60) {
39
			retMsg.append("您的人品太差了..稍不小心就会去干坏事了吧?");
40
		} else if (testCharacter >= 60 && testCharacter < 80) {
41
			retMsg.append("您的人品勉勉强强...要自己好自为之...");
42
		} else if (testCharacter >= 80 && testCharacter <= 100) {
43
			retMsg.append("您的人品太好了...你就是当代活雷锋啊...");
44
		}
45

46
		result.put("retName", data);
47
		result.put("retMsg", retMsg);
48
		return result;
49

50
	}
51

52
	/**
53
	 * 初始化验证码
54
	 * 
55
	 * @param param
56
	 * @return
57
	 * @throws Exception
58
	 */
59
	public IData initVerifyCode(IData param) {
60
		IData result = new DataMap();
61

62
		try {
63
			// 获取验证码
64
			String verifyCode = ImageVerify.getVerifyCode(4, 2);
65
			BufferedImage image = ImageVerify.getImageVerify(verifyCode);
66
			String imageVerifyCode = ImageVerify.getImageBase64(image);
67

68
			// 创建session
69
			DisplayContextData contextData = new DisplayContextData();
70
			String sessionId = DisplaySessionManager.getInstance()
71
					.createSession(contextData);
72
			contextData.setVerifyCode(verifyCode.toUpperCase());
73

74
			result.put("VERIFY_IMG", imageVerifyCode);
75
			result.put("SESSION_ID", sessionId);
76
		} catch (Exception e) {
77
			e.printStackTrace();
78
		}
5

79

6
public class SceneBean extends DisplayBean{
7
	
8
	public IData dataRequestScene(IData param) throws Exception{
9
		return null;
80
		return result;
10
	}
81
	}
11

82

83
	/**
84
	 * 
85
	 * @Title: refreshVerifyCode
86
	 * @Description: 刷新验证码
87
	 * @author 王玉娟
88
	 * @param prama
89
	 * @return
90
	 * @throws Exception
91
	 * @throws
92
	 */
93
	public IData refreshVerifyCode(IData prama) throws Exception {
94
		// 获取验证码
95
		String verifyCode = ImageVerify.getVerifyCode(4, 2);
96
		BufferedImage image = ImageVerify.getImageVerify(verifyCode);
97
		String imageVerifyCode = ImageVerify.getImageBase64(image);
98

99
		if (getContextData() == null) {
100
			// 创建session
101
			DisplayContextData contextData = new DisplayContextData();
102
			DisplaySessionManager.getInstance().createSession(contextData);
103
		}
104

105
		getContextData().setVerifyCode(verifyCode);
106

107
		IData result = new DataMap();
108
		result.put("VERIFY_IMG", imageVerifyCode);
109
		return result;
110
	}
111

112
	/**
113
	 * 登陆
114
	 * 
115
	 * @param param
116
	 * @return
117
	 */
118
	public IData login(IData param) {
119
		IData result = new DataMap();
120

121
		// 校验验证码是否输入正确
122
		if (!checkLoginVerifyCode(param)) {
123
			MobileUtility.error("登陆失败,验证码输入错误!");
124
			return result;
125
		}
126

127
		// 将用户信息保存至session
128
		try {
129
			getContextData().setAccount(param.getString("USER_NAME"));
130
			return getContextData().getData();
131
		} catch (Exception e) {
132
			// TODO Auto-generated catch block
133
			e.printStackTrace();
134
			return result;
135
		}
136

137
	}
138

139
	/**
140
	 * 
141
	 * @Title: checkLoginVerifyCode
142
	 * @Description: 校验登陆的验证码
143
	 * @author 王玉娟
144
	 * @param param
145
	 * @return true:验证码正确;false:验证码输入错误
146
	 * @throws
147
	 */
148
	private boolean checkLoginVerifyCode(IData param) {
149
		try {
150
			String verifyCode = getContextData().getVerifyCode();
151
			String clientVerifyCode = param.getString("VERIFY_CODE");
152
			if (clientVerifyCode == null || verifyCode == null
153
					|| !verifyCode.equalsIgnoreCase(clientVerifyCode)) {
154
				return false;
155
			}
156

157
			return true;
158
		} catch (Exception e) {
159
			// TODO Auto-generated catch block
160
			e.printStackTrace();
161
			return false;
162
		}
163
	}
12
}
164
}

+ 14 - 0
display-server/src/com/ai/server/core/context/DisplayContextData.java

6
@SuppressWarnings("serial")
6
@SuppressWarnings("serial")
7
public class DisplayContextData extends DefaultContextData{
7
public class DisplayContextData extends DefaultContextData{
8

8

9
	public DisplayContextData() {
10
		
11
	}
12

9
	public DisplayContextData(String account) {
13
	public DisplayContextData(String account) {
10
		// TODO Auto-generated constructor stub
14
		// TODO Auto-generated constructor stub
11
		getData().put(Constant.Context.ACCOUNT, account);
15
		getData().put(Constant.Context.ACCOUNT, account);
20
		// TODO Auto-generated method stub
24
		// TODO Auto-generated method stub
21
		put(Constant.Context.ACCOUNT, account);
25
		put(Constant.Context.ACCOUNT, account);
22
	}
26
	}
27
	
28
	public String getVerifyCode()
29
    {
30
        return getData().getString("VERIFY_CODE");
31
    }
32

33
    public void setVerifyCode(String verifyCode)
34
    {
35
        put("VERIFY_CODE", verifyCode);
36
    }
23
}
37
}

+ 88 - 41
display-server/src/com/ai/server/util/ImageVerify.java

1
package com.ai.server.util;
2

3
import java.awt.Color;
4
import java.awt.Font;
5
import java.awt.Graphics2D;
6
import java.awt.image.BufferedImage;
7
import java.util.Random;
8

9
public class ImageVerify {
10

11
	private static Random random=new Random();
12
	
13
	public static BufferedImage getImageVerify(String randomCode) {
14
		int width=100;
15
		int height=45;                     //验证图片的宽度,高度
16
		Color back=getBack();
17
		Color front=getFront(back);
18
		String code=randomCode;
19
        BufferedImage bi=new BufferedImage(width,height,BufferedImage.TYPE_INT_BGR);
20
        Graphics2D g=bi.createGraphics();   //得到画布
21
        g.setFont(new Font(Font.SANS_SERIF,Font.BOLD,20));  //设置字体
22
        g.setColor(back);
23
        g.fillRect(0, 0, width, height);    //画背景
24
        g.setColor(front);
25
        g.drawString(code,18,20);           //画字符
26
        for(int i=0,n=random.nextInt(20);i<n;i++){
27
        	g.fillRect(random.nextInt(width),random.nextInt(height),1,1);
28
        }                                  //产生至多20个噪点
29
        return bi;
30
	}
31
	
32
	 //得到图片背景色
33
	protected static Color getBack(){
34
		return new Color(random.nextInt(255),random.nextInt(255),random.nextInt(255));
35
	}
36
	
37
	//生成颜色的反色
38
	protected static Color getFront(Color c){
39
		return new Color(255-c.getRed(),255-c.getGreen(),255-c.getBlue());
40
	}
41
}
1
package com.ai.server.util;
2
3
import java.awt.Color;
4
import java.awt.Font;
5
import java.awt.Graphics2D;
6
import java.awt.image.BufferedImage;
7
import java.io.ByteArrayOutputStream;
8
import java.io.IOException;
9
import java.util.Random;
10
11
import javax.imageio.ImageIO;
12
13
import org.apache.commons.codec.binary.Base64;
14
15
/**
16
 * @author huangbo
17
 * 图片验证码类库
18
 */
19
public class ImageVerify {
20
	private static Random random = new Random();
21
22
	/**得到图片背景色*/
23
	private static Color getBack() {
24
		return new Color(random.nextInt(255), random.nextInt(255), random.nextInt(255));
25
	}
26
27
	/**生成颜色的反色*/
28
	private static Color getFront(Color c) {
29
		return new Color(255 - c.getRed(), 255 - c.getGreen(),
30
				255 - c.getBlue());
31
	}
32
	
33
	/**
34
	 * 图片转化成Base64编码
35
	 * @param filePath 文件过大可能内存溢出
36
	 */
37
	public static String getImageBase64(BufferedImage image) throws IOException {
38
		ByteArrayOutputStream baos = new ByteArrayOutputStream();
39
		ImageIO.write(image, "jpg", baos);
40
		byte[] jpegData = baos.toByteArray();
41
		return new String(Base64.encodeBase64(jpegData), "utf-8");
42
	}
43
	
44
	/**
45
	 * 生成校验图片
46
	 */
47
	public static BufferedImage getImageVerify(String code) {
48
		int width = 100;
49
		int height = 45; // 验证图片的宽度,高度
50
		Color back = getBack();
51
		Color front = getFront(back);
52
		BufferedImage bi = new BufferedImage(width, height, BufferedImage.TYPE_INT_BGR);
53
		Graphics2D g = bi.createGraphics(); // 得到画布
54
		g.setFont(new Font(Font.SANS_SERIF, Font.BOLD, 20)); // 设置字体
55
		g.setColor(back);
56
		g.fillRect(0, 0, width, height); // 画背景
57
		g.setColor(front);
58
		g.drawString(code, 18, 20); // 画字符
59
		for (int i = 0, n = random.nextInt(20); i < n; i++) {
60
			g.fillRect(random.nextInt(width), random.nextInt(height), 1, 1);
61
		} // 产生至多20个噪点
62
		return bi;
63
	}
64
65
	/**
66
	 * 作用:获取六位随机码
67
	 */
68
	public static String getVerifyCode(int length, int verifyCodeType) throws Exception {
69
		String num = "0123456789";
70
		String ch = "abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNOPQRSTUVWXYZ";
71
		String vc = "";
72
73
		if (verifyCodeType == 0)
74
			vc = num;
75
		else if (verifyCodeType == 1)
76
			vc = ch;
77
		else
78
			vc = num + ch;
79
80
		char[] chs = vc.toCharArray();
81
		String code = "";
82
		for (int i = 0; i < length; i++) {
83
			code += chs[(int) (Math.random() * vc.length())];
84
		}
85
		
86
		return code;
87
	}
88
}

BIN
display-server/web/biz/img/scene/test_character.png


+ 22 - 12
display-server/web/biz/js/scene/DataRequest.js

1
1
2
require(["mobile"], function(Mobile) {
2
require(["mobile"], function(Mobile) {
3
	
3
	
4
	
5
	$("#direct").tap(function(){
4
	// 测测你的人品按钮
5
	$("#testCharacter").tap(function(){
6
		
6
		
7
		var param = new Wade.DataMap();
7
		var param = new Wade.DataMap();
8
		param.put("data", $("#input-text").val());
8
		param.put("data", $("#J_username").val());
9
		
9
		
10
		Mobile.dataRequest("TestBean.reverse", param, function(result){
11
			//对于返回值result,有2种取值方式:
12
			//1.生成JSON对象
13
//			var obj = JSON.parse(result);
14
//			var textVal = obj["DATA"];
15
			
16
			//2.生成Map对象
10
		// 数据请求
11
		Mobile.dataRequest("SceneBean.dataRequestScene", param, function(result){
12
			// 获取返回的数据
17
			var obj = new Wade.DataMap(result);
13
			var obj = new Wade.DataMap(result);
18
			textVal = obj.get("DATA");
14
			var retName = obj.get("retName");
15
			var retMsg = obj.get("retMsg");
19
			
16
			
20
			$("#output-text").val(textVal);
17
			$("#retName").text(retName);
18
			$("#retMsg").text(retMsg);
19
			$("#mainTestCharacterContent").hide();
20
			$("#retTestCharacterContent").show();
21
		});
21
		});
22
	});
22
	});
23
	
24
	// 再测一次按钮
25
	$("#testCharacterAgain").tap(function(){
26
		$("#retName").text("");
27
		$("#retMsg").text("");
28
		$("#J_username").val("");
29
		$("#retTestCharacterContent").hide();
30
		$("#mainTestCharacterContent").show();
31
	});
32
	
23
});
33
});

+ 27 - 5
display-server/web/biz/js/scene/Login.js

1
require(["wmTabbar","common","mobile"], function(WmTabbar,Common,Mobile) {
1
require(["wmTabbar","common","mobile"], function(WmTabbar,Common,Mobile) {
2

3
	Common.callSvc("SceneBean.initVerifyCode", null, function(resultData){
4
		if(typeof(resultData) == "string" ){
5
			resultData = new Wade.DataMap(resultData);
6
		}
7
		$("#J_ver_img").attr("src", "data:image/png;base64, " + resultData.get("VERIFY_IMG"));
8
		// 保存session_id
9
		Common.put("SESSION_ID", resultData.get("SESSION_ID"));
10
	});
11
	
12
	// 刷新验证码
13
	$("#J_ver_img").tap(function(){
14
		Common.callSvc("SceneBean.refreshVerifyCode", null, function(resultData){
15
			if(typeof(resultData) == "string" ){
16
				resultData = new Wade.DataMap(resultData);
17
			}
18
			$("#J_ver_img").attr("src", "data:image/png;base64, " + resultData.get("VERIFY_IMG"));
19
			$("#J_ver").val("");
20
			$("#J_ver").select();
21
		});
22
	})
2
	
23
	
3
	$("#submit").tap(function(){
24
	$("#sceneLoginBtn").tap(function(){
4
		var loginData = new Wade.DataMap();
25
		var loginData = new Wade.DataMap();
5
		loginData.put("ACCOUNT", $("#userName").val());
6
		loginData.put("PASSWORD", $("#password").val());
26
		loginData.put("USER_NAME", $("#J_username").val());
27
		loginData.put("USER_PASSWORD", $("#J_pwd").val());
28
		loginData.put("VERIFY_CODE", $("#J_ver").val());
7
		
29
		
8
		Common.callSvc("LoginBean.login",loginData,function(data){
30
		Common.callSvc("SceneBean.login",loginData,function(data){
9
			console.log("结果[用户登陆]:" + data);
31
			console.log("结果[用户登陆]:" + data);
10
			//校验不正确
32
			//校验不正确
11
			if("0" != data.get("X_RESULTCODE")){
33
			if("0" != data.get("X_RESULTCODE")){
13
			
35
			
14
			//校验正确	
36
			//校验正确	
15
			}else{
37
			}else{
16
				Mobile.openPage("Basic");
38
				Mobile.tip("亲爱的【"+data.get("ACCOUNT")+"】用户,登陆成功");
17
			}
39
			}
18
		});
40
		});
19
	});
41
	});

+ 12 - 0
display-server/web/biz/js/scene/TemplateRedirect.js

1
2
require(["mobile"], function(Mobile) {
3
	
4
	// 开始游戏
5
	$("#startGame").tap(function(){
6
		
7
		// 页面跳转
8
		var param = new Wade.DataMap();
9
		Mobile.openTemplate("SceneBean_dataRequest",param);
10
	});
11
	
12
});

+ 1 - 1
display-server/web/res/js/mobile/expand-mobile.js

225
			},downloadWithServlet:function(savePath,dataAction,param,callback,err){
225
			},downloadWithServlet:function(savePath,dataAction,param,callback,err){
226
				storageCallback("downloadWithServlet",callback);
226
				storageCallback("downloadWithServlet",callback);
227
				execute("downloadWithServlet",[savePath,dataAction,param],err);	
227
				execute("downloadWithServlet",[savePath,dataAction,param],err);	
228
			}uploadFile:function(filePath,servletUrl,callback,err){
228
			},uploadFile:function(filePath,servletUrl,callback,err){
229
				storageCallback("uploadFile",callback);
229
				storageCallback("uploadFile",callback);
230
				execute("uploadFile",[filePath,servletUrl],err);	
230
				execute("uploadFile",[filePath,servletUrl],err);	
231
			},downloadFile:function(savePath,servletUrl,callback,err){
231
			},downloadFile:function(savePath,servletUrl,callback,err){

+ 80 - 21
display-server/web/template/webapp/scene/DataRequest.html

7
	{%>template/common/Head.html%}
7
	{%>template/common/Head.html%}
8
	<link href="biz/css/project.css" rel="stylesheet" type="text/css" />
8
	<link href="biz/css/project.css" rel="stylesheet" type="text/css" />
9
	<script type="text/javascript" src="biz/js/scene/DataRequest.js"></script>
9
	<script type="text/javascript" src="biz/js/scene/DataRequest.js"></script>
10
<style>
11
.ui-input {
12
	padding: 6px 9px;
13
	line-height: 0.22rem;
14
    height: 0.4rem;
15
	width: 3rem;
16
	border: 1px solid #BBBBBB;
17
	font-size: 0.22rem;
18
    color: #777;
19
    background: transparent;
20
    font-size: 0.22rem;
21
}
22
.reg_form {
23
	background-color: #fff;
24
	font-size: 0.22rem;
25
	padding-top: 0.12rem;
26
	box-shadow: 0 0.02rem 0 rgba(0,0,0,0.1);
27
    line-height: 1;
28
    border: 1px solid #ccc;
29
    overflow: hidden;
30
    background: #fff;
31
}
32
.reg_form .reg_table {
33
}
34
.reg_form .reg_table td {
35
	padding: 0 0 8px 0;
36
	height: 32px;
37
}
38
.reg_form .reg_table td label.des {
39
	text-align: right;
40
	display: table-cell;
41
    width: 1.5rem;
42
    padding: 0.16rem;
43
    line-height: 0.28rem;
44
}
45
.reg_form .reg_table .J_ver-wrap .ui-input {
46
	width: 2rem;
47
}
48
</style>
10
</head>
49
</head>
11
<body>
50
<body>
12
<div class="c_navBar">
51
<div class="c_navBar">
17
		</div>
56
		</div>
18
	</div>
57
	</div>
19
</div>
58
</div>
59

20
<div class="m_content m_content-nofooter" id="content">
60
<div class="m_content m_content-nofooter" id="content">
21
<div>
22
	<div class="c_list">
23
		<ul>
24
			<li tapfor="input-text">
25
				<div class="content">
26
					<div class="value"><input type="text" placeholder="请输入文字" id="input-text"/></div>
27
					<button class="e_button-cancel" id="direct" style="float:right">反转</button>
28
				</div>
29
			</li>
30
		</ul>
31
		<ul>
32
			<li tapfor="input-text">
33
				<div class="content">
34
					<div class="value"><input type="text" placeholder="输出内容" id="output-text"/></div>
35
					<div class="label" style="float:right"></div>
36
				</div>
37
			</li>
38
			<li></li>
39
		</ul>
40
	</div>
41
</div>
61
	<form class="reg_form">
62
		<div id="mainTestCharacterContent">
63
			<table class="reg_table" cellpadding="0" cellspacing="0" border="0" width="100%">
64
				<tbody>
65
					<tr>
66
						<td width="30%"><label class="des">输入人名:</label></td>
67
						<td><input value="" type="text" id="J_username" name="J_username" class="ui-input ui-nt" maxlength="20" title="姓名"></td>
68
					</tr>
69
					<tr>
70
						<td>&nbsp;</td>
71
						<td>
72
							<button class="e_button-ok" id="testCharacter" onclick="javascript:return false;">开始计算</button>
73
						</td>
74
					</tr>
75
				</tbody>
76
			</table>
77
		</div>
78
		
79
		<div id="retTestCharacterContent" style="display: none">
80
			<table class="reg_table" cellpadding="0" cellspacing="0" border="0" width="100%">
81
				<tbody>
82
					<tr>
83
						<td width="30%"><label class="des">您的大名:</label></td>
84
						<td id="retName"></td>
85
					</tr>
86
					<tr>
87
						<td width="30%"><label class="des">评价:</label></td>
88
						<td id="retMsg"></td>
89
					</tr>
90
					<tr>
91
						<td>&nbsp;</td>
92
						<td>
93
							<button class="e_button-ok" id="testCharacterAgain" onclick="javascript:return false;">再测一次</button>
94
						</td>
95
					</tr>
96
				</tbody>
97
			</table>
98
		</div>
99
	</form>
100
	
42
</div>
101
</div>
43

102

44
</body>
103
</body>

+ 72 - 30
display-server/web/template/webapp/scene/Login.html

7
	{%>template/common/Head.html%}
7
	{%>template/common/Head.html%}
8
	<link href="biz/css/project.css" rel="stylesheet" type="text/css" />
8
	<link href="biz/css/project.css" rel="stylesheet" type="text/css" />
9
	<script type="text/javascript" src="biz/js/scene/Login.js"></script>
9
	<script type="text/javascript" src="biz/js/scene/Login.js"></script>
10
	
11
<style>
12
.ui-input {
13
	padding: 6px 9px;
14
	line-height: 0.22rem;
15
    height: 0.4rem;
16
	width: 3rem;
17
	border: 1px solid #BBBBBB;
18
	font-size: 0.22rem;
19
    color: #777;
20
    background: transparent;
21
    font-size: 0.22rem;
22
}
23
.reg_form {
24
	background-color: #fff;
25
	font-size: 0.22rem;
26
	padding-top: 0.12rem;
27
	box-shadow: 0 0.02rem 0 rgba(0,0,0,0.1);
28
    line-height: 1;
29
    border: 1px solid #ccc;
30
    overflow: hidden;
31
    background: #fff;
32
}
33
.reg_form .reg_table {
34
}
35
.reg_form .reg_table td {
36
	padding: 0 0 8px 0;
37
	height: 32px;
38
}
39
.reg_form .reg_table td label.des {
40
	text-align: right;
41
	display: table-cell;
42
    width: 1.5rem;
43
    padding: 0.16rem;
44
    line-height: 0.28rem;
45
}
46
.reg_form .reg_table .J_ver-wrap .ui-input {
47
	width: 2rem;
48
}
49
.J_ver_img {
50
	width: 1rem;
51
	height: 0.4rem;
52
}
53
</style>
10
</head>
54
</head>
11
<body>
55
<body>
12
	<div class="c_navBar">
56
	<div class="c_navBar">
18
		</div>
62
		</div>
19
	</div>
63
	</div>
20
	
64
	
21
	<div class="c_list">
22
		<ul>
23
			<li ontap=";">
24
				<div class="content">
25
					<div class="main" id="mention"></div>
26
				</div>
27
			</li>
28
		</ul>
29
	</div>
30
	
31
	<div class="c_table">
32
		<table border="none">
33
			<tbody id="tbody">
34
				<tr>
35
					<td></td>
36
					<td><input type="text" id="userName" required placeholder="用户名"></td>
37
					<td></td>
38
				</tr>
39
				<tr>
40
					<td></td>
41
					<td><input type="password" id="password" required placeholder="密码"></td>
42
					<td></td>
43
				</tr>
44
				<tr>
45
					<td></td>
46
					<td><input type="button" value="提交" id="submit"/></td>
47
					<td><a href="#">忘记密码?</a></td>
48
				</tr>
49
			</tbody>
50
		</table>
65
	<div class="m_content m_content-nofooter" id="content">
66
		<form class="reg_form">
67
			<table class="reg_table" cellpadding="0" cellspacing="0" border="0" width="100%">
68
				<tbody>
69
					<tr>
70
						<td width="30%"><label class="des">用户名:</label></td>
71
						<td><input value="" type="text" id="J_username" name="J_username" class="ui-input ui-nt" maxlength="20" title="用户名"></td>
72
					</tr>
73
					<tr>
74
						<td><label class="des">密码:</label></td>
75
						<td><input value="" type="password" id="J_pwd" name="J_pwd" class="ui-input" maxlength="50" title="密码"></td>
76
					</tr>
77
					<tr>
78
						<td><label class="des">验证码:</label></td>
79
						<td class="J_ver-wrap">
80
							<input value="" type="text" id="J_ver" name="J_ver" class="ui-input" maxlength="4" require="true" title="验证码">
81
							<img src="" id="J_ver_img" class="J_ver_img">
82
						</td>
83
					</tr>
84
					<tr>
85
						<td>&nbsp;</td>
86
						<td>
87
							<button class="e_button-ok" id="sceneLoginBtn" onclick="javascript:return false;">登录</button>
88
						</td>
89
					</tr>
90
				</tbody>
91
			</table>
92
		</form>
51
	</div>
93
	</div>
52
</body>
94
</body>
53
</html>
95
</html>

+ 3 - 3
display-server/web/template/webapp/scene/Scene.html

21
<div>
21
<div>
22
	<div class="c_list">
22
	<div class="c_list">
23
		<ul id="scene-menu">
23
		<ul id="scene-menu">
24
			<li action="Login">
24
			<li action="SceneBean_login_init">
25
				<div class="content">
25
				<div class="content">
26
					<div class="main">
26
					<div class="main">
27
						<div class="title">登陆</div>
27
						<div class="title">登陆</div>
30
					</div>
30
					</div>
31
				</div>
31
				</div>
32
			</li>
32
			</li>
33
			<li action="DataRequest">
33
			<li action="SceneBean_dataRequest">
34
				<div class="content">
34
				<div class="content">
35
					<div class="main">
35
					<div class="main">
36
						<div class="title">数据请求</div>
36
						<div class="title">数据请求</div>
39
					</div>
39
					</div>
40
				</div>
40
				</div>
41
			</li>
41
			</li>
42
			<li action="TemplateRedirect">
42
			<li action="SceneBean_templateRedirect">
43
				<div class="content">
43
				<div class="content">
44
					<div class="main">
44
					<div class="main">
45
						<div class="title">页面跳转(直接数据渲染)</div>
45
						<div class="title">页面跳转(直接数据渲染)</div>

+ 14 - 16
display-server/web/template/webapp/scene/TemplateRedirect.html

6
	<title>页面跳转</title>
6
	<title>页面跳转</title>
7
	{%>template/common/Head.html%}
7
	{%>template/common/Head.html%}
8
	<link href="biz/css/project.css" rel="stylesheet" type="text/css" />
8
	<link href="biz/css/project.css" rel="stylesheet" type="text/css" />
9
	<script type="text/javascript" src="biz/js/scene/TemplateRedirect.js"></script>
10
<style>
11
.m_content {
12
	text-align: center;
13
}
14
.m_content img {
15
	display: inline-block;
16
	margin-bottom: 0.2rem;
17
}
18
</style>
9
</head>
19
</head>
10
<body>
20
<body>
11
<div class="c_navBar">
21
<div class="c_navBar">
16
		</div>
26
		</div>
17
	</div>
27
	</div>
18
</div>
28
</div>
19
<div class="c_submit">
20
	<ul>
21
		<li></li>
22
		<li><button class="e_button-ok" id="call">跳转</button></li>
23
		<li></li>
24
	</ul>
25
</div>
26

29

30
<div class="m_content m_content-nofooter" id="content">
31
	<img src="biz/img/scene/test_character.png" width="100%"/>	
32
	<button class="e_button-ok" id="startGame">开始游戏</button>
33
</div>
27

34

28
</body>
35
</body>
29
<script type="text/javascript">
30
require(["mobile"], function(Mobile) {
31
	
32
	$(".e_button-ok").tap(function(){
33
		
34
		Mobile.openTemplate("Basic");
35
	});
36
});
37
</script>
38
</html>
36
</html>