Во-первых, простое понимание использования Spring MVC
Во-первых, построить Maven веб-проекта, самый простой проект MVC будет просто
<Зависимость> <идентификатор_группы> org.springframework </ The идентификатор_группы> <артефакта> Спринг-webmvc </ The артефакта> <версия> 5.1.7.RELEASE </ Version> </ зависимость> // область конфигурации Примечание, а также для предотвращения самостоятельного кота конфликт с банкой <зависимость> <идентификатор_группы> The javax.servlet </ The идентификатор_группы> <артефакта> The javax.servlet-API </ The артефакта> <версия> 4.0.1 </ Version> <сфера> при условии </ сфера> </ зависимостей > // если не применимо JSP, вы не можете настроить <зависимость> <идентификатор_группы> javax.servlet </ идентификатор_группы> <артефакта> JSTL </ артефакт> <версия> 1.2 </ версия> </ зависимость>
web.xml простая конфигурация
<? XML версия = "1.0" кодирование = "UTF-8"?> <веб-приложение XMLNS: XSI = "http://www.w3.org/2001/XMLSchema-instance" XMLNS = "HTTP: // Java .sun.com / XML / нс / JavaEE "XMLNS: веб = "http://java.sun.com/xml/ns/javaee" XSI: SchemaLocation =" http://java.sun.com/xml/ns / JavaEE http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd» ID = "" версия = "3,0"> WebApp_ID <! - корень МОК -> <имя-дисплей> исследование MVC <дисплей имя /> пружина <сервлет> <сервлет-имя> DispatcherServlet <сервлет-имя /> <servlet- класс > org.springframework.web.servlet.DispatcherServlet </ servlet- класс > <INIT-пары> <пары имя-> contextConfigLocation </ пары-имя> <пары-значение> путь к классам: /spring-mvc.xml </ пары-значение> </ INIT-пары> </ сервлет> <сервлет-отображение> <имя сервлет > DispatcherServlet <сервлет-имя /> <URL-шаблон> / </ URL-шаблон> </ сервлет-отображение> <радушны-файл-список> <радушны-файл> /index.html </ радушны-файл> </ добро пожаловать-файл-список> </ веб-приложение>
Mvc ресурсы, созданные в файле конфигурации каталога XML, в соответствии с определенным именем параметров инициализации в web.xml, являются наиболее базовая конфигурация из используемых компонентов анализа исходного кода
<? XML версия = "1.0" кодирование = "UTF-8"?> <бобы Xmlns = "http://www.springframework.org/schema/beans" XMLNS: XSI = "http://www.w3.org / 2001 / XMLSchema-экземпляр " XMLNS: контекст = "http://www.springframework.org/schema/context" XMLNS: MVC = "http://www.springframework.org/schema/mvc" XSI: SchemaLocation =" http://www.springframework.org/schema/beans HTTP: // www.springframework.org/schema/beans/spring-beans.xsd HTTP: // www.springframework.org/schema/context HTTP: // WWW .springframework.org / схема / контекст / весна-context.xsd HTTP://www.springframework.org/schema/mvc HTTP: // www.springframework.org/schema/mvc/spring-mvc.xsd "> < боб класс =" org.springframework.web.servlet.handler.SimpleUrlHandlerMapping "> <недвижимость имя = "urlMap"> <реквизит> <проп ключ = "/ test.do"> simpleConrol </ проп> </ реквизит> </ свойство> <свойство имя = "перехватчики" реф = "myHandlerInterceptor"> </ недвижимость> </ фасоль> <! -控制器-> <боб ID = "simpleConrol" класс = "контроль.SimpleControl «/> <! - Execute адаптер -> <боб класс= "org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter" /> <! -资源解析器-> <боб класс => "org.springframework.web.servlet.view.InternalResourceViewResolver" <имя = "префикс свойство "значение =" / WEB-INF / страница / "/> <свойство имя = "суффикс" значение =". JSP "/> имя = <свойство "viewClass" значение =" org.springframework.web.servlet.view.JstlView "/> </ боб> <боб ID =" "myHandlerInterceptor класс = "interceptor.MyHandlerInterceptor"> </ фасоль> <фасоль класс =" exceptionResolver.SimpleHandlerExceptionResolver "> </ фасоль> </ бобы>
Ниже приведены компоненты класса
контроллер
импорт javax.servlet.http.HttpServletRequest; импорт javax.servlet.http.HttpServletResponse; импорт org.springframework.web.servlet.ModelAndView; импорт org.springframework.web.servlet.mvc.Controller; общественный класс SimpleControl реализует контроллер { общественного ModelAndView handleRequest (HttpServletRequest запрос, HttpServletResponse ответ) бросает исключение { INT а = 1/0 ; ModelAndView мв = новый ModelAndView ( "тест" ); mv.addObject ( «слово», «это тест слово» ); вернуться мв; } }
HandlerExceptionResolver
импорт javax.servlet.http.HttpServletRequest; импорт javax.servlet.http.HttpServletResponse; импорт org.springframework.web.servlet.HandlerExceptionResolver; импорт org.springframework.web.servlet.ModelAndView; общественный класс SimpleHandlerExceptionResolver реализует HandlerExceptionResolver { общественных ModelAndView resolveException (HttpServletRequest запрос, HttpServletResponse ответ, обработчик объекта, исключение ех) { ModelAndView мв = новый ModelAndView ( "ошибка" ); вернуться мв; } }
HandlerInterceptor
импорт javax.servlet.http.HttpServletRequest; импорт javax.servlet.http.HttpServletResponse; импорт org.springframework.web.servlet.HandlerInterceptor; импорт org.springframework.web.servlet.ModelAndView; общественный класс MyHandlerInterceptor реализует HandlerInterceptor { общественного логический preHandle (HttpServletRequest запрос, HttpServletResponse ответ, обработчик объекта) бросает исключение { System.out.println ( "это MyHandlerInterceptor preHandle" ); вернуться верно ; } Общественного недействительнымиpostHandle (HttpServletRequest запрос, HttpServletResponse ответ, обработчик объекта, ModelAndView ModelAndView) бросает исключение { System.out.println ( "это MyHandlerInterceptor postHandle" ); } Общественного недействительными afterCompletion (HttpServletRequest запрос, HttpServletResponse ответ, обработчик объекта, исключение ех) бросает исключение { System.out.println ( "это MyHandlerInterceptor afterCompletion" ); } }
Может быть также специальное исключение, специальный код возврата возвращается, когда возвращенный Выборочная исключение
импорт org.springframework.http.HttpStatus; импорт org.springframework.web.bind.annotation.ResponseStatus; @ResponseStatus (код = HttpStatus.INTERNAL_SERVER_ERROR, причина = "это MyException" ) общественный класс MyException распространяется исключение { частный статический окончательный длинный serialVersionUID = 1L ; }
Обычно конфигурируется, чтобы взять на себя
<? XML версия = "1,0" кодировка = "GBK"?> <бобы Xmlns = "http://www.springframework.org/schema/beans" XMLNS: XSI = "http://www.w3.org/2001 / XMLSchema инстанции " Xmlns: контекст = "http://www.springframework.org/schema/context" XMLNS: MVC = "http://www.springframework.org/schema/mvc" XSI: SchemaLocation =" HTTP: //www.springframework.org/schema/beans HTTP: // www.springframework.org/schema/beans/spring-beans.xsd HTTP: // www.springframework.org/schema/context HTTP: // www.springframework .org / схема / контекст / весна-контекст.XSD HTTP: //www.springframework.org/schema/mvc HTTP: // www.springframework.org/schema/mvc/spring-mvc.xsd "> <контекст: компонент-сканирования base- пакет =" com.tuling.mvc.control "/ > <! -注解驱动-> <MVC: аннотация привода /> <! -视图仓库-> <боб класс = "org.springframework.web.servlet.view.InternalResourceViewResolver"> <имя свойства =» приставка "значение = "/ WEB-INF / страница /"/> имя = <свойство "" значение =" суффикс. JSP "/> имя = <свойство" "viewClass значение =" org.springframework.web.servlet.view.JstlView "/> </ фасоль> </ бобы>