EasyUI–表单加载内存/本地/服务端数据

简介: 在不使用前端语言JS(jQuery等前端框架本质上也是JS)时,如果我们想往表单里面放入数据,该怎么办?比如从文件中、从数据库查出用户信息显示在表单中。

无非借助于后端语言如Java,然后通过Servlet获取数据,浏览器端通过请求服务器,实现这一过程。而本篇将演示通过JS语言加载内存(实际上就是浏览器客户端逻辑)、本地(其实是服务器上的文件)及服务端(通过Servlet)数据。

先看一下页面设计(注意注释):

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <title>表单加载数据Demo</title>
  <!-- 以下四行代码用于导入EasyUI库 -->
  <link rel="stylesheet" type="text/css" href="easyui/themes/default/easyui.css">
  <link rel="stylesheet" type="text/css" href="easyui/themes/icon.css">
  <script type="text/javascript" src="easyui/jquery.min.js"></script>
  <script type="text/javascript" src="easyui/jquery.easyui.min.js"></script>
  <!-- script标签内部放置JS代码,因为EasyUI是基于jQuery开发的,所以基本上都是jQuery风格的代码 -->
  <script type="text/javascript">
  </script>
</head>
<body>
  <h2>加载数据Demo</h2>
  <!-- 使用easyui-panel面板 -->
  <div class="easyui-panel" title="个人信息" style="width:100%;max-width:400px;padding:30px 60px;">
    <!-- form的id为main_form -->
    <form id="main_form" method="post">
      <div style="margin-bottom:24px">
        <!-- 注意required:true是非常好用的一个data-options选项,保证该输入框不能为空 -->
        <input class="easyui-textbox" name="userName" style="width:100%" data-options="label:'姓名',required:true">
      </div>
      <div style="margin-bottom:24px">
        <input class="easyui-textbox" name="userEmail" style="width:100%" data-options="label:'邮箱',required:true,validType:'email'">
      </div>
      <div style="margin-bottom:24px">
        <!-- 此处使用easyui-combobox组件 -->
        <select class="easyui-combobox" name="userSex" label="性别" style="width:100%">
          <option value="0">男</option>
          <option value="1">女</option>
        </select>
      </div>
    </form>
  </div>
  <div style="margin:32px 0;">
    <!-- 此处注意使用javascript:void(0)比#要干净,因为使用#后网址栏多了个#-->
    <!-- 注意onclick绑定的js方法 -->
    <a href="javascript:void(0)" class="easyui-linkbutton" onclick="loadMemory()">加载内存数据</a>
    <a href="javascript:void(0)" class="easyui-linkbutton" onclick="loadFile()">加载文件数据</a>
    <a href="javascript:void(0)" class="easyui-linkbutton" onclick="loadRemote()">加载后端数据</a>
    <a href="javascript:void(0)" class="easyui-linkbutton" onclick="clearData()">清空数据</a>
  </div>
</body>
</html>


注意已经有了4个按钮,分别绑定了四个事件,接下来我们只需要在script标签中添加事件就好了,我们来逐个处理这些事件。


第一个,清空数据clearData,非常简单,这就是库(框架)的作用


/*选中main_form后直接调用form('clear')即可清空表单数据*/

 function clearData(){

  $('#main_form').form('clear');

 }

1

2

3

4

第二个,加载内存数据:


/*加载内存数据,直接指定控件name对应的值即可*/

 function loadMemory(){

  $('#main_form').form('load',

   {userName:'猫哥',userEmail:'maoge@maoge.com',userSex:'0'}

  );

 }

1

2

3

4

5

6

第三个,需要从文件中加载json格式的数据,首先在WebRoot下新建一个文件夹json,然后在json文件夹下新建user_data.json文件,代码如下,注意EasyUI能自动解析json,智能匹配表单,所以按照json的格式放好数据就OK了。


{

"userName":"test",

"userEmail":"maoge@maoge.com",

"userSex":"1"

}

1

2

3

4

5

/*加载文件数据,直接写文件路径即可*/

 function loadFile(){

  $('#main_form').form('load', 'json/user_data.json');

 }

1

2

3

4

最后是从Servlet加载数据,新建一个UserServlet和User类如下(web.xml中配置对应url-pattern为/UserServlet):

