JAVAEE eche un vistazo más de cerca al marco 05-Comenzando con Spring MVC

1. Integración de Spring y entorno web

1.1 Integración ambiental

① Importar coordenadas

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-web</artifactId>
    <version>5.0.5.RELEASE</version>
</dependency>

② Configurar el oyente

<!--Spring的监听器(用来加载Spring的配置文件)-->
<listener>
	<listener-class>
       org.springframework.web.context.ContextLoaderListener
   </listener-class>
 </listener>
<!--全局参数,指定Spring配置文件所在位置-->
<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:applicationContext.xml</param-value>
</context-param>

1.2 Entorno web con Spring

Uso en ambiente normal (usado en Servlet)

// 1.使用spring自带的工具类, 获取Spring的核心容器
ApplicationContext app = WebApplicationContextUtils.getWebApplicationContext(request.getServletContext());
// 2.通过Spring核心容器的getBean方法, 获取指定的对象
AccountService as = app.getBean(AccountService.class);

Usar en el entorno SpringMVC

@Autowired
private AccountService accountService; // 直接依赖注入即可

2. Introducción a SpringMVC

2.1 Descripción general de SpringMVC

SpringMVC es un marco web ligero que implementa el modelo de diseño MVC basado en Java y es un producto de seguimiento de SpringFrameWork.

SpringMVC se ha convertido en uno de los frameworks MVC más convencionales en la actualidad y utiliza un conjunto de anotaciones para hacer que una clase Java simple se convierta en un controlador que procese solicitudes sin implementar ninguna interfaz. También admite solicitudes de estilo de programación RESTful.

2.2 Inicio rápido de SpringMVC

Demanda: el cliente inicia la solicitud, el servidor recibe la solicitud, ejecuta la lógica y realiza el salto de vista.

2.2.1 Pasos de desarrollo

① Importar coordenadas

② Configure el controlador central SpringMVC DispathcerServlet

③ Configure el archivo principal SpringMVC springmvc.xml

④ Crear clase de controlador

⑤ Use anotaciones para configurar la dirección asignada del método comercial en la clase Controlador

⑥El cliente inicia una prueba de solicitud

2.2.2 Implementación del código

① Importar coordenadas

<!--Spring坐标-->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context</artifactId>
    <version>5.0.5.RELEASE</version>
</dependency>
<!--SpringMVC坐标-->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-webmvc</artifactId>
    <version>5.0.5.RELEASE</version>
</dependency>
<!--Servlet坐标-->
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>3.1.0</version>
    <scope>provided</scope>
</dependency>
<!--Jsp坐标-->
<dependency>
    <groupId>javax.servlet.jsp</groupId>
    <artifactId>javax.servlet.jsp-api</artifactId>
    <version>2.3.0</version>
    <scope>provided</scope>
</dependency>

② Configure el controlador central de SpringMVC en web.xml

<servlet>
    <servlet-name>DispatcherServlet</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>  
    <!--指定Springmvc的配置文件所在位置-->
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:springmvc.xml</param-value>
    </init-param>
    <!--让前端控制器随着项目的启动而加载-->
	<load-on-startup>2</load-on-startup>
</servlet>
<servlet-mapping>   
    <servlet-name>DispatcherServlet</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>

③ Cree spring-mvc.xml y configure

<beans xmlns="http://www.springframework.org/schema/beans"  
    xmlns:mvc="http://www.springframework.org/schema/mvc"
    xmlns:context="http://www.springframework.org/schema/context" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
    http://www.springframework.org/schema/beans/spring-beans.xsd 
    http://www.springframework.org/schema/mvc   
    http://www.springframework.org/schema/mvc/spring-mvc.xsd  
    http://www.springframework.org/schema/context   
    http://www.springframework.org/schema/context/spring-context.xsd">
    
    <!--配置注解扫描(SpringMVC只扫描自己的Controller)-->
    <context:component-scan base-package="com.ittest.controller"/>
</beans>

④ Crear controlador y método comercial

public class QuickController {
	public String quickMethod(){
		System.out.println("quickMethod running.....");
		return "index";
	}
}

⑤ Notas de configuración

@Controller
public class QuickController {
    
    //当前方法的访问路径是"quick"
	@RequestMapping("/quick")
	public String quickMethod(){
		System.out.println("quickMethod running.....");
        // 请求结束后, 跳转到success.jsp页面
        return "/success.jsp";
	}
}

