Home  >  Article  >  Backend Development  >  How to jump to the page in golang

How to jump to the page in golang

WBOY
WBOYOriginal
2023-05-15 13:25:081125browse

Go language is often used to develop web applications. In web applications, routing and page jumps are very important functions. This article will introduce how golang implements page jumps.

1. Static page jump

In web development, we often need to redirect users from one page to another. In golang, redirection can be achieved through the http.Redirect function. The definition of this function is:

func Redirect(w http.ResponseWriter, r *http.Request, url string, code int)

Among them, w refers to the response object sent to the client, r refers to the request object sent by the client, url refers to the URL address that needs to be jumped, and code refers to the status code. .

For example, in the following code, we define a route for /login and redirect it to another page:

package main

import(
    "net/http"
)

func main(){
    http.HandleFunc("/login",func(w http.ResponseWriter, r *http.Request){
        http.Redirect(w, r, "/welcome", 301)
    })
    
    http.HandleFunc("/welcome",func(w http.ResponseWriter, r *http.Request){
        w.Write([]byte("Welcome!"))
    })

    http.ListenAndServe(":8080", nil)
}

In the above code, when the user accesses /login , it will automatically jump to the /welcome page and display "Welcome!".

2. Template-based page jump

In web development, we usually need to pass some data to the target page. In golang, you can use HTML templates to implement page jumps with data.

The following is a simple sample code, where Guest and User are structure types:

package main

import (
    "html/template"
    "net/http"
)

type Guest struct {
    Name string
}

type User struct {
    Name string
    Age  int
}

func main() {
    http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
        tmplt := template.Must(template.ParseFiles("templates/index.html"))

        data := Guest{
            Name: "Guest",
        }

        tmplt.Execute(w, data)
    })

    http.HandleFunc("/profile", func(w http.ResponseWriter, r *http.Request) {
        tmplt := template.Must(template.ParseFiles("templates/profile.html"))

        data := User{
            Name: "John",
            Age:  25,
        }

        tmplt.Execute(w, data)
    })

    http.ListenAndServe(":8080", nil)
}

In the above code, we define two routes, "/" and "/profile" . When the user accesses "/", the template "templates/index.html" will be loaded, the data of the Guest structure will be passed to the template for rendering and the result will be returned. When a user accesses "/profile", the template "templates/profile.html" will be loaded, the data of the User structure will be passed to the template for rendering and the result will be returned.

Go language template tags can be used in HTML templates to insert dynamic data into the page. For example: In the templates/index.html file, you can use the following code to output the name of the Guest:

<!DOCTYPE html>
<html>
<head>
    <title>Hello World!</title>
</head>
<body>
    <h1>Hello, {{.Name}}!</h1>
    <a href="/profile">Enter Profile</a>
</body>
</html>

In the templates/profile.html file, you can also use similar code to output the User's name and age. :

<!DOCTYPE html>
<html>
<head>
    <title>User Profile</title>
</head>
<body>
    <h1>User Profile</h1>
    <ul>
        <li>Name: {{.Name}}</li>
        <li>Age: {{.Age}}</li>
    </ul>
</body>
</html>

Summary:

  1. In golang, page jump can be achieved through the http.Redirect function.
  2. Template-based page jumps can achieve dynamic data output through HTML templates.
  3. The template engine of Go language has powerful functions and can process HTML/XML documents, transforming from process-oriented to object-oriented.

The above is the detailed content of How to jump to the page in golang. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Previous article:golang closes go threadNext article:golang closes go thread