批量数据处理 | 学习笔记

简介: 快速学习批量数据处理,介绍了批量数据处理系统机制, 以及在实际应用过程中如何使用。

开发者学堂课程【Java Web开发系列课程 - Struts2框架入门批量数据处理】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/537/detail/7325


批量数据处理

 

内容介绍:

批量提交

一、 数组和集合的处理

二、 集合对象的处理

 

一、 数组和集合的处理

首先我们看一下代码,新建一个 Web Project,

名称为 struts2_branch

然后将常规的东西导过来,之后导入核心配置文件,将配置复制过来。接下来我们要加一个 struts。

假如现在要提交一个数据,在 jsp 里设个页面,比如我们提交多个爱好 hobbies

我们设置一个 form 表达,提交的是用户信息

<body>

<form action="add.action " method="post">

用户名:

<input type="text" name="name" /><br>

爱好:

<input type="cheskbox" name= "hobbies"value="football"/>足球

<inputtype="checkbox" name= "hobbies" value="basketball" />篮球

<input type="checkbox" name="hobbies" value="pingpang" />乒乓球

<input type= "cheskbox" name= "hobbies" value="yumaoqiu"

/>羽毛球<br>

<input type=submit”value=”提交”/>

</form>

之后创建 UserAction

Package cn.sxt.action;

