Serie de llenado de pozos | Comenzando con SpringMVC

1. ¿Qué es SpringMVC?

Insertar descripción de la imagen aquí

Es un marco basado en el modelo de desarrollo MVC y se utiliza para optimizar controladores. Es miembro de la familia Spring y también tiene COI y AOP.

  • ¿Qué es MVC?
    Es un patrón de desarrollo, que es la abreviatura de Model View Controller. Todas las aplicaciones web están desarrolladas en base a MVC.
    M: capa de modelo, incluidas clases de entidad, capa de lógica empresarial, capa de acceso a datos
    V: capa de vista, html, javaScript, vue, etc. son todas capas de vista que se utilizan para mostrar datos
    C: controlador, que se utiliza para recibir solicitudes de clientes. Y devolver el componente que responde al cliente, Servlet es el componente
    Insertar descripción de la imagen aquí

2. Ventajas del marco SpringMVC

  1. Marco ligero basado en MVC
  2. Funciones potentes, fáciles de usar y fáciles de entender
  3. Tiene COI y AOP
  4. Completamente desarrollado en base a anotaciones.

3. Pasos para desarrollar el marco SpringMVC basado en anotaciones

1) Cree un nuevo proyecto y seleccione la plantilla de la aplicación web
2) Modifique el directorio, agregue la prueba faltante, java, recursos (dos conjuntos) y modifique los atributos del directorio
3) Modifique el archivo pom.xml, agregue dependencias SpringMVC y agregar dependencias de servlet

  <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-webmvc</artifactId>
    <version>5.2.5.RELEASE</version>
  </dependency>
  <!--添加servlet的依赖-->
  <dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>3.1.0</version>
  </dependency>

4) Agregue el archivo de configuración springmvc.xml, especifique el escaneo de paquetes y agregue un analizador de vistas.

  <!--添加包扫描-->
  <context:component-scan base-package="com.bjpowernode.controller"></context:component-scan>
  <!--添加视图解析器-->
  <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
      <!--配置前缀-->
      <property name="prefix" value="/admin/"></property>
      <!--配置后缀-->
      <property name="suffix" value=".jsp"></property>
  </bean>

5) Elimine el archivo web.xml y cree un nuevo web.xml.
6) Registre el marco springMVC en el archivo web.xml (todas las solicitudes web se basan en servlets)

    <!--注册SpringMVC框架-->
    <servlet>
        <servlet-name>springmvc</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:springmvc.xml</param-value>
        </init-param>
    </servlet>
    <servlet-mapping>
        <servlet-name>springmvc</servlet-name>
        <!--
          指定拦截什么样的请求
          http://localhost:8080/one
          http://localhost:8080/index.jsp
          http://localhost:8080/demo.action
          <a href="${pageContext.request.contextPath}/demo.action">访问服务器</a>
        -->
        <url-pattern>*.action</url-pattern>
    </servlet-mapping>

7) Cree un nuevo directorio de administración en el directorio de la aplicación web, cree una nueva página main.jsp en el directorio de administración, elimine la página index.jsp, cree una nueva y envíe una solicitud al servidor. 8) Desarrollar el controlador
( Servlet), que es una clase ordinaria.

    @Controller  //交给Spring去创建对象
  public class DemoAction {
      /**
       * 以前的Servlet的规范
       * protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {}
       * action中所有的功能实现都是由方法来完成的
       * action方法的规范
       * 1)访问权限是public
       * 2)方法的返回值任意
       * 3)方法名称任意
       * 4)方法可以没有参数,如果有可是任意类型
       * 5)要使用@RequestMapping注解来声明一个访问的路径(名称)
       *
       */
      @RequestMapping("/demo")
      public String demo(){
          System.out.println("服务器被访问到了.......");
          return "main";  //可以直接跳到/admin/main.jsp页面上
      }
  }

9) Agregue Tomcat para la función de prueba.

4. Analice el proceso de
ejecución de la solicitud web
Procesador central
index.jsp<--------------->DispatcherServlet<--------------- ---->El procesador de SpringMVC es un método ordinario
one.jsp <--------------->DispatcherServlet<-------------- --- -->El procesador de SpringMVC es un método común

DispatcherServlet debe estar registrado en el archivo web.xml para estar disponible.

