Простая тема прыжка
Я лично рекомендую снова практиковать процесс строительства. Если вы чувствуете себя неприятным, вы можете скопировать предыдущий проект напрямую, но вам необходимо изменить небольшую информацию в pom.xml.
<groupId> com.hanpang.springmvc </GroupId> <ArtifactId> SpringMVC-demo01 </artifactid> <sersive> 0.0.1-snapshot </version>
1. Классы конфигурации основной конфигурации и классы загрузки
пакет com.hanpang.config; import org.springframework.context.annotation.componentscan; import org.springframework.context.annotation.configuration; импорт org.springframework.web.servlet.config.annotation.enablewebmvc;@configuration@enablewebmvc@componentscan (basepackages = "com.hanpang.
пакет com.hanpang.config; import org.springframework.web.servlet.support.abstractannotationConfigDispatcherServlectInitializer; открытый класс webInitializer расширяет класс AbstractannotationConfigDpatcherServlectInitializ {Webconfig.class}; } @Override Protected Class <?> [] GetServletConfigClasses () {return null; } @Override защищенная string [] getServletMappings () {return new String [] {"/"}; }}2. Метод прыжков Javaweb Stage
Обратите внимание на формальные параметры в методе SpringMVC, структура завершает операцию экземпляра для нас.
Пакет com.hanpang.web; импорт java.io.ioexception; import javax.servlet.servletexception; импорт javax.servlet.http.httpservletrequest; импорт javax.servlet.http.httpservelponse; import org.spramework.ssteryotyply.controller; org.springframework.web.bind.annotation.requestmapping; import org.springframework.web.servlet.modelandView; @Controller // Скажите, что это контроллер Public Class Demo01controller {@requestmapping (path = "/test01) public wuted wuted watry rupplor Запрос, httpservletresponse response) Throws ServletException, ioException {System.out.println («Формальные параметры создаются по умолчанию»); request.getRequestDispatcher ("/web-inf/jsp/demo01.jsp"). вернуть ноль; } @Requestmapping (path = "/test02") public model и традиционная способ jump_redirect (httpservletrequest, httpservletresponse response) Throws ioException {System.out.println («Формальные параметры созданы по умолчанию»); response.sendredirect (request.getContextPath ()+"/view/result01.jsp"); вернуть ноль; }} Примечание. Мы почти не используем этот метод, просто простую демонстрацию и обзор, по крайней мере, мы можем использовать этот метод для получения API сервлета !!!
3. Продемонстрировать, как контроллер прыгает на JSP
В конце примера мы добавим анализатор просмотра JSP. Вначале мы все равно будем следовать традиционному методу и иметь пошаговый процесс.
Пакет com.hanpang.web; импорт java.io.ioexception; import javax.servlet.servletexception; импорт javax.servlet.http.httpservletrequest; импорт javax.servlet.http.httpservelponse; import org.spramework.ssteryotyply.controller; org.springframework.web.bind.annotation.requestmapping; import org.springframework.web.servlet.modelandView; @Controller // Скажите, что это контроллер Public Class Demo01Controller {@Requestmapping (path = "/test03") publicandView infault inte inte inte inte inte inte inte inte into watch into watrodsiew intafleding {@Requestmapping (path = "/test03"). ModelAndView (); mav.setViewName ("/web-inf/jsp/demo01.jsp"); вернуть мав; } @Requestmapping (path = "/test04") public modelandView Установите метод перенаправления () {modelandView mav = new ModelAndView (); mav.setViewName ("redirect: /view/result01.jsp"); // или //mav.setViewName(UrlBasedViewResolver.redirect_url_prefix+"/view/result01.jsp "); вернуть мав; }} Это похоже на метод веб -сцены Java, но во время перенаправления устанавливается простой префикс.
4. Продемонстрировать, как контроллер прыгает на контроллер
Похоже на призыв из одного сервлета в другой
Пакет com.hanpang.web; импорт java.io.ioexception; import javax.servlet.servletexception; импорт javax.servlet.http.httpservletrequest; импорт javax.servlet.http.httpservelponse; import org.spramework.ssteryotyply.controller; org.springframework.web.bind.annotation.requestmapping; import org.springframework.web.servlet.modelandView; @Controller // Скажите, что это контроллер Public Class Demo01controller {@Requestmapping (Path = "/test05") PublicAnd и Public Model и Public Modeld wited Model и ModeldView Modeld Modeld Set The Mapping () {). ModelAndView (); mav.setViewName ("/test03"); вернуть мав; } @Requestmapping (path = "/test06") public modelandView set redirection () {modelandView mav = new ModelAndView (); mav.setViewName ("redirect:/test04"); вернуть мав; }} 5. Добавить анализатор просмотра JSP
Во время вышеупомянутой демонстрации мы обнаружили, что SetViewName в модели и обзор используется для завершения прыжка. Данные, передаваемые здесь, являются строкой, но метод обработки отличается. Когда путь прыжков префикс перефиксирован:, метод обработки отличается.
Кроме того, если у нас есть несколько строк, похожих на /веб-Inf/jsp/demo01.jsp, мы обнаруживаем, что есть много общественных частей. SpringMVC предоставляет нам класс, который специализируется на обработке запросов контроллера, пересылавшие страницы JSP.
Обратите внимание, что мое описание: Если вы обнаружите, что передаваемая вами строка не имеет какого -либо идентификатора префикса, то по умолчанию используйте анализатор просмотра конфигурации JSP, чтобы обработать его и завершить операцию пересылки запроса
Примечание. Настройте класс конфигурации ядра
пакет com.hanpang.config; import org.springframework.context.annotation.bean; import org.springframework.context.annotation.componentscan; import org.springframework.context.annotation.configuration; импорт org.spramework.web.servlet.viewresolforation; org.springframework.web.servlet.config.annotation.enablewebmvc; import org.springframework.web.servlet.view.internalresourceviewResolver; импорт org.springframework.web.servlet.view.JstlView;@Configuration@EnableWebMvc@ComponentScan(basePackages="com.hanpang.**.web")public class WebConfig { @Bean//Instantiate public ViewResolver viewResolver() { InternalResourceViewResolver jspViewResolver = new InternalResourceViewResolver (); jspviewresolver.setViewClass (jstlview.class); // Springmvc поддерживает JSTL Tag JspViewResolver.setPrefix ("/web-inf/"); jspviewresolver.setsuffix (". jsp"); вернуть jspviewresolver; }} ** Примечание: ** Пожалуйста, обратите внимание на аннотацию на методе @Bean
Метод эквивалентен коду в XML следующим образом
<bean id = "jspresourceviewresolver"> <property name = "prefix" value = "/web-inf/"/> <name = "suffix" value = ". jsp"/> <name = "viewclass" value = "org.springframework.web.servlet.view.jstlview"/> </bean>
Улучшить код JSP Controller
Этот анализатор представления может перенаправить только запросы JSP и недействителен для перенаправлений. Пожалуйста, обратите внимание на содержимое комментария кода
@Requestmapping (path = "/test03") public modelAndview По умолчанию это запрошено forturning () {modelandView mav = new ModelAndView (); //mav.setViewName("/web-inf/jsp/demo01.jsp "); // Advanced: по умолчанию он будет обрабатываться с использованием анализатора просмотра JSP, // prefix+"jsp/demo01"+суффикс =>/web-inf/jsp/demo01.jsp mav.setviewname ("jsp/demo01"); // Я обнаружил, что строка не имеет префикса модификации возврата MAV; } @Requestmapping (path = "/test04") public modelandView Установите метод перенаправления () {modelandView mav = new ModelAndView (); // Парсер невитает перенаправление mav.setViewName ("redirect: /view/result01.jsp"); вернуть мав; } Улучшить код контроллера контроллера
@Requestmapping (path = "/test05") public modelAndview непосредственно установить Path Mapping () {modelandView mav = new ModelAndView (); mav.setViewName ("/test03"); вернуть mav;}После настройки анализатора просмотра JSP снова проверьте приведенный выше код и с удивлением просмотрите результаты доступа.
Это соответствует тому, что мы говорили ранее «/test03» - это строка, которая будет обработана по умолчанию с помощью анализатора представления JSP. Так как это улучшить?
Вы можете установить префикс «вперед:», и код улучшается следующим образом:
@Requestmapping (path = "/test05") public modelAndview непосредственно установить Path Mapping () {modelandView mav = new ModelAndView (); mav.setViewName ("forward:/test03"); // или //mav.setViewName(UrlBasedViewResolver.forward_url_prefix+"/test03 "); вернуть mav;} Когда строка обнаружена изменена с помощью вперед:, ситуация обработки изменяется для преобразования из запроса контроллера в другой контроллер. Если перенаправление выполнено, код выглядит следующим образом:
@Requestmapping (path = "/test06") public modelandView set redirect () {modelandView mav = new ModelAndView (); mav.setViewName ("redirect:/test04"); вернуть mav;} 6. internalresourceviewresolver Приложение
InternalResourceViewResolver: это подкласс UrlBasedViewResolver, поэтому он поддерживает все функции, поддерживаемые urlbasedviewresolver.
В практических приложениях InternalResourceViewResolver также является наиболее широко используемым резолей. Так каковы уникальные особенности InternalResourceViewResolver?
С буквальной точки зрения, мы можем интерпретировать InternalResourceViewResolver как внутренний резольвер представления ресурса. Это особенность InternalResourceViewResolver.
InternalResourceViewResolver разрешит возвращаемые имена представлений в объекты InternalResourceView. InternalResourceView будет хранить атрибуты модели, возвращаемые методом процессора контроллера в соответствующих атрибутах запроса, а затем перенаправляет запрос на то, что на целевой URL на стороне сервера через requestDispatcher.
Например, в InternalResourceViewResolver, префикс =/web-inf/, суффикс = .jsp определяется в InternalResourceViewResolver, а затем тест имени представления, возвращаемого запрашиваемым методом процессора контроллера. В настоящее время InternalResourceViewResolver проанализирует тест в объект InternalResourceView, сначала сохранит возвращенные атрибуты модели в соответствующем атрибуте httpservlectrequest, а затем используйте requestDispatcher для пересылки запроса в /web-inf/test.jsp на стороне сервера. Это очень важная особенность InternalResourceViewResolver. Мы все знаем, что контент, хранящийся в / web-inf / не может быть запрошен напрямую с помощью запроса. По соображениям безопасности мы обычно размещаем файл JSP в каталог Web-INF, и то, как internaRresourceview на стороне сервера может хорошо решить эту проблему. Ниже приведено определение InternalResourceViewResolver. Согласно этому определению, когда возвращаемое имя логического представления проходит тест, InternalResourceViewResolver добавит в него определенный префикс и суффикс, форма «/web-inf/test.jsp», а затем используйте его в качестве URL InternalResourceView для создания нового объекта InternalResourceView.
Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.