public class User {
  private String userName;
  private String userEmail;
  private String userSex;
  public String getUserName() {
    return userName;
  }
  public void setUserName(String userName) {
    this.userName = userName;
  }
  public String getUserEmail() {
    return userEmail;
  }
  public void setUserEmail(String userEmail) {
    this.userEmail = userEmail;
  }
  public String getUserSex() {
    return userSex;
  }
  public void setUserSex(String userSex) {
    this.userSex = userSex;
  }
}
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class UserServlet extends HttpServlet {
  public void doGet(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException {
    this.doPost(request, response);
  }
  public void doPost(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException {
    response.setCharacterEncoding("utf-8");
    request.setCharacterEncoding("utf-8");
    response.setContentType("text/html");
    PrintWriter out = response.getWriter();
    User user=new User();
    user.setUserEmail("panda@pp.com");
    user.setUserName("熊猫大哥大");
    user.setUserSex("0");
    //此处需将user数据以json格式返回
  }
}

之前已经说过,EasyUI需要后台以json格式返回数据,于是首先在WebRoot下WEN-INF下lib下放入json需要的jar包(具体jar包自行搜索)。如图:

image.png

OK,此时将doPost完善为:

import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import net.sf.json.JSONObject;
public class UserServlet extends HttpServlet {
  public void doGet(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException {
    this.doPost(request, response);
  }
  public void doPost(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException {
    response.setCharacterEncoding("utf-8");
    request.setCharacterEncoding("utf-8");
    response.setContentType("text/html");
    PrintWriter out = response.getWriter();
    User user=new User();
    user.setUserEmail("panda@pp.com");
    user.setUserName("熊猫大哥大");
    user.setUserSex("0");
    //此处需将user数据以json格式返回
    String result = JSONObject.fromObject(user).toString();
    System.out.println(result);//测试
    out.print(result);
  }
}

OK,我们直接访问http://127.1.1.1:8080/EasyuiDemo/UserServlet页面返回值为{"userEmail":"panda@pp.com","userName":"熊猫大哥大","userSex":"0"},可见该数据跟user_data.json数据格式都是json格式的,所以前端可直接写为:

/*通过servlet加载后端数据*/
    function loadRemote(){
      $('#main_form').form('load', '/EasyuiDemo/UserServlet');  
    }

至此我们应该完全了解了使用json的便捷性和锋利性,因为有了json这个标准以及Java语言(及各类后端语言)、Javascript语言(及各类前端框架)对json的支持,我们可以不用写任何代码完成json数据与前后端的交互,这就是标准(约定)的意义。

相关文章
|
2月前
|
存储 编译器 C语言
C语言:数据在内存中的存储形式
C语言:数据在内存中的存储形式
|
1月前
|
存储 C语言
C语言--------数据在内存中的存储
C语言--------数据在内存中的存储
26 0
|
6天前
|
存储 NoSQL Oracle
Oracle 12c的内存列存储:数据的“闪电侠”
【4月更文挑战第19天】Oracle 12c的内存列存储以超高速度革新数据处理,结合列存储与内存技术,实现快速查询与压缩。它支持向量化查询和并行处理,提升效率,但需合理配置以平衡系统资源。作为数据管理员,应善用此功能,适应业务需求和技术发展。
|
16天前
|
存储 C语言
数据在内存中的存储2
数据在内存中的存储2
|
16天前
|
存储 编译器
数据在内存中的存储1
数据在内存中的存储
|
17天前
|
JavaScript 前端开发
EasyUi js 加载数据表格DataGrid
EasyUi js 加载数据表格DataGrid
|
27天前
|
存储 编译器 程序员
【C语言】整形数据和浮点型数据在内存中的存储
【C语言】整形数据和浮点型数据在内存中的存储
16 0
|
1月前
|
存储 小程序 C语言
【深度剖析数据在内存中的存储】C语言
【深度剖析数据在内存中的存储】C语言
|
1月前
|
存储 小程序 C语言
【C语言进阶】深度剖析数据在内存中的存储
【C语言进阶】深度剖析数据在内存中的存储
|
1月前
|
存储 小程序 编译器
C语言从入门到实战——数据在内存中的存储方式
数据在内存中的存储方式是以二进制形式存储的。计算机中的内存由一系列存储单元组成,每个存储单元都有一个唯一的地址,用于标识它在内存中的位置。计算机可以通过这些地址来定位并访问内存中的数据。 数据在内存中的存储方式取决于数据的类型。数值类型的数据(例如整数、浮点数等)以二进制形式存储,并根据类型的不同分配不同的存储空间。字符串和字符数据由ASCII码存储在内存中。数据结构(例如数组、结构体、链表等)的存储方式也取决于其类型和组织结构。 总之,数据在内存中以二进制形式存储,并根据其类型和组织方式分配不同的存储空间。
43 0