• Мая 14, 2021, 07:14:46 am
• Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
Новости: на нашем Telegram канале: https://t.me/progkievua

Автор Тема: Java Pro 12.04.21  (Прочитано 295 раз)

Dmitriy Blokha

  • Пользователи
  • *
  • Сообщений: 7
    • Просмотр профиля
    • E-mail
Re: Java Pro 12.04.21
« Ответ #15 : Апреля 25, 2021, 11:08:23 pm »

Denis_Vorontsov

  • Пользователи
  • *
  • Сообщений: 10
    • Просмотр профиля
    • E-mail
Re: Java Pro 12.04.21
« Ответ #16 : Апреля 26, 2021, 01:26:50 pm »
дз: Аннотации package ua.kiev.prog;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import java.lang.reflect.Method;

public class TestPutNumberToMethodFromAnnotation {
    @Target(value= ElementType.METHOD)
    @Retention(value= RetentionPolicy.RUNTIME)
    @interface Test {
        int a();
        int b();
    }

    static class Sum {
        @Test(a = 2, b = 5)
        public static void test(int a, int b) {
            System.out.println("a + b = " + (a + b));
        }
    }

    public static class Annotation1 {
        public static   void main(String[] args) {
            try {
                Class<?> cls = Sum.class;
                Method method = cls.getMethod("test", int.class, int.class);
                if (method.isAnnotationPresent(Test.class)) {

                    Test ma = method.getAnnotation(Test.class);
                    method.invoke(null, ma.a(), ma.b());
                }
            } catch (Exception e) {
                System.out.println(e.toString());
            }
        }
}
    }
-----------------------


public class Main {

    public static void main(String[] args) throws IllegalAccessException, IllegalArgumentException, InvocationTargetException {
        TextContainer container = new TextContainer();
        Class<?> cls = container.getClass();

        SaveTo annSaveTo = cls.getAnnotation(SaveTo.class);

        Method[] methods = cls.getDeclaredMethods();
        for (Method method : methods) {
            if (method.isAnnotationPresent(Saver.class)) {
                method.invoke(container, annSaveTo.path());
            }
        }
    }
}


@Retention(value = RetentionPolicy.RUNTIME)
@interface SaveTo {

    String pth();
}

@Retention(value = RetentionPolicy.RUNTIME)
@interface Saver {
}

@SaveTo(path = "c:\\file.txt")
public class TextContainer {

    private static final String TEXT = "Hello from Ukraine!)";

    @Saver
    public static void save(String pth) {
        try (FileWriter writer = new FileWriter(pth)) {
            writer.write(TEXT);
            System.out.println("Saving: DONE");
        } catch (IOException ex) {
            System.out.println("Saving: ERROR - " + ex.getMessage());
        }
    }
}

Romantsov

  • Пользователи
  • *
  • Сообщений: 28
    • Просмотр профиля
    • E-mail
Re: Java Pro 12.04.21
« Ответ #17 : Апреля 26, 2021, 02:31:49 pm »
Дом задание №1. Анкета с выводом статистики
https://github.com/romanromancow/Homework1/blob/master/src/main/java/com/gmail/java/Ankieta.java
index.jsp - https://github.com/romanromancow/Homework1/blob/master/src/main/webapp/index.jsp
Александр, по коду возникли вопросы, можете объяснить, там есть комментарии. Спасибо

Romantsov

  • Пользователи
  • *
  • Сообщений: 28
    • Просмотр профиля
    • E-mail
Re: Java Pro 12.04.21
« Ответ #18 : Апреля 26, 2021, 02:36:09 pm »
Дом задание 2. 1. Создать аннотацию, которая принимает параметры для метода. Написать код который вызовет метод, помеченный аннотацией, и передаст параметры аннотации в вызываемый метод.
@Test(a=2, b=5)
public void test(int a, int b) {...}

1. Main.java - https://github.com/romanromancow/Homework2/blob/master/src/gmail/com/rra/Main.java
2. SomeClass - https://github.com/romanromancow/Homework2/blob/master/src/gmail/com/rra/SomeClass.java
3. Test - https://github.com/romanromancow/Homework2/blob/master/src/gmail/com/rra/Test.java

Alexander Ts

  • Преподаватели
  • Пользователи
  • *
  • Сообщений: 14797
    • Просмотр профиля
    • E-mail
Re: Java Pro 12.04.21
« Ответ #19 : Апреля 26, 2021, 10:57:01 pm »
Dmitriy Blokha
Решение верное

Denis_Vorontsov
Решение верное

Romantsov
Ответы на вопрос
Метод init() автоматически вызывается при создании сервлета. И то, что вы в нем напишите выполниться при загрузке сервлета

hm.put(age, hm.get(age)+1);В карту вы добавляете значение которое было на этом ключе до этого, при этом увеличив это значение на одну единицу.
А так решение верное

sergey_8888

  • Пользователи
  • *
  • Сообщений: 20
    • Просмотр профиля
Re: Java Pro 12.04.21
« Ответ #20 : Мая 01, 2021, 12:50:45 pm »
Первое задание на заполнение анкеты
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">
    <servlet-mapping>
        <servlet-name>answers</servlet-name>
        <url-pattern>/answers</url-pattern>
    </servlet-mapping>
    <servlet>
        <servlet-name>answers</servlet-name>
        <servlet-class>com.example.dem.Answers</servlet-class>
    </servlet>
</web-app>
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<!DOCTYPE html>
<html>
<head>
    <title>Anketa</title>