5. Explicación detallada de la anotación @RequestMapping.
Esta anotación se utiliza para mapear la ruta de acceso al servidor.
1) Esta anotación se puede agregar al método para registrar un nombre accesible (ruta) para este método.
@RequestMapping("/demo ")
public String demo (){ System.out.println("Se ha accedido al servidor..."); return "main"; //Puedes saltar directamente a la página /admin/main.jsp } Accede al servidor



2) Esta anotación se puede agregar a la clase, que es equivalente al nombre del paquete (ruta virtual) para distinguir los nombres de las mismas acciones en diferentes clases
@RequestMapping("/user")
public class DemoAction1 {...}
Acceso el servidor

3) Esta anotación puede distinguir solicitudes de obtención y solicitudes de publicación
@Controller
public class ReqAction { @RequestMapping(value = "/req", método = RequestMethod.GET) public String req(){ System.out.println("Estoy procesando get Solicitado..."); return "main"; } @RequestMapping(value = "/req", método = RequestMethod.POST) public String req1(){ System.out.println("Estoy procesando la solicitud de publicación.. .") ; return “main”; } } 6. Optimización de cinco métodos de envío de datos 1) Página única de envío de datos:













Nombre:
Edad:
acción: @RequestMapping("/one") public String one(String myname,int age){ ===>Inyección automática y conversión de tipos System.out.println("myname="+myname+",age ="+(age+100)); return "main"; } 2) El objeto encapsula los datos enviados en la solicitud de envío. Asegúrese de que el nombre del parámetro de solicitud sea coherente con el nombre de la variable miembro en la clase de entidad , entonces el objeto se puede crear automáticamente. Enviar datos automáticamente, convertir tipos automáticamente y encapsular datos automáticamente en objetos. Clase de entidad: clase pública Usuarios { nombre de cadena privada; edad int privada;} Página: Nombre: Edad: acción: @RequestMapping ("/two") public
String
two (Users u){ System.out.println(u); return "main"; } 3) El envío de marcador de posición dinámico se limita a los datos de envío de hipervínculos o bloques de direcciones. Es una barra con un valor, una barra con una llave, use la anotación @PathVariable para analizar y enviar dinámicamente @RequestMapping("/tres/{uname}/{uage}") public String three( @PathVariable("uname") ===>Se utiliza para analizar los parámetros de solicitud en la ruta Nombre de cadena, @PathVariable("uage") int age){ System.out.println("name="+name+",age="+(age+100)); return "main"; } 4) El nombre de la asignación no coincide con el nombre del parámetro de solicitud enviado y el parámetro formal del método de acción. Inconsistente, use la anotación @RequestParam para resolver /** * Nombre:
* Edad:
*/ @RequestMapping("/four") public String four( @RequestParam("name") == =>Especialmente utilizado para resolver el problema de inconsistencia de nombres String uname, @RequestParam("age") int uage){ System.out.println("uname="+uname+",uage="+(uage+100)); return "main"; } 5) Extraer datos manualmente /** * Nombre:
* Edad:
*/ @RequestMapping("/five") public String five(Solicitud HttpServletRequest){ String nombre = request.getParameter("nombre"); int edad = Integer.parseInt(request.getParameter("edad")); System.out .println("name="+name+",age="+(age+100)); return "main"; } 7. Filtro de configuración de solución confusa china. codificar org.springframework.web.filter.CharacterEncodingFilter codificación UTF -8 forceRequestEncoding verdadero forceResponseEncoding verdadero codificar /*

8. Valor de retorno del método de acción
1) Cadena: la dirección del recurso del cliente, que une automáticamente el prefijo y el sufijo. También puede bloquear la unión automática de cadenas y puede especificar la ruta de retorno. 2) Objeto: Devuelve
un objeto en formato json. Convierta automáticamente el objeto O convierta la colección a json. Utilice la herramienta jackson para la conversión y debe agregar la dependencia de jackson. Generalmente se usa para solicitudes ajax. 3) void: sin valor de retorno, generalmente se usa para solicitudes ajax
.
4) Tipos de datos básicos, utilizados para solicitudes ajax
5) ModelAndView: Devuelve datos y objetos de vista, que rara vez se utilizan ahora.

9. Complete la solicitud ajax para acceder al servidor y devolver la colección del estudiante
1) Agregue la dependencia de jackson

com.fasterxml.jackson.core
jackson-databind
2.9.8

2) Cree un nuevo directorio js en el directorio de la aplicación web y agregue la función jQuery biblioteca
3) En index.jsp Importar función de biblioteca
función show() { Error de análisis de KaTeX: esperado '}', obtuvo 'EOF' al final de la entrada: … url: " {pageContext.request.contextPath}/ajax.action", tipo de datos: "json", escriba: "obtener", éxito: función (lista) { // alerta (lista); var s=""; $.each(lista, función (i,stu) { // alerta (stu) ); s+=stu .nombre+“----”+stu.age+“ ”; }); $(“#mydiv”).html(s);











        }
    });
}

4) Agregue la anotación @ResponseBody a la acción para manejar solicitudes ajax
@Controller
public class AjaxAction { //Para manejar solicitudes ajax, asegúrese de agregar @ResponseBody @ResponseBody @RequestMapping("/ajax") public List ajax(){ Student stu1 = nuevo Estudiante("张三",22); Estudiante stu2 = nuevo Estudiante("李四",24); Estudiante stu3 = nuevo Estudiante("王五",23); Lista lista = nueva ArrayList<>() ; list.add(stu1); list.add(stu2); list.add(stu3); //Llame a la herramienta de conversión json ObjectMapper para la lista de retorno de conversión; //===>springmvc es responsable de convertir a json } } 5) En springmvc Agregue el controlador de anotaciones mvc:annotationdriven/ al archivo .xml, que se utiliza para analizar la anotación @ResponseBody mvc:annotation-driven</mvc:annotation-driven>
















10. Cuatro métodos de salto.
Básicamente, existen dos métodos de salto: reenvío de solicitudes y redirección. Los cuatro derivados son página de reenvío de solicitudes, acción de reenvío, página de redirección y acción de redirección
@RequestMapping("/one")
public String one (){ System.out.println("Este es un salto de página de reenvío de solicitudes..."); return "main"; //El valor predeterminado es el reenvío de solicitudes, utilizando el analizador de vista para unir el prefijo y el sufijo para el salto de página }


@RequestMapping("/two")
public String two(){
    System.out.println("这是请求转发action跳转.........");
    //  /admin/  /other.action  .jsp
    //forward: 这组字符串可以屏蔽前缀和后缀的拼接.实现请求转发跳转
    return "forward:/other.action";  //默认是请求转发,使用视图解析器拼接前缀后缀进行页面跳转
}

@RequestMapping("/three")
public String three(){
    System.out.println("这是重定向页面.......");
    //redirect:  这组字符串可以屏蔽前缀和后缀的拼接.实现重定向跳转
    return "redirect:/admin/main.jsp";
}

@RequestMapping("/four")
public String four(){
    System.out.println("这是重定向action.......");
    //redirect:  这组字符串可以屏蔽前缀和后缀的拼接.实现重定向跳转
    return "redirect:/other.action";
}

@RequestMapping("/five")
public String five(){
    System.out.println("这是随便跳.......");

    return "forward:/fore/login.jsp";
}


11. No es necesario crear el tipo de parámetro predeterminado de SpringMVC , solo úselo directamente:
1) HttpServletRequest
2) HttpServletResponse
3) HttpSession
4) Model
5) Map
6) ModelMap
// Crea datos y pásalo al main. Usuarios de la página jsp
u = nuevos Usuarios("张三",22);

    //传递数据
    request.setAttribute("requestUsers",u);
    session.setAttribute("sessionUsers",u);
    model.addAttribute("modelUsers",u);
    map.put("mapUsers",u);
    modelMap.addAttribute("modelMapUsers",u);

Nota: Mapa, Modelo, ModelMap y solicitud utilizan el alcance de la solicitud para la transferencia de datos, por lo que el salto en el lado del servidor debe ser el reenvío de solicitudes.

12. Procesamiento de fecha
1) Procesamiento de envío de fecha
A. Procesamiento de fecha única
Para utilizar la anotación @DateTimeFormat, esta anotación debe coincidir con la etiqueta mvc:annotationdriven en el archivo springmvc.xml

B.类中全局日期处理
注册一个注解,用来解析本类中所有的日期类型,自动转换.
 @InitBinder
public void initBinder(WebDataBinder dataBinder){
    dataBinder.registerCustomEditor(Date.class,new CustomDateEditor(sf,true));
}

2) Procesamiento de visualización de fecha
Para mostrar fechas atractivas en la página, se debe utilizar JSTL.
Pasos:
A) Agregar dependencia jstl

jstl
jstl
1.2

B)在页面上导入标签库 
如果是单个日期对象,直接转为好看的格式化的字符串进行显示.
如果是list中的实体类对象的成员变量是日期类型,则必须使用jstl进行显示.
<%--导入jstl核心标签库--%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%--导入jstl格式化标签库--%>
<%@taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>

C)使用标签显示数据    
Nombre Cumpleaños
${stu.name} ${stu.cumpleaños}------

13. Los recursos están en el directorio WEB-INF.
No se puede acceder a los recursos dinámicos en este directorio directamente y solo se puede acceder a través del reenvío de solicitudes.
@Controller
public class WebInfAction { @RequestMapping(“/showIndex”) public String showIndex(){ System.out.println(“Visitar index.jsp”); devolver “index”; } @RequestMapping(“/showMain”) public String showMain(){ System.out.println(“Visitar main.jsp”); devolver “ main"; } @RequestMapping("/showLogin") public String showLogin(){ System.out.println("Acceso login.jsp"); return "login"; } // Iniciar sesión juicio empresarial @RequestMapping("/login ” ) inicio de sesión de cadena pública (nombre de cadena, contraseña de cadena, solicitud HttpServletRequest){


















if(“zar”.equalsIgnoreCase(nombre) && “123”.equalsIgnoreCase(pwd)){ return “principal”; }else{ request.setAttribute(“msg”,“¡El nombre de usuario o la contraseña son incorrectos!”); return “ login"; } } } 14.El interceptor de SpringMVC proporciona procesamiento adicional para solicitudes y respuestas. Agregue preprocesamiento, posprocesamiento y procesamiento final en el proceso de solicitudes y respuestas.








15. Tiempo de ejecución del interceptor
1) preHandle(): opera antes de que se procese la solicitud, preprocesamiento
2) postHandle(): opera después de que se procesa la solicitud, pero antes de que se procese el resultado, puede cambiar el resultado de la respuesta, postprocesamiento
3) afterCompletion: una vez completadas todas las respuestas a la solicitud, se realiza el trabajo de seguimiento, se limpian los objetos, se cierran los recursos y se realiza el procesamiento final.

16. Dos formas de implementar interceptores
1) Heredar la clase principal de HandlerInterceptorAdapter
2) Implementar la interfaz HandlerInterceptor Se recomienda utilizar el método de implementación de la interfaz.

17. Pasos de implementación del interceptor
1) Transforme el método de inicio de sesión y almacene la información del usuario en la sesión para la verificación de permisos
@RequestMapping("/login")
public String login(String name, String pwd, HttpServletRequest request){ if(" zar".equalsIgnoreCase (nombre) && "123".equalsIgnoreCase(pwd)){ //Almacena la información del usuario en la sesión para verificar el permiso request.getSession().setAttribute("users",name); return "main "; }else{ request.setAttribute ("msg", "¡El nombre de usuario o la contraseña son incorrectos!"); return "login"; } } 2) Desarrollar la función del interceptor. Implementar la interfaz HandlerInterceptor y anular el método preHandle() si (request.getSession() .getAttribute("users") == null){ //No ha iniciado sesión en este momento. Regrese a la página de inicio de sesión y solicite request.setAttribute("msg", "Aún no ha iniciado sesión. Inicie sesión primero !");













request.getRequestDispatcher(“/WEB-INF/jsp/login.jsp”).forward(request,response);
return false;
}
return true;//Liberar la solicitud 2) Registre el interceptor mvc:interceptors
en springmvc.xml archivo mvc:interceptor <mvc:mapping path="/**"/> <mvc:exclude-mapping path="/showLogin"></mvc:exclude-mapping> <mvc:exclude-mapping path="/login" > </mvc:exclude-mapping> </mvc:interceptor> </mvc:interceptores>










18. Pasos de la integración SSM 0) Crear base de datos y tabla 1) Crear un nuevo proyecto Maven y seleccionar la plantilla de aplicación web
2 ) Modificar el directorio 3) Modificar el archivo pom.xml (use la disposición del profesor) 4) Agregar jdbc.properties archivo de propiedades 5) Agregue el archivo SqlMapConfig .xml (usando la plantilla) 6) Agregue el archivo applicationContext_mapper.xml (archivo de configuración principal de la capa de acceso a datos) 7) Agregue el archivo applicationContext_service.xml (archivo de configuración principal de la capa de lógica de negocios) 8) Agregue spirngmvc. xml 9) Elimine el archivo web .xml, cree uno nuevo, cámbiele el nombre, configure la codificación china, registre el marco spirngmvc y registre el marco Spring 10) Cree un nuevo usuario de clase de entidad 11) Cree una nueva interfaz UserMapper.java 12) Cree un nuevo UserMapper.xml para implementar todas las funciones de agregar, eliminar y verificar, sin actualización 13) Cree una nueva interfaz de servicio y clase de implementación 14) Cree una nueva clase de prueba para completar las pruebas de todas las funciones 15) Cree un nuevo controlador para completar todas las funciones 16) Función de prueba del navegador















Supongo que te gusta

Origin blog.csdn.net/Peanut31434331/article/details/128936588
Recomendado
Clasificación