MVC, Security, AOP Flashcards

1
Q

Что такое MVC?

A

схема использования нескольких шаблонов проектирования, с помощью которых модель приложения, пользовательский интерфейс и взаимодействие с пользователем разделены на три отдельных компонента таким образом, чтобы модификация одного из компонентов оказывала минимальное воздействие на остальные

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Что такое Spring MVC?

A

Это фреймворк который реализует MVC, каркас основанный на HTTP и сервелатах.

  • Ясное и прозрачное разделение между слоями в MVC и запросах.
  • Стратегия интерфейсов - каждый интерфейс делает только свою часть работы.
  • Интерфейс всегда может быть заменен альтернативной реализацией.
  • Интерфейсы тесно связаны с Serlet API.
  • Высокий уровень абстракции для вебприложения.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Что такое DispatcherServlet?

A

Это сервлет, главная задача которого - принимать входные URL и находить правильную комбинацию обработчиков(контроллеров) и отображать (jsэ, html), которые объединяются в страницу или искомый ресурс.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Что такое WebApplicationContext?

A

“nj расширение обычного ApplicationContext, которое предоставляет конфигурацию для Web приложения и работает с интерфейсом java.servlet.ServletContext

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Чем отличается WebApplicationContext от ApplicationContext?

A

ApplicationContext это главный контекст, он может быть только один на все приложение. WebApplicationContext наследуется от ApplicationContext, его может быть несколько в одном приложении. Каждый DispatcherServlet ассоциируется с отдельным WebApplicationContext.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Для чего предназначена аннотация @Controller в Spring MVC?

A

Аннотация @Controller указывает, что данный класс играет роль контроллера. Основная цель аннотации @Controller - назначать шаблон данному классу, показывая его роль. Это значит, что диспетчер будет сканировать Contreller -классы на предмет реализованных методов, проверяя @RequestMapping аннотаций.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Для чего предназначена аннотация @RequestMapping в Spring MVC?

A

Предназначена для маппинга отдельных обработчиков запроса.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Как на один метод-контроллер заманит несколько URL используя @RequestMapping?

A

@ReuqestMapping(value={“”, “/”, “welcome”}
public String welcomeHandler()
{return(“welcome”);})

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Для чего предназначена и где используется аннотация @ModelAttribute в Spring MVC?

A

@ModelAttribute указывает что параметр играет роль Модели в шаблоне MVC. Это форма хранилища объекта.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Что такое @RequestBody в Spring MVC?

A

@RequestBody - аннотация указывает что параметр метода - это значение тела HTTP запроса.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Что такое @ResponseBody в Spring MVC?

A

@ResponseBody - аннотация указывает что возвращаемое значение - это тело HTTP ответа. То есть ответ нужно записать прямо в тело HTTP сообщения, а не передавать с помощью Model или возвращать имя view.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Какие есть конвертеры для тела HTTP запроса в Spring MVC?

A

ByteArrayHTTPMessageConverter
StringHttpMessageConverter
FormHttpMessageConverter
SourceHttpMessageConverter

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Для чего предназначена аннотация @PathVariable в SpringMVC?

A

Обозначает что параметр метода - это переменная в которой будет значение с URL запроса.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Чем отличаются теги и ?

A

декларирует общие аннотации: @required, @Autowired, @PostConstruct.
декларирует аннотации которые используются в контроллерах Spring MVC: @RequestMapping, @Controller, @RequestBody, @ResponseBody

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Какие есть способы выполнить валидации блинов в Spring MVC?

A

Использовать стандартные Java EE аннотации (JSR-330) средства: @Size, @NotNull, @Future, @Null, @Pattern.
В классе, экземпляр которого нужно проверить, реализовать интерфейс org.springframework.validation.Validator

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Что такое Interceptor в Spring MVC?

A

В Spring MVC есть возможность производить некие действия перед обработкой запроса, сразу после его обработки и перед отправкой ответа клиенту. Все это можно сделать с помощью так называемых Interceptoror’ов.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

Как сделать свой interceptor?

A
Наследоваться от одного из следующих классов:
ConversionServiceExplosingInterceptor
HadlerInterceptorAdapter
LocaleChangeInterceptor
ThemeChangeInteceptor
UserRoleAuthorizationInterceptor
WebContentInterceptor
WebRequestHandlerInperceptorAdapter
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
18
Q

Что такое ViewResolver в Spring MVC?

A

ViewResolver это интерфейс, который предлагает доступ к jsp, html страницам через имя.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
19
Q

Какие вы знаете реализации интерфейса ViewResolver?

A

XmlViewResolver
ResourseBundleViewResolver
InternalResourseViewResolver

20
Q

Что такое ContextLoaderListener?

A

Отвесает за загрузку контекста Web-приложения, когда оно начинает работать.

21
Q

Какие аннотации в Spring MVC больше всего подойдут для создания RESTful веб сервиса?

A

Используя аннотации @RestController: @RestController = @Controller + @ResponseBody

22
Q

Как обрабатывать исключительные ситуации в Spring MVC?

A

@ExceptionHandler, @ControllerAdvice

23
Q

