SpringMVC Learning [01]: [Введение, рабочий процесс, построение, передача значения]

Spring

содержание

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";
	}

   Разработчики, которые только начинают работать, могут ознакомиться с этим руководством. Надеюсь, оно поможет вам в обучении!