· 5 years ago · Sep 13, 2020, 10:36 AM
1package main
2
3import (
4 "fmt"
5 "log"
6 "net/http"
7)
8
9func HomeRouterHandler(w http.ResponseWriter, r *http.Request) {
10 r.ParseForm()
11
12 //вывод ссылок
13 fmt.Fprintf(w, "<br>Вывод гиперссылок: \n<br/>")
14 refs := []string{"google.com", "yandex.ru",
15 "mozilla.org/ru/", "bmstu-iu9.github.io/utp2020-7-paint/"}
16
17 for _, r := range refs {
18 fmt.Fprintf(w, "<br><a href=\"https://%s\">%s</a></br>", r, r);
19 }
20 for i:= 0; i < 3; i++ {
21 fmt.Fprintf(w, "<br/>")
22 }
23
24 fmt.Fprintf(w, "Демонстрация \"подмены\" контента:\n</br>")
25
26 for i := 1; i < 3; i++ {
27 fmt.Fprintf(w, "<br><a href=\"example-%d\">example-%d</a></br>", i, i)
28 }
29
30 fmt.Fprintf(w, "<br><a href=\"form\">форма</a></br>")
31
32}
33
34func formHandler(w http.ResponseWriter, r *http.Request) {
35 err := r.ParseForm()
36 if err != nil {
37 log.Fatal("error parse form")
38 }
39
40 fmt.Fprintf(
41 w,
42 `
43<!DOCTYPE html>
44<html>
45<head>
46 <meta charset="UTF-8" />
47</head>
48<body>
49<div>
50 <form method="POST" action="/form/output">
51 <label>Name</label><input name="name" type="text" value="" />
52 <label>Age</label><input name="age" type="number" value="" />
53 <input type="submit" value="submit" />
54 </form>
55</div>
56</body>
57</html>`)
58}
59
60func formSubmitHandler(w http.ResponseWriter, r *http.Request) {
61 err := r.ParseForm()
62
63 if err != nil {
64 log.Fatal("error")
65 }
66
67 fmt.Fprintf(w, "successful\n")
68 fmt.Fprintf(w, "Name = %s\n", r.FormValue("name"))
69 fmt.Fprintf(w, "Age = %s\n", r.FormValue("age"))
70}
71
72
73
74
75func main() {
76 http.HandleFunc("/", HomeRouterHandler)
77
78 http.HandleFunc("/example-1", func(w http.ResponseWriter, r *http.Request) {
79 fmt.Fprintf(w, "it's first example!")
80 } )
81
82 http.HandleFunc("/example-2", func(w http.ResponseWriter, r *http.Request) {
83 fmt.Fprintf(w, "it's second example !")
84 })
85
86 http.HandleFunc("/form", formHandler)
87 http.HandleFunc("/form/output", formSubmitHandler)
88
89
90 err := http.ListenAndServe(":3009", nil)
91 if err != nil {
92 log.Fatalf("error in ListenAndServe : %s", err)
93 }
94}
95