Что такое Spring Security?

A

Spring Security это Java/JavaEE framework предоставляющий механизмы построения системы аутентификации и авторизации, а также другие возможности обеспечения безопасности для корпоративных приложений, созданных с помощью Spring Framework.

24
Q

Если в основе Spring MVC лежит сервлет, что лежит в основе Spring Security?

A

Фильтры и их цепочки.

25
Как получить SecurityContext?
SecurityContextHolder.getContext()
26
C точки зрения многопоточности, каким есть SecurityContextHolder?
SecurityContextHolder использует ThreadLocal для хранения информации,что означает, что контекст безопасности всегда доступен для методов исполняющихся в том же самом потоке, даже если контекст безопасности явно не передается в качестве аргумента этих методов.
27
Что представляет собой интерфейс Authentication, какие у него есть методы?
``` Authentication представляет пользователя (Principal) с точки зрения Spring Security. Методы: getAuthorities() getCredentials() getDetails() getPrincipal() isAuthenticated() setAuthenticated(boolean is Authenticated) ```
28
Что такое GrantedAuthority?
GrantedAuthority отражает разрешения, выданные пользователю в масштабе всего приложения, такие разрешения(как правило называются "роли"), например ROLE_ANONYMOUS ROLE_USER ROLE_ADMIN
29
Что представляет собой интерфейс UserDetails?
UserDetails предоставляет необходимую информацию для построения объекта Authentication из DAO объектов приложения или других источников данных системы безопасности. Объект UserDetails содержит имя пользователя, пароль, флаги: isAccountNonExpired, isAccountNonLocked, isCredentialsNonExpired, isEnabled и Collection - прав (ролей) пользователя.
30
Что вы знаете про интерфейс UserDetailsService?
Button единственный метод UserDetails loadUserByUsername(String username) throws UsernameNotFoundException; Этот метод должен проводить поиск пользователя (Principle) по его username. Если такого нет бросает исключение.
31
Кто проводит проверку паролей пользователя?
AutheticationManager проверяет UsernamePasswordAutheticationToken (экземпляр интерфейса Authentication )
32
Возможно ли "вручную" установить аутентификацию пользователя?
Да, возможно
33
Возможно ли использовать spring security без сессии?
Да, можно
34
Как получить UserDetails из Security Context?
UserDetails userdetails = (UserDetails)SecurityContextHolder .getContext .getAuthentication() .getPrincipal();
35
Что определяет интерфейс AuthenticationProvider?
``` Различные способы авторизации. Реализации: DaoAuthenticationProvider LdapAuthenticationProvider OpenIDAuthenticationProvider RemoteAuthenticationProvider RememberMeAuthenticationProvider ```
36
Что такое сквозная функциональность?
Под сквозной функциональностью понимается функциональность, реализовать которую в отдельном компоненте языка традиционными средствами процедурного или объектно-ориентированного программирования или очень сложно, или вообще невозможно, поскольку эта функциональность необходимо в большей части модулей системы. Кроме того, эта функциональность не относится напрямую к предметной области.(logging)
37
Что такое AOP?
Аспектно-ориентированное программирование - парадигма программирования, основанная на идее разделения функциональности для улучшения разбиения программы на модули. FJG дополняет объектно-ориентированное программирование, позволяя избавляться в программах от сквозной функциональности. Она появляется в программе тогда, когда реализация рассыпана по различным модулям программы. Сквозная функциональность приводит к рассредоточенному и запутанному коду, сложному для понимания и сопровождения.
38
Для каких задач используется AOP?
Когда существующий или метод должен знать только то, что он выполняет. Используя AOP, мы разбиваем код на несколько подмодулей, тем самым делая его более читаемым и поддерживаемым. - Логирование; - безопасность; - управление транзакциями; - контроль производительности; - управление сессиями.
39
Что такое Aspect?
Модуль или класс реализующих сквозную функциональность. Аспект изменяет поведение остального кода, применяя совет(Advice) в точках соединения (PinCut), определенных некоторым срезом. Аннотация @Aspect объявляет класс как аспект.
40
Что такое Advice?
Это средство оформления кода, которое должно быть вызвано из точки соединения. Advice может быть выполнен до, после или вместо точки соединения.
41
Какие аннотации в Spring AOP реализуют функциональность Advice?
``` @Before @After @AfterReturing @Around @AfterThrowing ```
42
Что такое точка соединения(Join point)?
Точка в выполняемой программе, где следует применить совет. Многие реализации АОП позволяют использовать вызовы методов и обращения к полям объекта в качестве точек соединения.
43
Что такое PointCut?
Набор JoinPoint. Срез определяет, подходит ли данная точка соединения к данному совету. Используется аннотация @PointCut
44
Какие недостатки AOP подхода?
Тесная связь между аспектом и компонентом делает аспект зависимым от компонента и при этом нарушается одна из основных идей FJG - независимость компонентов от применяемых к нему аспектов. Может привести к снижению производительности в больших системах если использовать "тяжелые объекты"
45
Какие существуют реализации AOP?
AspectJ AspectWerkz Boss AOP Spring AOP