1. Начало работы с основами SpringMVC, создайте программу HelloWorld
1. Во -первых, импортируйте пакет JAR, требуемый SpringMVC.
2. Добавьте конфигурацию о Springmvc в файле конфигурации web.xml
<!-Настройте настройку Springmvcdispatcherservlet и настройте отображение-> <servlet> <servlet-name> springmvc </servlet-name> <servlet-class> org.springframework.web.servlet.dispatcherservlet </servlet-class> <init-param> <param-name> contextconfiglocation </servlet-class> <init-param> <paramy-dame> <param-name> </param-name> <param-value> classpath: springmvc-servlet.xml </param-value> </init-param> <!-<load-on-startup> 1 </load-on-startup>-> </servlet> <servlet-mapping> <servlet-name> springmvc </servlet-name> <urll>/</</url-pattern> </servlet-mpaping> </servlet-mpaping> </servlet> </servlet-mpaping> </url-pattern>/</</url-pattern> </servlet-name> <urll-pattern>/</url-pattern>
3. Добавить файл конфигурации springmvc-servlet.xml в SRC
<? 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: context = "http://www.springframework.org/schema/context" xmlns: mvc = "http://www.springframework.org/schema/mvc" xsi: schemalocation = "http://wwww.spramemema. http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-4.1.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.1.xsd "> <!-Scan Package и Sub-Package-> <context-scan-scan base-package =" test.spring. Ресурс-> <MVC: по умолчанию-servlet-handler /> <!-Если вы используете аннотацию, вы должны настроить следующую настройку-> <MVC: Annotation-viven /> <!-Настроить InternalResourceViewResolver-> <Bean Id = "internalResourceViewResolver"> <!-Prefix-> <Foview ID = "stailive" /vali-vatue " /vatue-vatue" /vatue-vatue " /vatue-vatue" /vali-in " /vatue-vatueviewresolver"> <!-суффикс-> <name = "суффикс" value = ". jsp"/> </bean> </beans>
4. Создайте папку с именем JSP в папке Web-Inf для хранения представления JSP. Создайте hello.jsp и добавьте в свое тело «Hello World».
5. Создать пакет и контроллер, как показано ниже
6. Код контроллера записи
@Controller @requestmapping ("/mvc") открытый класс mvccontroller {@requestmapping ("/hello") public String hello () {return "hello"; }}7. Запустите сервер и введите http: // localhost: 8080/имя проекта/mvc/hello
1. Дипетчерервлет
DispatcherServlet-это предварительный контроллер, настроенный в файле web.xml. Перехватывание соответствующих запросов. Правила перехвата сервлета должны быть определены сами по себе. Перехватываемые запросы распределяются по целевому контроллеру в соответствии с соответствующими правилами обработки. Это первый шаг в настройке Spring MVC.
2. InternalResourceViewResolver
Просмотреть имя Resolver
3. вышеупомянутые аннотации
@Controller отвечает за регистрацию бобов в контекст весеннего
@Requestmapping Annotation Указывает, какие запросы URL могут быть обработаны для контроллера
@Controller
Отвечает за регистрацию боба в весенний контекст
@Requestmapping
Аннотация указывает, какие запросы на URL могут быть обработаны для контроллера
@Requestbody
Эта аннотация используется для чтения части данных тела запроса запроса, использования httpmessageconverter, настроенной системой для анализа, а затем связывают соответствующие данные с возвратом объекта, а затем связывают данные объекта, возвращаемые Httpmessageconverter с параметрами метода в контролле
@Responsebody
Эта аннотация используется для записи объекта, возвращаемого методом контроллера в область данных тела объекта ответа после преобразования его в соответствующий httpmessageConverter в указанный формат
@Modelattribute
Используйте аннотацию @modelattribute в определении метода: Spring MVC Перед вызовом метода целевой обработки, метод, который аннотирует @modelattribute на уровне метода, будет вызоваться один за другим.
Используйте аннотацию @modelattribute перед введением параметра метода: вы можете получить объект из неявного объекта, привязать параметры запроса с объектом, а затем передать метод в объект параметра, чтобы добавить метод в модель.
@RequestParam
Используйте @RequestParam для передачи параметров запроса в метод запроса
@Pathvariable
Привязка заполнителя URL с параметрами входа
@ExceptionHandler
Аннотирован на методе, метод будет выполнен, когда произойдет исключение
@Controlleradvice
Сделайте контроллер глобальным классом обработки исключений. Метод, аннотированный методом @ExceptionHandler в классе, может обрабатывать все исключения, которые встречаются в контроллерах.
// совпадать автоматически @Requestmapping ("/person") public String toperson (string name, double age) {system.out.println (name+""+age); вернуть "Привет"; }1. Напишите класс личности объекта
Пакет Test.springmvc.model; открытый класс Person {public String getName () {return name; } public void setName (string name) {this.name = name; } public int getage () {return Age; } public void setage (int age) {this.age = age; } private String name; частный int возраст; }2. Написать методы в контроллере
// boxing автоматически @Requestmapping ("/person1") public String toperson (person p) {System.out.println (p.getName ()+""+p.getage ()); вернуть "Привет"; } // параметр был преобразован в initbinder @Requestmapping ("/date") открытая строка дата (дата дата) {System.out.println (date); вернуть "Привет"; } // Во время инициализации конвертируйте тип «Строка» в тип «дата» @InitBinder public void initbinder (ServletRequestDatabinder Binder) {binder.registerCustomeditor (date.class, new CustomDateEditor (new SompledateFormat ("yyyy-mm-dd"), true)); } // передавать параметры в Front-end @Requestmapping ("/show") public String showperson (map <string> map) {person p = new Person (); map.put ("p", p); P.Setage (20); p.setname ("Jayjay"); вернуть "шоу"; }Столь регистрации может получить "P" в домене запроса
// Передайте параметры на фронт с использованием AJAX @Requestmapping ("/getPerson") public void getPerson (String name, printwriter pw) {pw.write ("Привет,"+name); } @RequestMapping ("/name") public String sayshello () {return "name"; }Столь регистрации вызывает его со следующим кодом jQuery
$ (function () {$ ("#btn"). click (function () {$ .post ("mvc/getperson", {name: $ ("#name"). val ()}, function (data) {alert (data);});});}); // redirect @requestmapping ("/redirect") public String redirect () {return "redirect: hello"; }1. Два пакета банка необходимо импортировать
2. Добавить в файл конфигурации SpringMVC
<!-Настройки загрузки-> <bean id = "multipresolver"> <name = "maxuploadSize" value = "102400000"> </свойство> </bean>
3. Метод код
@RequestMapping (value = "/upload", method = requestMethod.post) public string upload (httpservletrequest req) исключение {multiparthttpservletrequest mreq = (MultiparthttpservletRequest) req; Multiplaartfile file = mreq.getfile ("file"); String fileName = file.getoriginalfilename (); SimpleDateFormat SDF = new SimpleDateFormat ("yyyyMmddhhmmss"); FileOutputStream fos = new FileOutputStream (req.getSession (). GetServletContext (). GetRealPath ("/")+"upload/"+sdf.format (new Date ())+filename.substring (fileName.lastIndexof ('.')); fos.write (file.getbytes ()); fos.flush (); fos.close (); вернуть "Привет"; }4. Форма стойки регистрации
<form action = "mvc/upload" method = "post" ectype = "multipart/form-data"> <input type = "file" name = "file"> <br> <input type = "Vade" value = "> </form>
@Controller @requestMapping ("/test") открытый класс mvccontroller1 {@requestmapping (value = "/param") public String testRequestParam (@RequestParam (value = "id") integer id, @RequestParam (value = "name") String name) {System.out.println (id+""+name); вернуть "/hello"; }}1.RestController
@Controller@requestmapping ("/rest") public class restcontroller {@requestmapping (value = "/user/{id}", method = requestmethod.get) public String get (@pathvariable ("id") integer id) {system.out.println ("get"+id); вернуть "/hello"; } @RequestMapping (value = "/user/{id}", method = requestMethod.post) public String post (@pathvairiable ("id") integer id) {system.out.println ("post"+id); вернуть "/hello"; } @RequestMapping (value = "/user/{id}", method = requestMethod.put) public String put (@pathvairiable ("id") integer id) {system.out.println ("put"+id); вернуть "/hello"; } @RequestMapping (value = "/user/{id}", method = requestMethod.delete) public String delete (@pathvairiable ("id") integer id) {System.out.println ("delete"+id); вернуть "/hello"; }}2. Форма форма отправляет запросы PUT и удаление
Настройка в web.xml
<!-Настройте hiddenhttpmethodfilter, преобразовать метод POST для размещения или удаления-> <Filter> <Filter-name> hiddenhttpmethodfilter </filter-name> <filter-class> org.springframework.web.filter.hiddenhttpmethodfilter </filter-class> filter-m-mifpasing> filter-m-class> filter-m-wyplater> hiddenhtpmethpilter </filter-m-class> <filter-name> hiddenhttpmethodfilter </filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
На переднем плане вы можете использовать следующий код для генерации запроса
<form action="rest/user/1" method="post"> <input type="hidden" name="_method" value="PUT"> <input type="submit" value="put"> </form> <form action="rest/user/1" method="post"> <input type="submit" value="post"> </form> <form action="rest/user/1" method="post"> <input type="submit" value = "get"> </form> <form action = "rest/user/1" method = "post"> <input type = "hidden" name = "_ method" value = "delete"> <input type = "Vade" value = "delete"> </form>
1. Импорт следующего пакета JAR
2. Код метода
@Controller @requestmapping ("/json") public class jsoncontroller {@responsebody @requestmapping ("/user") public user get () {user u = new user (); u.setid (1); U.SetName ("Jayjay"); U.SetBirth (New Date ()); вернуть u; }}1. Обработайте локальные исключения (в контроллере)
@ExceptionHandler public modelandView ExceptionHandler (Exception Ex) {modelandView mv = new ModelAndView ("erron"); mv.addobject ("Исключение", Ex); System.out.println («В TestexceptionHandler»); вернуть MV; } @RequestMapping ("/error") public String error () {int i = 5/0; вернуть "Привет"; }2. Обработка глобальных исключений (все контроллеры)
@Controlleradvicepublic class testControllerAdvice {@ExceptionHandler public modelandAndview ExceptionHandler (Exception Ex) {modelAndView MV = new ModelAndView ("error"); mv.addobject ("Исключение", Ex); System.out.println («В TestControllerAdvice»); вернуть MV; }}3. Другой способ справиться с глобальными исключениями
Настройка в файле конфигурации SpringMVC
<!-Настройка SimpleMappingExceptionResolver-> <Bean> <name = "exceptionMappings"> <props> <prop key = "java.lang.arithmeticexception"> error </prop> </props> </propetion> </bean>
Ошибка - это страница ошибки
1. Создайте класс MyInterceptor и реализуйте интерфейс HandlerInterceptor
открытый класс myInterceptor реализует HandlerInterceptor {@Override public void -последствия (httpservletrequest arg0, httpservletresponse arg1, object arg2, exception arg3), выдвигает исключение {System.out.println («послекомплектация»); } @Override public void posathandle (httpservletrequest arg0, httpservletresponse arg1, object arg2, modelandview arg3) выбрасывает исключение {system.out.println ("posthandle"); } @Override public boolean prehandle (httpservletrequest arg0, httpservletresponse arg1, object arg2) выбрасывает exection {system.out.println ("prehandle"); вернуть истину; }}2. Настройка в файле конфигурации SpringMVC
<!-Настройка перехвата-> <MVC: Interceptors> <MVC: Interceptor> <MVC: PATH = "/MVC/**"/> <BEAN> </bean> gt; </MVC: Interceptor> </mvc: Interceptors>
3. Заказ о выполнении перехватчика
1. Импорт пакет JAR, требуемый Hibernate-Validate
(Не выбирается, не нужно импортировать)
2. Напишите пользователь класса объекта и добавьте аннотации проверки
открытый класс пользователь {public int getId () {return id; } public void setId (int id) {this.id = id; } public String getName () {return name; } public void setName (string name) {this.name = name; } public Date getBirth () {return Birth; } public void setbirth (дата рождения) {this.birth = рождение; } @Override public String toString () {return "user [id =" + id + ", name =" + name + ", rower =" + rower + "]"; } private int id; @Notempty Private String Имя; @Past @datetimeformat (pattern = "yyyy-mm-dd") частная дата рождения;}PS: @past означает, что время должно быть прошлым значением
3. Используйте форму формы SpringMVC в JSP
<form:form action="form/add" method="post" modelAttribute="user"> id:<form:input path="id"/><form:errors path="id"/><br> name:<form:input path="name"/><form:errors path="name"/><br> birth:<form:input path="birth"/><form:errors path="birth"/><form:errors PATH = "Рождение"/> <form: ошибки path = "рождение"/> <form: ошибки PATH = "Рождение"/> <input Type = "отправить" value = "PUSE"> </form: form>
PS: путь, соответствующий имени
4. Код в контроллере
@Controller@requestmapping ("/form") public class formcontroller {@requestmapping (value = "/add", method = requestmethod.post) public String add (@valid user u, bindingResult br) {if (br.getErrorCount ()> 0) {return "addUser"; } return "showUser"; } @RequestMapping (value = "/add", method = requestMethod.get) public String add (map <string> map) {map.put ("user", new user ()); вернуть "AddUser"; }}PS:
1. Поскольку атрибут моделяции используется в JSP, в домене запроса должен быть «пользователь».
2.@Действительно означает проверку параметров в соответствии с аннотацией, отмеченной на объекте
3. Вернитесь на исходную страницу, чтобы повторно экспрессировать, и форма также будет повторно экспрессировать.
5. Настроить сообщение об ошибке
Добавить locale.properties в каталог SRC
Notempty.user.name = name нельзя быть пустым.
Настройка в файле конфигурации SpringMVC
<!-Настройте ресурс Locale-> <bean id = "messageource"> <name = "baseName" value = "locale"> </property> </bean>
6. Международный дисплей
Добавить locale_zh_cn.properties в SRC
Имя пользователя = пароль учетной записи = пароль
Добавлено в locale.properties
Имя пользователя = пользователь namepassword = пароль
Создайте локал.jsp
<body> <fmt: key message = "username"> </fmt: сообщение> <fmt: key message = "пароль"> </fmt: сообщение> </body>
Настройка в Springmvc
<!-Сделайте страницу JSP можно посетить-> <MVC: View-Controller Path = "/locale" View-name = "locale"/>
Пусть Locale.jsp будет напрямую доступен в соответствии с Web-Inf
Наконец, посетите locale.jsp, переключите язык браузера, а язык, который может видеть учетную запись и пароль, также был переключен.
1. Создайте пакет Test.springmvc.integrate для демонстрации интеграции и создания различных типов
2. Учистки организации
открытый класс пользователь {public int getId () {return id; } public void setId (int id) {this.id = id; } public String getName () {return name; } public void setName (string name) {this.name = name; } public Date getBirth () {return Birth; } public void setbirth (дата рождения) {this.birth = рождение; } @Override public String toString () {return "user [id =" + id + ", name =" + name + ", rower =" + rower + "]"; } private int id; @Notempty Private String Имя; @Past @datetimeformat (pattern = "yyyy-mm-dd") частная дата рождения;}3. Операторский класс
@Componentpublic class userservice {public userservice () {system.out.println ("Конструктор пользователей (/n/n/n/n/n/n/n/n/n/n"); } public void said () {System.out.println ("save"); }}4. Usercontroller
@Controller @requestMapping ("/Integrate") открытый класс usercontroller {@autowired private userservice userservice; @Requestmapping ("/user") public String SaveUser (@Requestbody @ModelAttribute Пользователь U) {System.out.println (u); userservice.save (); вернуть "Привет"; }}5. Файл конфигурации
Создать файл конфигурации Springioc ApplicationContext.xml в каталоге SRC
<? xml version = "1.0" Encoding = "UTF-8"?> <Beans xmlns = "http://www.springframework.org/schema/beans" xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" xsi: schemalocation = "http://www.springframework.org/schema/beans http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd "xmlns: util =" http://www.spramework.org/schema/util " xmlns: p = "http://www.springframework.org/schema/p" xmlns: context = "http://www.springframework.org/schema/context"> <Stext: component-can-package = "test.springmvc.integrate"> necptetmation nextration necptetmation "annotation vecontatired vecontation vecontired '> <texptration" annotation "annotation" annotation ". Express = "org.springframework.steretype.controller"/> <context: Exclude-Filter type = "annotation" Expression = "org.springframework.web.bind.annotation.controllerAdvice"/> </context: component-scan> </beans>
Добавить конфигурацию в web.xml
<!-- configure the springIOC --> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:applicationContext.xml</param-value> </context-param>
6. Сделайте некоторую конфигурацию в Springmvc, чтобы предотвратить перекрывающее управление Springmvc и Springioc от одного и того же объекта
<!-Сканируйте пакет и подпакет-> <Контекст: компонент-сканирование Base-package = "test.springmvc.integrate"> <context: include-filter type = "annotation" Expression = "org.springframework.steretype.controller"/> <Контекст: включает в себя тип filter = "annotation". Express = "org.springframework.web.bind.annotation.controllerAdvice"/> </context: component-scan>
1. Springmvc разработан на основе метода, а Struts2 разрабатывается на основе класса. SpringMVC отображает URL и метод в контроллере. После успешного отображения SpringMVC генерирует объект обработчика, который включает только метод. Выполнение метода заканчивается, и данные о формальных параметрах разрушаются. Разработка контроллера SpringMVC аналогична разработке веб -сервисов.
2. Springmvc может выполнять строительство в синглтоне, и рекомендуется использовать Development Singleton. Struts2 получает параметры через переменные элемента класса. Синглтон не может быть использован, можно использовать только несколько случаев.
3. После фактического тестирования Struts2 медленная, потому что он использует стойки. Если вы используете стойки, рекомендуется использовать JSTL.