Сохранение текста, введенного в поле формы на html странице без использования php

129
28 апреля 2021, 13:30
input type="text" id="txt" value=""
input type="button" onclick="" id="b" value="Сохранить"

Можно ли при нажатии на кнопку 'Сохранить' сохранять значение текстового поля? Допустим, я ввёл в текстовое поле текст "777", и мне нужно сохранить это не в отдельный файл, а в этот же. И в итоге после сохранения должно получится это:

input type="text" id="txt" value="777"
input type="button" onclick="" id="b" value="Сохранить"

Это для использования только на одном конкретном компьютере - без доступа к сети.

Answer 1

Вот то что Вы хотите, но сразу хочу сказать - так никто не делает, так как злоумышленник может это эксплуатировать на свое усмотрение.

Если отправлять серверу только измененные данные а не всю страницу целиком, можно этому препятствовать, но это совсем другая история и кода в ней будет на порядок больше.

PS: запускал из idea, html файл должен лежать в корне проекта и называться index.html

—-

import com.sun.net.httpserver.HttpExchange;
import com.sun.net.httpserver.HttpHandler;
import com.sun.net.httpserver.HttpServer;
import java.io.*;
import java.net.InetSocketAddress;
public class Server {
    public static void main(String[] args) throws IOException {
        HttpServer server = HttpServer.create(new InetSocketAddress(8087), 0);
        server.createContext("/save", new Save());
        server.createContext("/", new Serve());
        server.start();
        System.out.println("http://localhost:8087/index.html");
    }
    static abstract class Handler implements HttpHandler {
        @Override
        public void handle(HttpExchange http) throws IOException {
            OutputStream outputStream = http.getResponseBody();
            byte[] result;
            int code = 200;
            try {
                result = process(http);
            } catch (Exception e) {
                StringWriter sw = new StringWriter();
                e.printStackTrace(new PrintWriter(sw));
                result= sw.getBuffer().toString().getBytes();
                code = 500;
            }
            http.sendResponseHeaders(code, result.length);
            outputStream.write(result);
            outputStream.close();
        }
        abstract byte[] process(HttpExchange http) throws Exception;
    }
    static class Save extends Handler {
        @Override
        byte[] process(HttpExchange http) throws Exception {
            FileWriter fw = new FileWriter(new File("index.html"));
            fw.write(new String(read(http.getRequestBody()).toByteArray()));
            fw.close();
            return "saved".getBytes();
        }
    }
    static class Serve extends Handler {
        @Override
        byte[] process( HttpExchange http) throws Exception {
            String path = "." + http.getRequestURI().getRawPath();
            return read(new FileInputStream(path)).toByteArray();
        }
    }
    static ByteArrayOutputStream read(InputStream is) throws IOException {
        ByteArrayOutputStream buffer = new ByteArrayOutputStream();
        int nRead;
        byte[] data = new byte[1024];
        while ((nRead = is.read(data, 0, data.length)) != -1)
            buffer.write(data, 0, nRead);
        buffer.flush();
        return buffer;
    }
}
<head>
    <meta charset="UTF-8">
    <title>Example</title>
</head>
<body>
    <input type="text" id="txt" value="">
    <input type="button" onclick="save()" value="Сохранить">
    <script>
        function save() {
            txt.setAttribute('value', txt.value);
            return fetch('/save', {
                method: 'POST',
                body: document.documentElement.innerHTML,
            }).then(resp => {
                console.log(resp)
            }).catch(err => {
                console.error(resp)
            })
        }
    </script>
</body>
READ ALSO
Приложение с GUI на C#, а функционал на Python 3

Приложение с GUI на C#, а функционал на Python 3

Есть ли возможность сделать приложение с GUI, написанным на C#, а функционал на Python? Есть библиотеки и задачи которые будет в 14 раз легче написать...

102
IdentityServer4 вопрос необходимости

IdentityServer4 вопрос необходимости

я тут недавно начал пытаться разобраться в IdentityServerТак сложилось чтоя по работал на не скольких проектов, но почти всегда IdentityServer уже был...

104
Не передаются данные с помощью GET

Не передаются данные с помощью GET

После регистрации, прльзователю на почту приходит ссылка, для активации аккаунта, ссылка выглядит следующим образом:

99