Extjs和java传输协议
1.文件包 js,html,vm
Js文件:定义js类文件
Html文件:用来书写一些html代码片段和js代码片段
Js文件中的js和html文件中的js代码片段区别在于:如果作为其他模块的调用方法或者功能则定义在js文件中,否则定义在html中作为js代码片段中。
Vm文件:用来定义ext和java传输的数据信息(关于此文件的格式下面定义了一套规则),也就是说velocity模板功能在ext项目中只用来定义传输信息和格式,而非组织html内容。
2.数据传输方式
关于信息的传输涉及到java中的action类,vm和extjs。
总的来说后台的代码组织形式和普通的项目是一样的,只不过vm文件的使用有别于普通项目,它用来传输java和ext之间的数据信息。
例如:在java的action类中方法定义如下(登录的例子):
public ActionForward loginExtJS(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws BaseException {
………….//内容
If(失败)
return mapping.findForward("loginFail");
else
return mapping.findForward("loginSuc");
}
}
Strut_config.xml配置为:
<action path="/loginExtJS" type="com.css.main.action.LoginAction"
scope="request" parameter="loginExtJS" name="userForm" validate="false">
<forward name="loginFail" path="/vm/loginFail.vm" />
<forward name="loginSuc" path="/vm/loginSuc.vm" />
</action>
以上和普通项目相同。
Vm内容如下:
loginFail.vm文件:
{
"code":"0000",
"msg":"登录失败!",
"success":true
}
loginSuc.vm文件:
{
"code":"0001",
"msg":"登录成功!",
"success":true ,
"data" : "$permitString"
}
Vm文件只是用来传输信息的内容和格式,作为信息流传输。
Extjs接收信息。例如接收loginSuc.vm的信息:
loginForm.form.doAction('submit', {
url : '/loginExtJS.do',//转到了loginSuc.vm,解析里面的信息
method : 'post',
success : function(form, action) {
if (action.result.code == '0001') {
permitString = action.result.data;
} else {Ext.example.msg('提示:',action.result.msg);
}
},
failure : function(f,a) {
//后台报错
if(a.failureType===Ext.form.Action.CONNECT_FAILURE){
Ext.Msg.alert('错误', '服务器出现错误!');
}//服务器没有启动
if(a.failureType === Ext.form.Action.SERVER_INVALID){
Ext.Msg.alert('错误', '服务器无效,稍等,请重试!'); }
}
});
}
3.数据传输协议
以下定义数据的传输格式(即传输的vm文件中数据格式)
3.1客户端请求方式
客户端请求方式和普通b/s一样
3.2服务端响应
1, code:定义四位的操作代码;
2, msg:定义对操作代码的解释;
3, data定义服务器端返回的信息数据;
4, extdata表示扩展数据信息;
5, success:true(extjs框架默认某些响应必须含有此信息)
服务端响应:
服务器端每次响应,对应的值视业务情况而定。结构如下:
{
code: "",
msg: "",
data: {} ,
extdata: {} ,
success: true
}
对三类请求的响应,格式如下:
1, 响应是否成功:
{
"code":定义的代码,
"msg":对代码的解释,
"success":true,
"data":[]/{},//返回的信息
“extdata”: []/{}//对data的补充
}
例如:响应用户登录成功信息
{
"code":"0001", //成功代码
"msg":"登录成功!",//成功的提示信息
"success":true
}
2, 返回的列表信息:
{
"data":[ //列表信息
列表内容对象
],
"extdata":215 //对data的辅助信息
}
例如:返回的id和名称列表
{
"data":[
{"id":"111111I9","name":"H001"},
{"id":"111111I8"," name":"H001"},
{"id":"111111I7"," name":"H001"},
{"id":"111111H5"," name":"H001"}
],
" extdata":215 //对data的补充,这里表示列表中数据条数
}
3, 响应查看信息:
{
"data":[{"field1":$!vt.toJSON($field1value),"field2":$!vt.toJSON ($field2value)}],
"success":true
}
例如:通过id查看一条数据,load到Form里进行显示
{
"data":[{" field1":"name"," field2":"00006"}],
//filed1和filed2为ext中Filed属性name
"success":true
}
说明:
code代码规定(根据项目而定):
1, 返回成功代码:1***
2, 返回失败代码:2***
3, 验证信息代码:3***
4, 权限信息代码:4***
5, 异常代码:5***
6, 其他
4.关于异常
有关异常的处理和捕获。
4.1程序异常
在dao中不再捕捉DaoException,bo抛出异常,用工具方法SysGlobals.returnExceptionMsg在action中统一处理异常。
4.2非程序异常
非程序异常指的是服务器失效等非程序因素的异常,应该由ext去处理
5.关于form验证
验证分客户端验证即ext验证,和服务端验证即validator验证。
validator验证和以往项目配置相同,文件struts_config.xml配置属性input返回json结构的vm验证错误信息即可,例如:
{
"code":"3007",
"msg":$!vt.toJSON(#errorMarkup()),
"success":true
}
在ext里解析code,显示msg即可。
注意事项: 1,后台传输给前台的信息要用$!vt.toJSON对信息进行过滤
toJSON参数为字符型,在参数为空的情况下放回””
2,vm页面(即json数据信息)目录结构为:json/模块名称/类名/请求名.vm,目录名称都为小写,.vm文件名称可按请求名称
3, 更新css_util.jar包,在toolbox.xml里加上:
<tool>
<key>vt</key>
<scope>application</scope>
<class>com.css.util.VelocityTools</class>
</tool>
4,在json传输结构中,key可以没有引号,但是其值必须加引号
5,提示的汉字信息定义在在属性文件中,严禁在js中书写提示信息,code写在常量类中
分享到:
相关推荐
3. **配置Store**:创建一个Store,指定模型,设置URL以指向Java服务的API接口,并配置Ajax请求的参数。 4. **发送Ajax请求**:当Store加载时,ExtJS会自动发送Ajax请求到指定的Java服务。 5. **Java后端处理**:...
4. 数据加载和异步更新:使用EXT的Ajax请求和SSH2的后台接口进行数据交互,实现实时加载和更新树节点。 5. 考虑权限和安全:根据用户角色和权限控制树节点的可见性和可操作性。 至于“oa_ext”和“oa_ext tree”,...
1. 如何在Java中创建RESTful API接口,以提供JSON数据。 2. EXT JS的Store和Model是如何工作的,以及如何配置它们来接收和显示数据。 3. 如何使用EXT JS的组件,例如GridPanel、FormPanel等,以及如何自定义组件样式...
在本文中,我们将深入探讨如何使用EXT Java技术创建一个登录案例。EXT Java是一个强大的JavaScript库,专门用于构建富客户端Web应用程序。它提供了丰富的组件库,包括数据网格、表单、图表等,使得开发者能够轻松...
2. **RESTful API**:EXT前端通过HTTP请求调用Java后端提供的RESTful接口进行数据交换。 3. **JSON**:前端和后端之间数据传输的格式通常是JSON,轻量级且易于解析。 4. **JDBC/ORM框架**:如Hibernate或MyBatis,...
综上所述,这个项目提供了一个全面的学习平台,可以让开发者深入理解Ext JS和Java在实际项目中的应用,学习如何构建一个功能完备的学生管理系统,包括UI设计、数据处理、服务端接口实现等核心技能。对于想要提升Web...
【标题】:“EXT Scheduler - Java”是一个基于EXTJS 6.5版本的资源调度和管理工具,它结合了Spring MVC 3.1框架在后端提供了数据处理支持。EXT Scheduler作为一个强大的前端组件,用于创建直观的甘特图,帮助企业或...
例如,当用户执行增删改查操作时,EXT会发送Ajax请求到指定的服务器端接口,然后接收并处理返回的数据。 2. **数据模型(Model)**:EXT中的数据模型定义了数据对象的结构和行为,比如字段类型、验证规则等。在EXT...
7. **API接口**: Java后端可能提供了一套RESTful API,供前端Ext JS组件调用,以处理文件的接收、存储和验证。 8. **错误处理**: 优秀的文件上传组件会提供良好的错误处理机制,如在网络不稳定或服务器出现问题时...
这样,前端可以通过Ext JS的模型(Model)和数据存储(Store)直接操作这些数据。 6. **刷新视图**:接收到服务器返回的数据后,可以通过Ext JS的控制器(Controller)来更新视图,如刷新表格、绘制图表等。 7. **...
此CHM版的API文档包含了EXT-GWT 2.2.4的所有核心类、接口和方法的详细介绍,对于开发者来说是一个非常宝贵的资源。CHM(Compiled HTML Help)文件是一种Windows平台下的帮助文件格式,它将HTML页面打包成单一文件,...
这个jar包包含了EXT的Java服务端API,允许开发者在Java代码中与EXT客户端组件进行交互,例如序列化数据模型、处理请求和响应等。 标签"ext jar包"表明这是EXT库的Java实现,通常用于开发和部署包含EXT组件的Web应用...
java.awt.datatransfer 提供在应用程序之间和在应用程序内部传输数据的接口和类。 java.awt.dnd Drag 和 Drop 是一种直接操作动作,在许多图形用户界面系统中都会遇到它,它提供了一种机制,能够在两个与 GUI 中...
- **模型(Model)**:模型层通常包括业务对象和服务接口,处理数据的逻辑。 - **视图(View)**:视图由JSP页面或FreeMarker模板组成,显示处理后的数据。 2. **Ext JS库**: - **Ext JS** 是一个强大的...
本示例探讨如何利用Ext JS中的`Ext.form.field.ComboBox`组件,结合Java后端和JSON数据格式,来创建这样一个功能。 `Ext.form.field.ComboBox`是Ext JS框架中一个强大的组件,它提供了下拉列表的功能,可以用于创建...
Ext4和SpringMVC是两种在Java开发领域广泛使用的开源技术。Ext4是一个JavaScript库,主要用于构建复杂的Web应用程序,提供丰富的用户界面组件和强大的数据管理功能。而SpringMVC是Spring框架的一部分,它是一个用于...
Servlet API提供了一个Part接口,用于处理multipart/form-data请求中的部分数据。开发者需要创建一个Servlet,接收上传的文件,将文件保存到服务器的指定位置,然后返回一个响应,告知前端上传是否成功。例如: ```...
总结来说,“EXT3.0 JSP上传”涉及到EXT3.0的FormPanel和FileUploadField组件来构建前端文件选择和上传界面,使用EXT3.0的Ajax请求功能发送文件数据到服务器。在服务器端,JSP接收文件数据并将其保存。整个过程需要...
"ext增删改查.rar" 文件可能包含了EXTJS 进行数据操作的具体代码示例,包括Model、Store、Proxy 的配置以及如何触发增删改查操作的代码片段。解压并研究这些文件可以帮助理解EXTJS 与MySQL 数据库的交互过程。 8. ...
4. **服务接口**:提供RESTful API,使得前后端分离,前端EXT框架可以通过这些接口获取数据并展示。 EXT前端部分,主要涉及以下技术点: 1. **组件化开发**:EXT的组件模型使得开发者可以复用代码,提高开发效率,...