Это первая статья в моем блоге, связанная с Spring MVC. Начало всегда волнующее, поэтому я постараюсь быть лаконичным и информативным. Spring MVC позволяет создавать веб-приложения максимально удобным, простым и быстрым способом. Начало работы с этой технологией подразумевает знание Spring CORE. В посте вы прочтете о создании простого Spring MVC Controller. Я предпочитаю настройку приложения на основе Java, поэтому пример будет содержать этот подход.
Основная цель — создание контроллера, который будет обрабатывать запрос. Следовательно, после нажатия на ссылку вы будете перенаправлены на конкретную страницу с помощью контроллера Spring.
подготовка
Создайте в Eclipse новый динамический веб-проект, а затем преобразуйте его в проект Maven . Убедитесь, что ваш файл web.xml выглядит следующим образом:
01
02
03
04
05
06
07
08
09
10
|
<!--?xml version="1.0" encoding="UTF-8"?--> < web-app xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" xmlns = "http://java.sun.com/xml/ns/javaee" xmlns:web = "http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemalocation="http://java.sun.com/xml/ns/javaee < display-name >SimpleController</ display-name > < welcome-file-list > < welcome-file >index.jsp</ welcome-file > </ welcome-file-list > </ web-app > |
index.jsp будет играть роль домашней страницы в приложении, поместите ее в src / main / webapp / index.jsp ; Вот код index.jsp:
1
2
3
4
5
6
|
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> ... < h1 >Home page</ h1 > < p >This is a Home Page.</ p > ... |
В результате структура проекта будет выглядеть так:
Настройка зависимостей
Далее мне нужно добавить некоторые зависимости в файл pom.xml. Я больше не буду говорить о зависимостях, я прокомментирую код ниже:
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
|
< properties > < spring.version >3.1.1.RELEASE</ spring.version > </ properties > < dependencies > <!-- Spring --> < dependency > < groupid >org.springframework</ groupid > < artifactid >spring-context</ artifactid > < version >${spring.version}</ version > </ dependency > < dependency > < groupid >org.springframework</ groupid > < artifactid >spring-webmvc</ artifactid > < version >${spring.version}</ version > </ dependency > < dependency > < groupid >org.springframework</ groupid > < artifactid >spring-beans</ artifactid > < version >${spring.version}</ version > </ dependency > < dependency > < groupid >org.springframework</ groupid > < artifactid >spring-web</ artifactid > < version >${spring.version}</ version > </ dependency > <!-- CGLIB is required to process @Configuration classes --> < dependency > < groupid >cglib</ groupid > < artifactid >cglib</ artifactid > < version >2.2.2</ version > </ dependency > <!-- Servlet API, JSTL --> < dependency > < groupid >javax.servlet</ groupid > < artifactid >javax.servlet-api</ artifactid > < version >3.0.1</ version > < scope >provided</ scope > </ dependency > < dependency > < groupid >jstl</ groupid > < artifactid >jstl</ artifactid > < version >1.2</ version > </ dependency > </ dependencies > |
Более подробную информацию о зависимостях Spring вы можете найти в официальном блоге .
Конфигурация на основе Java
Пришло время создать конфигурацию для приложения. Как я упоминал выше, этот подход удобен, и одной из причин является использование аннотаций. Во-первых, я собираюсь создать класс WebAppConfig
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
package com.sprmvc.init; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.EnableWebMvc; import org.springframework.web.servlet.view.JstlView; import org.springframework.web.servlet.view.UrlBasedViewResolver; @Configuration //Specifies the class as configuration @ComponentScan ( 'com.sprmvc' ) //Specifies which package to scan @EnableWebMvc //Enables to use Spring's annotations in the code public class WebAppConfig { @Bean public UrlBasedViewResolver setupViewResolver() { UrlBasedViewResolver resolver = new UrlBasedViewResolver(); resolver.setPrefix( '/WEB-INF/pages/' ); resolver.setSuffix( '.jsp' ); resolver.setViewClass(JstlView. class ); return resolver; } } |
Это сделано, чтобы указать путь, где хранятся все JSP. Это необходимо для того, чтобы использовать дополнительные читаемые URL-адреса.
Теперь очередь за классом Initializer для обзора:
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
package com.sprmvc.init; import javax.servlet.ServletContext; import javax.servlet.ServletException; import javax.servlet.ServletRegistration.Dynamic; import org.springframework.web.WebApplicationInitializer; import org.springframework.web.context.support.AnnotationConfigWebApplicationContext; import org.springframework.web.servlet.DispatcherServlet; public class Initializer implements WebApplicationInitializer { @Override public void onStartup(ServletContext servletContext) throws ServletException { AnnotationConfigWebApplicationContext ctx = new AnnotationConfigWebApplicationContext(); ctx.register(WebAppConfig. class ); ctx.setServletContext(servletContext); Dynamic servlet = servletContext.addServlet( 'dispatcher' , new DispatcherServlet(ctx)); servlet.addMapping( '/' ); servlet.setLoadOnStartup( 1 ); } } |
Обратите внимание, что класс Initializer реализует интерфейс WebApplicationInitializer . Это необходимо, чтобы избежать XML-конфигурации веб-приложения.
JSP для контроллера
Прежде чем я покажу вам, как создать простой контроллер, мне нужно создать файл JSP, к которому контроллер нас приведет.
1
2
3
4
5
6
7
|
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> ... < p >Hello world: ${message}</ p > < p >Well done!</ p > ... |
Вот путь к JSP-файлу: src / main / webapp / WEB-INF / pages / hello.jsp
Обратите внимание, что в классе WebAppConfig я указал такие части пути, как sufix и prefix.
контроллер
И, наконец, код класса LinkController
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
|
package com.sprmvc.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.servlet.ModelAndView; @Controller public class LinkController { @RequestMapping (value= '/hello-page' ) public ModelAndView goToHelloPage() { ModelAndView view = new ModelAndView(); view.setViewName( 'hello' ); //name of the jsp-file in the 'page' folder String str = 'MVC Spring is here!' ; view.addObject( 'message' , str); //adding of str object as 'message' parameter return view; } } |
Теперь вам нужно обновить файл index.jsp, добавив туда ссылку на страницу Hello:
1
2
3
4
5
6
7
|
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> ... < h1 >Home page</ h1 > < p >This is a Home Page.</ p > < p >< a href = "hello-page.html" >Hello world link</ a ></ p > ... |
Окончательная структура проекта:
Запустите проект, откройте index.jsp и нажмите на ссылку, и вы получите:
Резюме
Иногда учебники действительно полезны, но лучший способ научиться использовать Spring — это прочитать официальную документацию, поэтому я рекомендую вам углубиться в блог Spring.
Ссылка: Spring MVC: Создание простого контроллера на основе Java от нашего партнера по JCG Алекса Фрузенштейна в блоге заметок Фрузенштейна .