содержание
1. Введение в SpringMVC
2. Рабочий процесс SpringMVC
3. Описание сборки и конфигурационного файла SpringMVC
4. Способ передачи значения SpringMVC
Введение в SpringMVC
SpringMVC является продолжением SpringFrameWork и интегрирован в Spring Web Flow. Spring Framework предоставляет полнофункциональные модули MVC для создания веб-приложений. Используя подключаемую архитектуру Spring MVC, при использовании Spring для веб-разработки вы можете использовать среду Spring MVC Spring или интегрировать другие среды разработки MVC, такие как Struts1 (сейчас не используется), Structs2 (обычно используется в старых проектах) и т. д.
Функции:
1. SpringMVC является преемником Spring.
2. Каркас уровня управления (инкапсуляция сервлета)
3. Шаблон проектирования на основе MVC
M: сущность, дао, услуга
V:HTML,Jsp,скорость
C: уровень управления, SpringMVC, Struts2
Рабочий процесс SpringMVC
Схема принципа работы:
Источник изображения: ProcessOn Пользователь: Bear VIPТекстовое описание принципа работы:
1. Пользователь отправляет запрос на интерфейсный контроллер DispatcherServlet.
2. DispatcherServlet вызывает сопоставитель обработчика HandlerMapping после получения запроса.
3. Преобразователь процессора находит конкретный процессор, генерирует объект процессора и перехватчик процессора (если есть) и возвращает его DispatcherServlet.
4, DispatcherServlet вызывает адаптер обработчика HandlerAdapter.
5. HandlerAdapter вызывает определенные методы обработчика (контроллера, также называемого внутренним контроллером) после адаптации.
6. После завершения выполнения процессора верните ModelAndView в HandlerAdapter.
7. HandlerAdapter возвращает результат выполнения процессора ModelAndView в DispatcherServlet.
8. DispatcherServlet передает ModelAndView преобразователю представления ViewReslover.
9. ViewReslover возвращает конкретный вид в DispatcherServlet после синтаксического анализа.
10. DispatcherServlet вызывает парсер представления для визуализации представления в соответствии с представлением (то есть заполняет данные модели в представлении)
середина).
11. Верните обработанную страницу во внешний контроллер DispatcherServlet.
12. DispatcherServlet отвечает отображаемой страницей клиенту.
Глоссарий:
1. DispatcherServlet (интерфейсный контроллер): основной компонент, который координирует и вызывает другие компоненты.
2. HandlerMapping: найдите обработчик, который обрабатывает запрос в соответствии с запросом.
3.Handler: метод обработки запроса.
4.HandlerAdapter (адаптер обработчика): адаптируйте параметры, вызовите и выполните методы обработчика.
5.ModelAndView: инкапсулирует страницу для перехода и параметры, передаваемые на страницу.
6.ViewResolver (преобразователь представления): найдите страницу для перехода и разрешите данные на этой странице.
Построение SpringMVC
1. Создайте пакет полки зависимости веб-проекта:
2. Настройте фронт-контроллер в Web.xml:
<!-- 前端控制器-->
<servlet>
<servlet-name>springmvc</servlet-name>
<!-- 前端控制类-->
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!-- 指定springmvc配置文件路径,默认路径WEB-INF/servlet-name+"-"servlet.xml(springmvc-servlet.xml)-->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvc.xml</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<!-- “/”代表的是所有格式的请求,或者*.do,不可以*.*-->
<url-pattern>/</url-pattern>
</servlet-mapping>
3. Напишите файл конфигурации SpringMVC:
(другие процессоры сопоставления, не используемые по умолчанию, адаптеры процессоров и настраиваемые преобразователи представлений, а также соответствующие отношения между запросами и процессорами в виде узлов bean-компонентов)
<?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://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd">
<!--请求为"/login",由LoginController处理请求-->
<bean id="/login" class="com.springmvc.controller.LoginController"/>
</beans>
4. Пользовательский класс процессора (реализующий интерфейс):
Класс LoginController реализует интерфейс контроллера:
public class LoginController implements Controller {
@Override
public ModelAndView handleRequest(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception {
ModelAndView mv=new ModelAndView();
mv.setViewName("index");
mv.addObject("msg","登陆成功");
System.out.println(1111111);
return mv;
}
}
5. Тест:
Введите напрямую в браузере адресную строку: URL проекта / вход в систему
Дополнительные инструкции к конфигурационному файлу SpringMVC:
<!-- 实例化非默认的映射处理器-->
<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
<!-- 实例化非默认的适配处理器-->
<bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>
<!-- 定义视图解析器的前后缀,这样return "直接写网页名"不用再带后缀.jsp了-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/"/>
<property name="suffix" value=".jsp"/>
</bean>
Пользовательский класс процессора (метод аннотации):
1. Включите сканирование аннотаций и включите драйвер аннотаций MVC в файле конфигурации spring:
<!-- 扫包-->
<context:component-scan base-package="com.springmvc.controller"/>
<!-- 开启MVC注解驱动-->
<mvc:annotation-driven conversion-service="myConverter"/>
2. Определите класс процессора с помощью аннотаций
Здесь я создаю новый файл RegController.java:
@Controller//实例化次Controller类
public class RegController {
@RequestMapping("reg")//这个注解是为例映射匹配的请求"reg"
public ModelAndView reg(){
ModelAndView mv=new ModelAndView();
mv.setViewName("index");
mv.addObject("msg","注册1");
return mv;
}
}
иллюстрировать:
@RequestMapping("Имя запроса"): соответствующие запросы могут быть добавлены к классам или методам, а имя запроса в аннотации может быть опущено.
Уведомление:
1. На класс нельзя писать аннотацию @RequestMapping, но метод в классе должен быть написан как метод процессора.
2. Если и класс, и метод имеют эту аннотацию, а имя запроса в аннотации опущено, то этот метод является методом запроса по умолчанию. То есть при доступе к http://locathost:8080/springmvc01/ по умолчанию предпочтительно осуществляется доступ к статической домашней странице, а если статической домашней страницы нет, осуществляется доступ к запросу по умолчанию в фоновом режиме.
Метод передачи значения SpringMVC
бэкэнд
1.Через (Model, ModelAndView, Map, ModelMap) запрос запроса:
Описание случая:
Тип возвращаемого значения — String, а тип String используется в качестве имени представления по умолчанию; параметр типа класса в методе-обработчике будет создан автоматически.
@Controller
public class RegController {
@RequestMapping("reg")
public ModelAndView reg(){//ModelAndView传值
ModelAndView mv=new ModelAndView();
mv.setViewName("index");
mv.addObject("msg","注册1");
return mv;
}
@RequestMapping("reg1")//返回类型是String类型作为视图名;处理器中的类类型参数会自动实例化
public String reg1(Model m){//Model传值
m.addAttribute("msg","通过model将数据传到前端页面");
return "index";
}
@RequestMapping("reg2")
public String reg2(Map m){//Map传值
m.put("msg","通过map将数据传到前端页面");
return "index";
}
@RequestMapping("reg3")
public String reg3(ModelMap m){//ModelMap传值
m.put("msg","通过ModelMap 将数据传到前端页面");
return "index";
}
@RequestMapping("reg4")
public String reg4(){//返回类型是String类型作为视图名;处理器中的类类型参数会自动实例化
return "index";
}
}
2. Передать значения через Session:
@RequestMapping("reg5")
public String reg5(HttpSession session){
session.setAttribute("msg","通过session将数据传输到前端页面");
return "index";
}
интерфейсная jsp-страница:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
响应:${msg}
${uid}
</body>
</html>
Данные с внешнего интерфейса передаются на серверный
1.Фон получает данные, передаваемые страницей, через типы int, String и другие:
интерфейсная jsp-страница:
<a href="user/getUById?uid=1&uname=lkk">编辑</a>
<%--如果链接上加上user表示对应的类中加上了注解@RequestMapping("user"),
再访问处理器方法"getUById",表示是一个二级请求,
在这里我选用了一级请求:直接访问处理器方法。如下:--%>
<a href="getUById?uid=1&uname=lkk">编辑</a>
Фон получает данные страницы через int, String:
@RequestMapping("getUById")
public String getUById(Model m,int uid,String uname) {
m.addAttribute("msg", u);
return "main";
}
2. Фон получает данные, передаваемые страницей через пользовательский класс:
Класс сущности фонового пользователя:
public Class User{
private int uid;
private String uname;
}
Получать данные, отправленные страницей, через настраиваемый тип User:
@RequestMapping("getUById")
public String getUById(Model m,User u) {
m.addAttribute("msg", u);
return "index";
}
Разработчики, которые только начинают работать, могут ознакомиться с этим руководством. Надеюсь, оно поможет вам в обучении!