This commit is contained in:
+153
-1
@@ -8,4 +8,156 @@
|
||||
- [Еще](https://github.com/AppLoidx/Web-Development-Cheats/blob/master/itmo-university/module%20tests/ModuleTest1Questions.md) 2022 год
|
||||
- [Задания](https://github.com/AppLoidx/Web-Development-Cheats/blob/master/itmo-university/module%20tests/ModuleTest1.md) на код 2022 года
|
||||
- Прошлогодняя [рубежка](https://github.com/sub-myitmo/web-rubezhka1)
|
||||
- [Еще](https://invited-digit-866.notion.site/2022-53c853d396364002b29a1331dfc78bba#80cee9d88a03495ea134ec05a365d43c) заметки в notion от 2022 годар
|
||||
- [Еще](https://invited-digit-866.notion.site/2022-53c853d396364002b29a1331dfc78bba#80cee9d88a03495ea134ec05a365d43c) заметки в notion от 2022 года
|
||||
## Разбор типовых задач
|
||||
### 1. Сделать слошную синюю границу 2px у текстового ввода внутри класса `auth_form` при фокусе
|
||||
```CSS
|
||||
.auth-form input[type="text"]:focus {
|
||||
border: 2px solid blue;
|
||||
}
|
||||
```
|
||||
### 2. Написать миксин на SCSS и использовать его в классе `user-card`, добавить вложенный стиль при наведении курсора
|
||||
```SCSS
|
||||
@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
|
||||
```JavaScript
|
||||
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-ответ
|
||||
```JavaScript
|
||||
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`
|
||||
```JavaScript
|
||||
$("#toggle-btn").on("click", () => {
|
||||
$(".content-box").slideUp().css("color", "red");
|
||||
console.log($("#statusInput").val());
|
||||
});
|
||||
```
|
||||
### 6. Написать FCGI-сценарий, который проверяет строку запроса, если там есть слово `ping`, то выводит `pong`. Иначе возвращает 400 ошибку
|
||||
```Java
|
||||
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-сессии
|
||||
```Java
|
||||
@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. Написать сервлет, который проверяет роль пользователя и пропускает, если он админ, иначе переадресация на сообщение об ошибке
|
||||
```Java
|
||||
@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 = res.getRequestDispatcher("/admin.jsp");
|
||||
disp.forward(req, res);
|
||||
}
|
||||
}
|
||||
```
|
||||
### 9. Написать фильтр, который пропускает пользователя дальше, только если в его сессии есть атрибут `user`
|
||||
```Java
|
||||
@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, которая будет закрывать текущее окно, если в нем открыт гугл
|
||||
```JavaScript
|
||||
function closeWindow() {
|
||||
if (window.location.href === "https://www.google.ru") {
|
||||
window.close();
|
||||
}
|
||||
}
|
||||
```
|
||||
### 11. Открытие в новом окне браузера гугла через JS
|
||||
```JavaScript
|
||||
window.open("http://google.com", "newwin", "width=1200,height=600");
|
||||
```
|
||||
|
||||
Reference in New Issue
Block a user