Skip to content

Commit 734c50a

Browse files
committed
提供一个完整的hello world例子,可以简单预览Argo的基本特性
1 parent d2ec307 commit 734c50a

File tree

7 files changed

+126
-8
lines changed

7 files changed

+126
-8
lines changed

README.md

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,20 @@ Argo不是一个通用的web框架,一个问题解决方案可能有很多,
4141

4242
## Hello World
4343

44-
请参考例子 hello-world
44+
请参考例子 samples/hello-world
45+
46+
```shell
47+
mvn tomcat7:run
48+
```
49+
50+
或者
51+
```shell
52+
mvn jetty:run
53+
```
54+
55+
然后浏览
56+
57+
http://localhost/
4558

4659
## 进阶
4760

core/src/main/java/com/bj58/argo/utils/PathUtils.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,7 @@ public static String simplyWithoutPrefix(String url) {
105105
*/
106106
public static String simplyWithoutSuffix(String url) {
107107
StringBuilder simply = simplyStringBuilder(url);
108-
if (simply.length() > 0 && '/' == simply.charAt(simply.length() - 1))
108+
if (simply.length() > 1 && '/' == simply.charAt(simply.length() - 1))
109109
simply.deleteCharAt(simply.length() - 1);
110110

111111
return simply.toString();

core/src/test/java/com/bj58/argo/utils/PathUtilsTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ public void testCombine() {
5353
public void testSimplyWithoutPrefix() {
5454
String url = "/";
5555
Assert.assertEquals(PathUtils.simplyWithoutPrefix(url), "");
56-
Assert.assertEquals(PathUtils.simplyWithoutSuffix(url), "");
56+
Assert.assertEquals(PathUtils.simplyWithoutSuffix(url), "/");
5757

5858
url = "/opt";
5959
Assert.assertEquals(PathUtils.simplyWithoutPrefix(url), "opt");

samples/hello-world/src/main/java/com/bj58/argo/controllers/HomeController.java

Lines changed: 47 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,17 +6,17 @@
66
import com.bj58.argo.annotations.POST;
77
import com.bj58.argo.annotations.Path;
88
import com.bj58.argo.client.ClientContext;
9+
import com.bj58.argo.client.Upload;
910
import com.bj58.argo.controller.AbstractController;
1011
import com.google.common.base.Preconditions;
1112
import com.google.common.base.Strings;
12-
import com.sun.jndi.toolkit.url.Uri;
1313

1414
// 类的命名受 GroupConvetionAnnotation.controllerPattern约束
1515
public class HomeController extends AbstractController {
1616

17-
@Path("/")
17+
@Path("")
1818
public ActionResult home() {
19-
Uri uri;
19+
System.out.println(1);
2020
return view("index"); // velocity模板是 /src/main/java/resources/views/index.html
2121
}
2222

@@ -50,4 +50,48 @@ public ActionResult postForm() {
5050
return view("post"); // resources/views/post.html velocity模板
5151

5252
}
53+
54+
/**
55+
*
56+
* 处理文件上传
57+
*
58+
*/
59+
@Path("post-upload.html")
60+
@POST // 只处理post的请求
61+
public ActionResult postUpload() {
62+
63+
BeatContext beat = beat();
64+
65+
ClientContext client = beat.getClient();
66+
67+
Preconditions.checkState(Strings.isNullOrEmpty(client.form("company")));
68+
Preconditions.checkState(Strings.isNullOrEmpty(client.form("address")));
69+
Preconditions.checkState(Strings.isNullOrEmpty(client.form("file")));
70+
71+
client.queryString("name");
72+
73+
Preconditions.checkState(Strings.isNullOrEmpty(client.queryString("name")));
74+
Preconditions.checkState(Strings.isNullOrEmpty(client.queryString("phone")));
75+
Preconditions.checkState(Strings.isNullOrEmpty(client.queryString("submit")));
76+
Preconditions.checkState(Strings.isNullOrEmpty(client.queryString("file")));
77+
78+
79+
Upload upload = client.getUpload("file");
80+
81+
82+
beat.getModel()
83+
.add("company", client.queryString("company"))
84+
.add("address", client.queryString("address"))
85+
86+
.add("name", client.form("name"))
87+
.add("phone", client.form("phone"))
88+
.add("submit", client.form("submit"))
89+
90+
.add("upload", upload);
91+
92+
93+
94+
return view("post-upload"); // resources/views/post-upload.html velocity模板
95+
96+
}
5397
}

samples/hello-world/src/main/resources/views/index.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ <h2>Samples</h2>
88
<li><a href="/hello/world">根据url获得参数的hello wolrd</a></li>
99
<li><a href="1.html">静态文件显示</a></li>
1010
<li><a href="form.html">区分queryString和form参数</a></li>
11-
<li>文件上传展示 todo</li>
11+
<li><a href="upload-form.html">文件上传展示</a></li>
1212
</ul>
1313
</body>
14-
</html>
14+
</html>
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
<html>
2+
<head>
3+
<title>form</title>
4+
</head>
5+
<body>
6+
<h2>form post</h2>
7+
8+
<h3>upload file</h3>
9+
<ul>
10+
<li>file name: $upload.fileName <i>注:调用 Upload.getFileName()实现,以下同理</i></li>
11+
<li>file size: $upload.size</li>
12+
<li>file contentType: $upload.contentType</li>
13+
</ul>
14+
15+
<h3>queryString parameter</h3>
16+
<ul>
17+
<li>company: $company</li>
18+
<li>address: $address</li>
19+
</ul>
20+
<h3>form parameter</h3>
21+
<ul>
22+
<li>name: $name</li>
23+
<li>phone: $phone</li>
24+
<li>submit: $submit</li>
25+
</ul>
26+
27+
<p>
28+
29+
处理的Action是 HomeController.postForm
30+
31+
</body>
32+
</html>
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
<!DOCTYPE html>
2+
<html>
3+
<head>
4+
<title></title>
5+
</head>
6+
<body>
7+
8+
9+
<form method="post" enctype="multipart/form-data" action="post-upload.html?company=58.com&address=beijing">
10+
<ul>
11+
<li>name: <input type="text" name="name"/></li>
12+
<li>phone: <input type="text" name="phone"/></li>
13+
<li>file:<input type="file" name="file"></li>
14+
</ul>
15+
16+
<input type="submit" name="submit" value="提交"/>
17+
18+
</form>
19+
20+
<p>
21+
22+
这是一个表单提交页面<br/>
23+
<i>action="post-upload.html?company=58.com&address=beijing" </i><br/>
24+
我们希望在post-upload.html(对应的Action是HomeController.postUpload())中能区分queryString和form的数据。
25+
26+
27+
28+
</body>
29+
</html>

0 commit comments

Comments
 (0)