</head>
<body>
<h1><%= "Заколните анкету" %>
</h1>
<form action="answers" method="post" target="area">
    <p><b>Выберите ваш любимый напиток </b></p>
    <p><input type="radio" name="drink" value="coffee"> Кофе <Br>
        <input type="radio" name="drink" value="tea"> Чай <Br>
        <input type="radio" name="drink" value="water"> Вода <Br>
    <p><b> Выберите любимый цвет </b></p>
    <p><input type="radio" name="color" value="white"> Белый <Br>
        <input type="radio" name="color" value="green"> Зеленый <Br>
        <input type="radio" name="color" value="blue"> Синний <Br>
    <p><input type="submit" value="Результат"></p>

</form>

</body>
</html>
package com.example.dem;

import java.io.*;
import java.util.HashMap;
import javax.servlet.ServletException;
import javax.servlet.http.*;
import javax.servlet.annotation.*;

@WebServlet(name = "answers", value = "/answers")
public class Answers extends HttpServlet {
    private static HashMap<String, Integer> hm = new HashMap<>();

    public void init() {
        hm.put("coffee", 0);
        hm.put("tea", 0);
        hm.put("water", 0);
        hm.put("white", 0);
        hm.put("green", 0);
        hm.put("blue", 0);
    }


    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        resp.setContentType("text/html");
        String drink = req.getParameter("drink");
        String color = req.getParameter("color");
        hm.put(drink, hm.get(drink) + 1);
        hm.put(color, hm.get(color) + 1);
        PrintWriter out = resp.getWriter();
        out.println("<html><body>");
        out.println("<h1>Coffe - " + hm.get("coffee") +
                "<br>" + "Tea - " + hm.get("tea") +
                "<br>" + "Water - " + hm.get("water") +
                "<br>" + "White - " + hm.get("white") +
                "<br>" + "Green - " + hm.get("green") +
                "<br>" + "Blue - " + hm.get("blue"));
        out.println("</body></html>");

    }

    public void destroy() {
    }
}

Julia_H

  • Пользователи
  • *
  • Сообщений: 8
    • Просмотр профиля
    • E-mail
Re: Java Pro 12.04.21
« Ответ #21 : Мая 03, 2021, 04:54:39 pm »
2/1. Дом задание 2. 1. Создать аннотацию, которая принимает параметры для метода. Написать код который вызовет метод, помеченный аннотацией, и передаст параметры аннотации в вызываемый метод.

Цитировать
Main.java
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;

public class Main {
    public static void main(String[] args){
        Meth anno = new Meth();
        Class<?> hw21 = anno.getClass();
        Method[] acer=hw21.getDeclaredMethods();

        for (Method method:acer){
            if (method.isAnnotationPresent(Inter.class)){
                Inter inter = method.getAnnotation(Inter.class);

                try {
                    method.invoke(anno, inter.a(), inter.b());
                } catch (IllegalAccessException e) {
                    e.printStackTrace();
                } catch (InvocationTargetException e){
                    e.printStackTrace();
                }
            }
        }
    }
}
Цитировать
Meth.java
public class Meth {
    @Inter(a = 2, b = 5)
    public void inter(int a, int b) {
        System.out.println(a);
        System.out.println(b);
    }
}
Цитировать
Inter.java
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

    @Target(value=ElementType.METHOD)
    @Retention(value=RetentionPolicy.RUNTIME)
    public @interface Inter{
        int a();
        int b();
    }

Alexander Ts

  • Преподаватели
  • Пользователи
  • *
  • Сообщений: 14797
    • Просмотр профиля
    • E-mail
Re: Java Pro 12.04.21
« Ответ #22 : Мая 03, 2021, 10:16:12 pm »
Sergey_8888
Пора уже создавать аккаунт на GitHub.
Решение верное

Julia_H
Про GitHub также актуально.
Решение верное

Julia_H

  • Пользователи
  • *
  • Сообщений: 8
    • Просмотр профиля
    • E-mail
Re: Java Pro 12.04.21
« Ответ #23 : Мая 08, 2021, 12:56:01 pm »
Код для задачи 2.2 по ссылке https://github.com/JuliaGolubnycha/JavaPro/tree/main/Hometask2.2

Alexander Ts

  • Преподаватели
  • Пользователи
  • *
  • Сообщений: 14797
    • Просмотр профиля
    • E-mail
Re: Java Pro 12.04.21
« Ответ #24 : Мая 08, 2021, 11:26:52 pm »

Julia_H

Вот теперь красота

Андрей Борковский

  • Пользователи
  • *
  • Сообщений: 26
    • Просмотр профиля
    • E-mail
Re: Java Pro 12.04.21
« Ответ #25 : Мая 10, 2021, 01:30:22 pm »
Домашнее задание №3.
По чату:
1. Добавить ф-ю авторизации пользователей.
2. Добавить ф-ю приватных сообщений.
3. Добавить ф-ю получения списка всех
пользователей.
4. Добавить ф-ю чат-комнат.
5. Добавить ф-ю проверки статуса пользователя.

https://github.com/Borkovskiy/HomeworkJavaPro/tree/master/Homework3

sergey_8888

  • Пользователи
  • *
  • Сообщений: 20
    • Просмотр профиля

Alexander Ts

  • Преподаватели
  • Пользователи
  • *
  • Сообщений: 14797
    • Просмотр профиля
    • E-mail
Re: Java Pro 12.04.21
« Ответ #27 : Мая 11, 2021, 11:19:51 am »
Андрей Борковский
Решение верное

Sergey_8888
Решение верное