Files
roma-dxunvrs 9361978648
deploy / Pull and Restart (push) Successful in 16s
web fix
2026-11-02 22:42:10 +03:00

7.2 KiB

[!hint] В старых рубежках может быть актуально все, кроме вопросов о PHP Нужно знать весь материал лекций до 3.2

Разбор типовых задач

1. Сделать слошную синюю границу 2px у текстового ввода внутри класса auth_form при фокусе

.auth-form input[type="text"]:focus {
    border: 2px solid blue;
}

2. Написать миксин на SCSS и использовать его в классе user-card, добавить вложенный стиль при наведении курсора

@mixin card-style($bg-color: #ffffff) {
    background-color: $bg-color;
    border-radius: 8px;
}

.user-card {
    @include card-style;
    &:hover {
        opacity: 0.8;
    }
}

3. Написать код на JS, который читает поле ввода, если там число, то выводит удвоенное значение в консоль, иначе сообщение об ошибке в alert

const form = document.querySelector("#calcForm");
const input = document.querySelector("#numInput");
form.addEventListener("submit", (event) => {
    event.preventDefault();
    const text = input.value;
    const number = parseFloat(text);
    if (isNan(number)) {
        alert("Введите число");
    } else {
        console.log(number*2);
    }
});

4. Написать асинхронную функцию, которая делает POST запрос с координатами точки и возвращает json-ответ

async function sendCoordinates(x, y) {
    const url = "/api/points";
    const data = {x: x, y: y};
    const response = await fetch(url, {
        method: "POST",
        headers: {
            "Content-Type": "application/json"
        },
        body: JSON.stringify(data)
    });

    if (!response.ok) {
        throw new Error();
    }
    const res = await response.json();
    return res;
}

5. Через JQuery поменять элемент с классом content-box и вывести значение из поля ввода с id statusInput

$("#toggle-btn").on("click", () => {
    $(".content-box").slideUp().css("color", "red");
    console.log($("#statusInput").val());
});

6. Написать FCGI-сценарий, который проверяет строку запроса, если там есть слово ping, то выводит pong. Иначе возвращает 400 ошибку

public class Main {
    public static void main(String[] args) {
        FCGIInterface fcgi = new FCGIInterface();

        while (fcgi.accept() >= 0) {
            if (FCGIInterface.request == null) {
                continue;
            }

            String query = FCGIInterface.request.getProperty("QUERY_STRING");
            if (query != null && query.contains("ping")) {
                System.out.println("Content-Type: text/plain\n");
                System.out.println("ping");
            } else {
                System.out.println("Status: 400 Bad Request");
                System.out.println("Content-Type: text/plain\n");
                System.out.println("Bad Request");
            }
        }
    }
}

7. Написать сервлет, который считает количество заходов пользователя на сайт через HTTP-сессии

@WebServlet("/counter")
public class MyServlet extends HttpServlet {
    @Override
    public void doGet(HttpServletRequest req, HttpServletResponse res) {
        HttpSession session = req.getSession();
        if (session.getAttribute("visitCount") == null) {
            session.setAttribute("visitCount", 0);
        }
        int count = (Integer) session.getAttribute("visitCount") + 1;
        session.setAttribute("visitCount", count);
        res.setContentType("text/plain");
        PrintWriter out = res.getWriter();
        out.println("Вы посетили страницу %d раз".format(count));
    }
}

8. Написать сервлет, который проверяет роль пользователя и пропускает, если он админ, иначе переадресация на сообщение об ошибке

@WebServlet("/task")
public class MyServlet extends HttpServlet {
    @Override
    public void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
        String role = req.getParameter("role");
        if (role == null || !role.equals("admin")) {
            res.sendRedirect("/access-denied.html");
        }
        req.setAttribute("secretData", "TopSecret123");
        RequestDispatcher disp = req.getRequestDispatcher("/admin.jsp");
        disp.forward(req, res);
    }
}

9. Написать фильтр, который пропускает пользователя дальше, только если в его сессии есть атрибут user

@WebFilter("/secure/*")
public class MyFilter implements Filter {
    @Override
    public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws ServletException, IOException {
        HttpServletRequest httpReq = (HttpServletRequest) req;
        HttpServletResponse httpRes = (HttpServletResponse) res;
        HttpSession session = httpReq.getSession();
        if (session.getAttribute("user")==null) {
            httpRes.setContentType("text/plain");
            httpRes.setStatus(403);
            hhtpRes.getWriter().println("Вход воспрещен");
        } else {
            chain.doFilter(req, res);
        }
    }
}

10. Реализовать функцию на JavaScript, которая будет закрывать текущее окно, если в нем открыт гугл

function closeWindow() {
	if (window.location.href === "https://www.google.ru") {
		window.close();
	}
}

11. Открытие в новом окне браузера гугла через JS

window.open("http://google.com", "newwin", "width=1200,height=600");