Public class UserAction {

private String name;

private String[] hobbies;

public String execute(){

System.out.println(“name=”+name);

System.out.println(“hobbies=”+hobbies.length);

Return ”success”;

}

public String getName(){

return name;

}

public void setName(String name){

提交过来后,我们要配置 struts_xml

<struts>

<package name=”default”extends=”struts-default”namespace=”/”

<action name=”add” class=”cn.sxt.action.UserAction”>

<result>/incex.jsp</result>

</action>

</package>

</struts>

通过处理,我们可能会发现 struts2处理可能不是很完美,那就需要我们自己去处理

我们去访问一下,选择乒乓球和羽毛球选项,当出现 This is my page 时,说明数据过去了,hobbies=2会显现。

对于数组,我来给大家演示一下

Public class UserAction {

private String name;

private String[] hobbies;

public String execute(){

System.out.println(“name=”+name);

System.out.println(“hobbies=”);

for(int i=0;i<hobbies.length;i++){

system.out.print(hobbies[i]+“ ”)

return “success”;

}

public String getName(){

我们再去访问刚才的页面,勾选三个选项提交,我们可以看到

hobbies=football basketball pingpang

对于单个数据,我们可以直接提交,以数组的形式去显示它是可以的,假如在这个地方再提交一个数据,不再是爱好是喜欢游戏。

<body>

<form action="add.action " method="post">

用户名:

<input type="text" name="name" /><br>

爱好:

<input type="cheskbox" name= "hobbies"value="football"/>足球

<inputtype= checkbox" name= "hobbies" value="basketball" />篮球

<input type="checkbox" name="hobbies" value="pingpang" />乒乓球

<inputtype="cheskbox"name="hobbies" value="yumaoqiu"/>羽毛球<br>

喜欢游戏:

<input type="checkbox" name="games " value="Lol."

/>英雄联盟

<input type="cheskbox" name="games" value="dota" / >dota

<input type="checkbox" name= "games " value= "war3"

/>魔兽争霸

<input type="checkbox." name= "games " value="cs"

/>反恐精英<br>

<input type=submit”value=”

提交”/>

</form> 

我们可以用数组去处理,也可以用 struts-list 去处理

Public class UserAction {

private String name;

private String[] hobbies;

private List<String> games;

public String execute(){

System.out.println(“name=”+name);

System.out.println(“hobbies=”+hobbies.length);

}

System.out.println();

System.out.println(“games=”+games);

return ”success”;

}

我们去验证一下,最后得到数据 hobbies=pingpang yumaoqiu  games=[dota,cs]

说明对于单个或批量的数据处理,可以使用数组,也可以用 list 集合处理

Jsp 中代码

<form action="add.action " method="post">

用户名:<input type="text" name="name" /><br>

爱好:

<inputtype="cheskbox"name= "hobbies"value="football"/>足球

<inputtype="checkbox" name= "hobbies" value="basketball" />篮球

<input type="checkbox" name="hobbies" value="pingpang" />乒乓球

<inputtype="cheskbox"name="hobbies" value="yumaoqiu"/>羽毛球<br>

喜欢游戏:

<input type="checkbox" name="games " value="Lol."/>英雄联盟

<input type="cheskbox" name="games" value="dota" / >dota

<input type="checkbox" name= "games " value= "war3"/>魔兽争霸

<input type="checkbox." name= "games " value="cs"/>反恐精英<br>

<input type= "submit" value="提交"/>

</form>

Action 处理

public class UserAction {

private String name;

private String[ ] hobbies ;

private List<String> games;

public String execute(){

System.out. println( "name="+name);

System.out.print("hobbies=");

for(int i=o;i<hobbies.length ;i++){

System.out.print(hobbies[i]+”");

}

System.out-println( );

System. out- println( "games="+games);

return "success";

}

public String getName() {

return name;

}

publie void setName( String name) {

this.name = name;

}

public String[ ] getHobbies( ) {

return hobbies;

}

publie void setHobbies(String[ ] hobbies) {

this.hobbies = hobbies;

}

public List<String> getGames() {

return games;

}

public List<String> getGames()

return games;

}

public void setGames(List<String> games) {

this.games = games;

}

}

 

二、 集合对象的处理

有些时候,我们提交的可能是对象,那么提交对象怎么处理呢,假如我现在写一个user

Package cn.sxt.action;

public class User {

private String name;

private int age;

public String getName(){

return name;

}

public void setName(String name){

this.name=name;

}

public int getAge(){

return age;

} 

现在来看如何处理批量对象问题

/body>

<form action= "batch.action" method="post">

用户名:

<input type= "text" name=" " />

年龄:

<input type="age " name=" "><br>

用户名:

<input type= "text" name=" " />

年龄:

<input type= "age" name= ""><br>

用户名:

<input type= "text" name=" "/>

年龄:

<input type="age " name=" "><br>

<input type="submit" value="提交"/>

</form>

</body>

然后写个 action,叫 BatchAction

Public class BatchAction {

private List<User> users;

public string execute(){

for(User u:users){

System.out. println(u);

}

return "success";

}

public List<User> getUsers( ) {

return users;

}

public void setUsers(List<User> users) {

this.users=users;

}

}

前面那个页面就需要更改

/body>

<form action= "batch.action" method="post">

用户名:

<input type= "text" name=" users.name" />

年龄:

<input type="age " name="users.age "><br>

用户名:

<input type= "text" name=" users.name " />

年龄:

<input type= "age" name= " users.age "><br>

用户名:

<input type= "text" name=" users.name "/>

年龄:

<input type="age " name=" users.age "><br>

<input type="submit" value="提交"/>

</form>

</body>

验证一下,我们可以得到数据,数据给了 users,但是这不是我们想要的数据 

当 name=users 时

/body>

<form action= "batch.action" method="post">

用户名:

<input type= "text" name=" users " />年龄:<input type="age " name="users "><br>

用户名:

<input type= "text" name=" users " />年龄:<input type= "age" name= " users "><br>

用户名:

<input type= "text" name=" users "/>

年龄:

<input type="age " name=" users "><br>

<input type="submit" value="提交"/>

</form>

</body>

验证之后,我们发现这次没有接收到数据, 当我们给属性赋值的时候,它才能显示,说明 struts 不能处理这种问题。

如果提交的是批量的对象,这时 struts 没用了,我们可以以两个数组去提交。但是这种方式不是我们想要的,这个时候可以用自定义拦截器。

之前写过一个程序来解决这种问题,现在我们在 list 中将拦截器引用一下

<packagename="default"extends="list-default" namespace="/">

<action name="add " class= "cn.sxt.action.UserAction">

<result>/incex.jsp</result>

</action>

<action name=“batch”class="cn.sxt.action. BatchAction">

<interceptor-ref name="ListStask" / >

<result> /index. jsp</ result>

</action>

</package>

再次提交,当输入的数据与最终显示的数据一致时,问题就处理完成。

对于集合对象的处理,需要自定义拦截器来实现——struts-list.jar

jsp

</body>

<form action= "batch.action" method="post">

用户名:<input type= "text" name="users.name "/>年龄:<input type="text" name="users.age"><br>

用户名:<input type= "text" name="users.name" />年龄:<input type= "text" name= "users.age"><br>

用户名:<input type= "text" name="users.name "/>年龄:<input type="text" name="users.age"><br>

<input type="submit" value="提交"/>

</form>

</body>

Struts.xml 配置

<package name="default" extends="list-default" namespace="/">

<action name="batch" class= "cn.sxt.action.BatchAction,">

<interceptor-ref name="ListStask" / >

<result> /index. jsp</ result>

</action>

</package>

BatchAction

Public class BatchAction {

private List<User> users;

public string execute(){

for(User u:users){

System.out. println(u);

}

return "success";

}

public List<User> getUsers( ) {

return users;

}

public void setUsers(List<User> users) {

this.users=users;

}

}

相关文章
|
7月前
|
数据采集 自然语言处理 监控
|
数据处理
航测数据处理教程(超详细)
航测数据处理教程(超详细)
185 1
|
4月前
|
存储 数据采集 分布式计算
批量离线表的工作原理是什么?
【8月更文挑战第11天】
96 5
|
1月前
|
消息中间件 存储 SQL
ClickHouse实时数据处理实战:构建流式分析应用
【10月更文挑战第27天】在数字化转型的大潮中,企业对数据的实时处理需求日益增长。作为一款高性能的列式数据库系统,ClickHouse 在处理大规模数据集方面表现出色,尤其擅长于实时分析。本文将从我个人的角度出发,分享如何利用 ClickHouse 结合 Kafka 消息队列技术,构建一个高效的实时数据处理和分析应用,涵盖数据摄入、实时查询以及告警触发等多个功能点。
95 0
|
SQL 分布式计算 数据挖掘
83 网站点击流数据分析案例(ETL)
83 网站点击流数据分析案例(ETL)
66 0
|
SQL 数据采集 数据挖掘
90 网站点击流数据分析案例(工作流调度)
90 网站点击流数据分析案例(工作流调度)
53 0
|
NoSQL Shell Linux
如何使用 Flupy 构建数据处理管道
如何使用 Flupy 构建数据处理管道
168 0
|
数据处理 数据库 C#
C# 实现多线程批量数据处理
应用场景分析:假设有一组已知数量的数据,按照一定的业务处理规则处理并保存数据库,如何提升数据处理的效率并完成数据保存(具体情况具体分析)?此处使用控制台方式模拟输入数据(类比保存数据库处理)...
566 0
C# 实现多线程批量数据处理
|
数据可视化 数据挖掘 数据处理
【数据篇】33 # 可视化数据处理的一般方法是什么?
【数据篇】33 # 可视化数据处理的一般方法是什么?
235 0
【数据篇】33 # 可视化数据处理的一般方法是什么?
|
Web App开发 存储 分布式计算