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
Q

Как получить SecurityContext?

A

SecurityContextHolder.getContext()

26
Q

C точки зрения многопоточности, каким есть SecurityContextHolder?

A

SecurityContextHolder использует ThreadLocal для хранения информации,что означает, что контекст безопасности всегда доступен для методов исполняющихся в том же самом потоке, даже если контекст безопасности явно не передается в качестве аргумента этих методов.

27
Q

Что представляет собой интерфейс Authentication, какие у него есть методы?

A
Authentication представляет пользователя (Principal) с точки зрения Spring Security.
Методы: 
getAuthorities()
getCredentials()
getDetails()
getPrincipal()
isAuthenticated()
setAuthenticated(boolean is Authenticated)
28
Q

Что такое GrantedAuthority?

A

GrantedAuthority отражает разрешения, выданные пользователю в масштабе всего приложения, такие разрешения(как правило называются “роли”), например
ROLE_ANONYMOUS
ROLE_USER
ROLE_ADMIN

29
Q

Что представляет собой интерфейс UserDetails?

A

UserDetails предоставляет необходимую информацию для построения объекта Authentication из DAO объектов приложения или других источников данных системы безопасности.
Объект UserDetails содержит имя пользователя, пароль, флаги: isAccountNonExpired, isAccountNonLocked, isCredentialsNonExpired, isEnabled и Collection - прав (ролей) пользователя.

30
Q

Что вы знаете про интерфейс UserDetailsService?

A

Button единственный метод
UserDetails loadUserByUsername(String username) throws UsernameNotFoundException;
Этот метод должен проводить поиск пользователя (Principle) по его username.
Если такого нет бросает исключение.

31
Q

Кто проводит проверку паролей пользователя?

A

AutheticationManager проверяет UsernamePasswordAutheticationToken (экземпляр интерфейса Authentication )

32
Q

Возможно ли “вручную” установить аутентификацию пользователя?

A

Да, возможно

33
Q

Возможно ли использовать spring security без сессии?

A

Да, можно

34
Q

Как получить UserDetails из Security Context?

A

UserDetails userdetails = (UserDetails)SecurityContextHolder
.getContext
.getAuthentication()
.getPrincipal();

35
Q

Что определяет интерфейс AuthenticationProvider?

A
Различные способы авторизации.
Реализации:
DaoAuthenticationProvider
LdapAuthenticationProvider
OpenIDAuthenticationProvider
RemoteAuthenticationProvider
RememberMeAuthenticationProvider
36
Q

Что такое сквозная функциональность?

A

Под сквозной функциональностью понимается функциональность, реализовать которую в отдельном компоненте языка традиционными средствами процедурного или объектно-ориентированного программирования или очень сложно, или вообще невозможно, поскольку эта функциональность необходимо в большей части модулей системы. Кроме того, эта функциональность не относится напрямую к предметной области.(logging)

37
Q

Что такое AOP?

A

Аспектно-ориентированное программирование - парадигма программирования, основанная на идее разделения функциональности для улучшения разбиения программы на модули. FJG дополняет объектно-ориентированное программирование, позволяя избавляться в программах от сквозной функциональности. Она появляется в программе тогда, когда реализация рассыпана по различным модулям программы. Сквозная функциональность приводит к рассредоточенному и запутанному коду, сложному для понимания и сопровождения.

38
Q

Для каких задач используется AOP?

A

Когда существующий или метод должен знать только то, что он выполняет. Используя AOP, мы разбиваем код на несколько подмодулей, тем самым делая его более читаемым и поддерживаемым.

  • Логирование;
  • безопасность;
  • управление транзакциями;
  • контроль производительности;
  • управление сессиями.
39
Q

Что такое Aspect?

A

Модуль или класс реализующих сквозную функциональность. Аспект изменяет поведение остального кода, применяя совет(Advice) в точках соединения (PinCut), определенных некоторым срезом.
Аннотация @Aspect объявляет класс как аспект.

40
Q

Что такое Advice?

A

Это средство оформления кода, которое должно быть вызвано из точки соединения. Advice может быть выполнен до, после или вместо точки соединения.

41
Q

Какие аннотации в Spring AOP реализуют функциональность Advice?

A
@Before
@After
@AfterReturing
@Around
@AfterThrowing
42
Q

Что такое точка соединения(Join point)?

A

Точка в выполняемой программе, где следует применить совет. Многие реализации АОП позволяют использовать вызовы методов и обращения к полям объекта в качестве точек соединения.

43
Q

Что такое PointCut?

A

Набор JoinPoint. Срез определяет, подходит ли данная точка соединения к данному совету.
Используется аннотация @PointCut

44
Q

Какие недостатки AOP подхода?

A

Тесная связь между аспектом и компонентом делает аспект зависимым от компонента и при этом нарушается одна из основных идей FJG - независимость компонентов от применяемых к нему аспектов.
Может привести к снижению производительности в больших системах если использовать “тяжелые объекты”

45
Q

Какие существуют реализации AOP?

A

AspectJ
AspectWerkz
Boss AOP
Spring AOP