В дополнение к стойке, основной силой основных веб -фреймворков MVC является второе место в Spring MVC. Следовательно, это также основная структура, которую должен освоить программисту. С большим количеством фреймворков, естественно, есть больше решений для реализации при решении меняющихся потребностей и предприятий. Однако, если вы хотите гибко использовать Spring MVC для борьбы с большинством веб -разработки, вы должны освоить его конфигурацию и принципы.
1. Spring MVC Construction: (Spring 2.5.6 + Hibernate 3.2.0)
1. Введение пакета JAR
Весна 2.5.6: Spring.jar, Spring-Webmvc.jar, Commons-Logging.jar, Cglib-nodep-2.1_3.jar
Hibernate 3.6.8: Hibernate3.jar, Hibernate-JPA-2.0-API-1.0.1.final.jar, Antlr-2.7.6.jar, Commons-Collections-3.1, Dom4j-1.6.1.jar, Javassist-3.12.0.ga.jar, Jta-1.1.jar, slf4jj-api -1.12.0.ga.jar, jta -1.1.jar, slf4j-api -1.1.12. SLF4J-NOP-1.6.4.JAR, пакет JAR Driver для соответствующих баз данных
SpringMVC - это структура MVC, основанная на DispatcherServlet. Первое, что обращается к каждому запросу, - это диспетчер. DispatcherServlet отвечает за пересылку каждого запроса на запрос в соответствующий обработчик. После того, как обработчик обрабатывает его, он возвращает соответствующее представление (представление) и модель (модель). Возвращенное представление и модель не могут быть указаны, то есть вы можете только вернуть модель или только вернуть представление или нет.
DispatcherServlet унаследован от httpservlet. Поскольку SpringMVC основан на DispatcherServlet, давайте сначала настроем DispatcherServlet, чтобы он мог управлять контентом, которым мы хотим, чтобы он управлял. Httpservlet объявлен в файле web.xml.
<!-Конфигурация Spring MVC-> <!-===================================================================================================== <!- Вы можете настроить местоположение и имя файла конфигурации Servlet.xml. По умолчанию находится в каталоге Web-Inf, а имя-[<servlet-name>]]-Servlet.xml, например, Spring-servlet.xml <init-param> <param-name> contextConfiglocation </param-mame> <param-value>/wheb-inf/spring-servlet.xml </param-value> 默认 </init-param>->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->-> <Load-on-startup> 1 </load-on-startup> </servlet> <servlet-mapping> <servlet-name> spring </servlet-name> <url-pattern>*. Do </url-pattern> </servlet-mapping> <!-Spring 配置-> <!-====================================================================================================================================================================== -> <Learser> <llailerclass> org.springframework.web.context.contextloadlistener </stirler-class> </alinger> <!-Указывает каталог, где находится файл конфигурации Spring Bean. Конфигурация по умолчанию находится в каталоге Web-INF-> <Stext-param> <param-name> contextConfiglocation </param-name> <value> classPath: config/applicationContext.xml </param-value> </context-param>
Настройка Spring-servlet.xml
Имя Spring-Servlet происходит из-за того, что значение, соответствующее тегу <servlet-name> в web.xml выше, является Spring (<Servlet-name> Spring </servlet-name>) и имя файла Spring-Servlet. Если он изменен на Springmvc, соответствующее имя файла-Springmvc-servlet.xml.
<? xml version = "1.0" Encoding = "UTF-8"?> <Beans xmlns = "http://www.springframework.org/schema/beans" xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" xmlns: p = "http://www.springframework.org/schema/p" xmlns: context = "http://www.springframework.org/schema/context" xsi: schemalocation = "http://wwww.springframework.orschema http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-30.xsd http://www.springframework.org/schema/context <a href = "http://www.springframework.org/schema/context/spring-context-3.0.xsd"> http://www.springframework.org/schema/context/spring-3.0.xsd </a> "> <! <Контекст: Annotation-config /> <!-Установите пакет JAR, где класс, использующий аннотацию, находится-> <Контекст: компонент-сканирование Base-package = "Контроллер"> < /context: component-scan> <!-Завершите сопоставление запроса и аннотации Pojos-> <Bean /> <!-Урегулирование пути поворотной страницы. Префикс: префикс, суффикс: суффикс -> <bean P: prefix = "/jsp/" p: суффикс = ". jsp"/> </beans>
DispatcherServlet будет использовать специальные бобы для обработки запросов запросов и генерации соответствующих возвратов представления.
Что касается возврата представления, контроллер несет ответственность только за передачу значения назад, а затем какая точка зрения возвращается. Он контролируется проведением вида. Обычно используемый анализатор представления в JSP является InternalResourceViewResovler, который потребует префикса и суффикса.
В приведенном выше анализаторе анализатора, если контроллер возвращает блог/индекс, то представление проанализировано через анализатор просмотра IS /JSP/blog/index.jsp.
В основном говорить о контроллере.
Класс, который использует @Controller для маркировки, является контроллером
Контроллер пакета; импорт javax.servlet.http.httpservletrequest; import org.springframework.stepolype.controller; import org.springframework.web.bind.annotation.requestmapping; import org.spramework.web.bindation.RequestRepramer; // ActionPublic Class TestController, аналогичный картированию действий struts {@RequestMapping ("test/login.do") // Стопность адреса URL-адреса запроса, аналогичное картированию действий Struts 'Public String TestLogin (@RequestParam (value = "username") String usErname, String Passwer, httpservervequest refformequest) {//reeSteSteSteStERTESTERTERTERTERTERTERTERTERTERTERTERTERTERTERTERTEQUESTERTERTERTERTERTERTERVERT быть содержится в карте адреса URL -адреса (если не требуется атрибут = false) // @RequestParam может быть сокращено как: @RequestParam ("username") if (! "Admin" .equals (username) ||! "admin" .equals (пароль)) {return "loginError"; // Прыжок Путь страницы (по умолчанию переадресована), который не должен содержать префикс и суффикс, настроенный в файле конфигурации пружинного соревнования} return "loginsuccess"; } @RequestMapping ("/test/login2.do") public modelandView testlogin2 (string username, string password, int age) {// Запрос и ответ и ответ не должны появляться в методе. Если вы не можете его использовать, вы можете удалить его // Имя параметра соответствует имени элемента управления страницы, и тип параметра будет автоматически преобразован, если (! "Администратор" .equals (username) ||! "Admin" .equals (пароль) || age <5) {return new modelandview ("loginerror"); // вручную создать модель и заполнить страницу (вперед), эффект эквивалентен вышеуказанному методу для возврата строки} return New ModelAndView (new RedirectView ("../ index.jsp")); // Страница перенаправления путем перенаправления // Существует также простой способ написать перенаправление // вернуть New ModelAndView ("redirect: ../ index.jsp"); } @Requestmapping ("/test/login3.do") public modelandView testlogin3 (пользователь пользователя) {// Параметры также поддерживаются в виде объектов формы, аналогично ActionForm Struts. Пользователь не требует никакой конфигурации, просто напишите string username = user.getusername (); String password = user.getPassword (); int age = user.getage (); if (! "admin" .equals (username) ||! "admin" .equals (пароль) || age <5) {return new ModelAndView ("LoginError"); } вернуть New ModelAndView ("LoginSuccess"); } @Resource (name = "logInservice") // Получить идентификатор бобов в ApplicationContext.xml, который является LoginService, и вводите частное LoginService LoginService; // эквивалентно традиционному методу впрысной инъекции для написания методов GET и установления. Это преимущество является кратким и аккуратным, исключая ненужный код @requestmapping ("/test/login4.do") public String testlogin4 (пользователь пользователя) {if (loginservice.login (user) == false) {return "loginerror"; } вернуть "loginsuccess"; }}Приведенные выше четыре примера метода являются контроллером, который содержит различные URL -адреса запроса. Вы также можете использовать URL -адрес для различения различных методов доступа через параметры URL. Код заключается в следующем:
Контроллер пакета; импорт org.springframework.stereotype.controller; import org.springframework.web.bind.annotation.requestmapping; import org.springframework.web.bind.annotation.requestmethod;@Controller@requestmapping ("/test2/login.do"). ControllerPublic Class TestController2 {@Requestmapping public String testlogin (String username, String passwer, int age) {// Если параметры не добавляются, метод выполняется по умолчанию при запросе /test2/login.do if (! "Admin" .equals (username) || ". Администратор". } вернуть "loginsuccess"; } @RequestMapping (params = "method = 1", method = requestMethod.post) public String testlogin2 (String username, String Password) {// Различные методы вызова различаются на основе значения метода параметров параметров // Вы можете указать метод типа запроса страницы, который определяется, чтобы получить запрос, если (! "Администратор". "LoginError"; } вернуть "loginsuccess"; } @Requestmapping (params = "method = 2") public String testlogin3 (String username, String password, int age) {if (! "Admin" .equals (username) ||! "Admin" .equals (пароль) || age <5) {return "loginerror"; } вернуть "loginsuccess"; }}Фактически, MuseMapping может рассматриваться как URL -адрес запроса по запросу родительского запроса в классе, в то время как MARTEMPAPPAPPING может рассматриваться как URL -адрес запроса запроса ребенка на методе. URL -адрес -запрос родителей и ребенка в конечном итоге будет сплайсирован вместе, чтобы соответствовать URL -адресам запроса страницы. Следовательно, запросы также можно записать так:
Контроллер пакета; импорт org.springframework.stereotype.controller; import org.springframework.web.bind.annotation.requestmapping;@controller@requestmapping ("/test3/") // Запрос родителей urlpublic class -classcontroller3 {@requestmapping ("login.d effice/reffente oreplysmapping (" /test3/login.do public String testlogin (String username, String password, int age) {if (! "admin" .equals (username) ||! "admin" .equals (пароль) || age <5) {return "loginerror"; } вернуть "loginsuccess"; }}Общие аннотации в Springmvc включают @pathvariable, @requestparam, @pathvariable, помеченные параметрами метода. Параметры, отмеченные с использованием его, могут быть пройдены с помощью пути запроса. См. Следующий пример
@Requestmapping (value = "/comment/{blogid}", method = requestMethod.post) public void comment (комментарий комментария,@pathviable int blogyd, сеанс httpsession, httpservletresponsВ этом примере BlogyID помечен как переменная пути запроса @Pathvariable. Если запрос составляет /blog/comment/1.do, это означает, что значение BlogID составляет 1. Точно так же, @RequestParam также используется для передачи значений параметрам, но он с самого начала берет значение (параметр »).
В методе контроллера, если требуются веб -элементы httpservlectrequest, httpservletresponse и httpsession, вам необходимо только дать методу соответствующий параметр, то Springmvc автоматически передаст ему значение во время доступа. Тем не менее, следует отметить, что, если сеанс вызывается, когда в первый раз, когда вы получаете доступ к системе, будет сообщена ошибка, поскольку сеанс не был сгенерирован в настоящее время.
Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.