⑥ Dirección de prueba

http://localhost:8080/springmvcWeb/quick 

2.3 Análisis de componentes SpringMVC

Controlador frontal: DispatcherServlet

DispatcherServlet es el centro de todo el control de procesos de SpringMVC. Todas las solicitudes de los usuarios deben llegar primero al controlador de front-end

Mapeador de procesador: HandlerMapping

HandlerMapping es responsable de encontrar el flujo de ejecución correspondiente a la ruta de acuerdo con la ruta de solicitud del usuario

Adaptador de procesador: HandlerAdapter

Después de obtener el "proceso de ejecución" correspondiente a la ruta de solicitud, el HandlerAdapter es responsable de llamar al método correspondiente para su ejecución.

Procesador: controlador

Responsable del método de ejecución real

Ver resolución: Ver resolución

Responsable de procesar los "resultados después de la ejecución del método", especialmente las páginas de salto, la resolución de la vista es responsable de procesar la página que se saltará

Ver: Ver

Pagina

2.4 Análisis de anotaciones de RequestMapping

Efecto

RequestMapping: se utiliza para establecer la ruta de solicitud del método, cuando la ruta de solicitud del navegador cumpla con los requisitos, ejecute el método correspondiente

Propiedades:

Valor: se utiliza para especificar la URL solicitada. Tiene el mismo efecto que el atributo de ruta

Método: se utiliza para especificar el método de solicitud

Ubicación:

@Controller
@RequestMapping("/page")		//类的访问路径
public class PageController {

    @RequestMapping("/show")	//方法的访问路径
    public String show(){
        return "/success.jsp";
    }
    //如果类上没有RequestMapping, 则该方法的请求路径是 "/show"
    //如果类上也有RequestMapping, 则该方法的请求路径是 "/page/show"

}

2.5 Escaneo de componentes

En el desarrollo futuro, un programa a menudo incluirá Spring y Spring MVC, y esta vez requerirá que escanee el suyo.

Primavera

<!--扫描整个com.ittest包-->
<context:component-scan base-package="com.ittest">
    <!--排除掉Controller注解,该注解交给SpringMVC处理,Spring不处理-->
    <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
</context:component-scan>

SpringMVC

<context:component-scan base-package="com.ittest.cotroller"/>

2.6 Salto de página (Ver analizador)

En el controlador SpringMVC, a veces el valor de retorno tendrá contenido repetitivo, en este momento, podemos extraer la parte repetida del valor de retorno, entonces este es el controlador front-end de SpringMVC

2.6.1 Caso

** Código antes de configurar "Ver analizador": **

@RequestMapping("/show02")
public String show02(){
    return "/jsp/aaa.jsp";
}

@RequestMapping("/show03")
public String show03(){
    return "/jsp/bbb.jsp";
}

Extraer "Ver analizador"

<!--配置内部资源视图解析器-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <!--前缀(前边重复性内容)-->
    <property name="prefix" value="/jsp/"></property>
	<!--后缀(后边重复性内容)-->
    <property name="suffix" value=".jsp"></property>
</bean>

Código del controlador después de configurar la resolución de vista

@RequestMapping("/show02")
public String show02(){
    return "aaa";
}

@RequestMapping("/show03")
public String show03(){
    return "bbb";
}

2.6.2 Asuntos que requieren atención

Cuando un proyecto se configura con una "resolución de vista", la "resolución de vista" analizará el valor de retorno de todos los métodos del Controlador.

@RequestMapping("/show01")
public String show01(){
    return "/success.jsp";
    //如果项目配置了上边的"视图解析器",则当前方法的返回值,会被自动解析为"/jsp/success.jsp.jsp"
}

** Solución: **

Si desea que el "resolución de vista" no analice el valor de retorno del método, puede prefijarlo con "reenviar" o "redireccionar"

@RequestMapping("/show01")
public String show01(){
    return "forward:/success.jsp";   //转发到success.jsp, 并且不允许视图解析器解析
    //return "redirect:/success.jsp";   //重定向到success.jsp, 并且不允许视图解析器解析
}
Publicado 78 artículos originales · elogiado 30 · visitas 3638

Supongo que te gusta

Origin blog.csdn.net/ZMW_IOS/article/details/105102745
Recomendado
Clasificación