File tree Expand file tree Collapse file tree 2 files changed +81
-0
lines changed Expand file tree Collapse file tree 2 files changed +81
-0
lines changed Original file line number Diff line number Diff line change 1
1
import java .io .*;
2
2
import java .net .*;
3
+ import java .nio .file .Files ;
4
+ import java .nio .file .Paths ;
5
+
3
6
import com .sun .net .httpserver .*;
4
7
5
8
public class Server {
@@ -8,13 +11,34 @@ public static void main(String[] args) throws Exception {
8
11
9
12
var server = HttpServer .create (port , 0 );
10
13
14
+ server .createContext ("/" , new FrontendHandler ());
11
15
server .createContext ("/randomNumber" , new RandomNumberHandler ());
12
16
13
17
server .setExecutor (null );
14
18
15
19
server .start ();
16
20
}
17
21
22
+ static class FrontendHandler implements HttpHandler {
23
+ @ Override
24
+ public void handle (HttpExchange request ) throws IOException {
25
+ var appPath = Paths .get ("app.html" );
26
+
27
+ var app = new String (Files .readAllBytes (appPath ));
28
+
29
+ var appBytesLength = app .getBytes ().length ;
30
+
31
+ request .sendResponseHeaders (200 , appBytesLength );
32
+
33
+ var body = request .getResponseBody ();
34
+
35
+ body .write (app .getBytes ());
36
+
37
+ body .close ();
38
+
39
+ }
40
+ }
41
+
18
42
static class RandomNumberHandler implements HttpHandler {
19
43
@ Override
20
44
public void handle (HttpExchange request ) throws IOException {
Original file line number Diff line number Diff line change
1
+ <!DOCTYPE html>
2
+ < html >
3
+ < head >
4
+ < title > Random Number Generator</ title >
5
+
6
+ < meta name ="viewport " content ="width=device-width, initial-scale=1.0 " />
7
+ < script defer type ="module ">
8
+ import {
9
+ html ,
10
+ render ,
11
+ } from "https://unpkg.com/htm/preact/index.mjs?module" ;
12
+ import { useState } from "https://unpkg.com/preact/hooks/dist/hooks.module.js?module" ;
13
+
14
+ function App ( ) {
15
+ const [ number , setNumber ] = useState ( 0 ) ;
16
+
17
+ return html `
18
+ < div class ="container ">
19
+ < h1 > NENSS</ h1 >
20
+ < p >
21
+ < button
22
+ onClick =${ async ( ) => {
23
+ const response = await fetch ( "/randomNumber" ) ;
24
+ setNumber ( await response . json ( ) ) ;
25
+ } }
26
+ >
27
+ Get random number
28
+ </ button >
29
+ </ p >
30
+ < p > ${ number } </ p >
31
+ </ div >
32
+ ` ;
33
+ }
34
+
35
+ render ( html `< ${ App } /> ` , document . body ) ;
36
+ </ script >
37
+
38
+ < style >
39
+ * {
40
+ margin : 0 ;
41
+ }
42
+
43
+ .container {
44
+ background-color : lightsalmon;
45
+ gap : 10px ;
46
+ height : 100vh ;
47
+
48
+ display : flex;
49
+ flex-direction : column;
50
+ justify-content : center;
51
+ align-items : center;
52
+ }
53
+ </ style >
54
+ </ head >
55
+
56
+ < body > </ body >
57
+ </ html >
You can’t perform that action at this time.
0 commit comments