Empezando con Spring MVC: el primer programa Spring MVC

Descripción general de Spring MVC

      Spring MVC proporciona un marco web ligero que implementa el patrón de diseño Web MVC. Es el mismo que el marco Struts. Pertenece al marco MVC, pero su uso y rendimiento son mejores que Struts.
Spring MVC tiene las siguientes características:
(1) Es Spring Como parte del marco, puede usar fácilmente otras funciones proporcionadas por Spring
(2) Flexible y fácil de integrar con otros marcos
(3) Proporcionar un controlador frontal DispatcherServlet, para que los desarrolladores no necesiten desarrollar objetos de controlador adicionales
(4) Vincular automáticamente la entrada del usuario y puede convertir correctamente el tipo de datos
(5) Validador común incorporado, puede verificar la entrada del usuario si la verificación falla, luego será redirigido al formulario de entrada
(6) Soporte para internacionalización Muestra varios idiomas de acuerdo con el área de usuario
(7); admite múltiples tecnologías de visualización. Admite tecnologías de visualización como JSP Velocity FreeMarker
(8) utiliza archivos de configuración XML base, después de la edición, no es necesario volver a compilar la aplicación

Flujo de trabajo Spring MVC

La fuente de la imagen: Tutorial de desarrollo de aplicaciones empresariales Java ee

El proceso de ejecución completo del programa Spring MVC es el siguiente:
(1) El usuario envía una solicitud al servidor a través del navegador, y la solicitud será interceptada por el controlador frontal de Spring MVC DispatcherServlet
(2) DispatcherServlet interceptado Después de la solicitud, llamará al asignador del procesador HandlerMapping
(3) El asignador del procesador encuentra el procesador específico de acuerdo con la URL de la solicitud, genera el objeto del procesador y el interceptor del procesador (si lo hubiera) y lo devuelve a DispatcherServlet
(4) DispatcherServlet Seleccionará el HandlerAdapter apropiado (adaptador de procesador) devolviendo la información
(5) HandlerAdapter llamará y ejecutará el Handler (procesador), donde el procesador se refiere a la clase Controller escrita en el programa, también conocido como controlador back-end
( 6) Después de que se ejecute el controlador, devolverá un objeto ModelAndView, que contendrá el nombre de la vista o modelo y el nombre de la vista
(7) HandlerAdapter ModelAndView objeto devuelto a DispatcherServlet
(8) DispatcherServlet seleccionará un ViewReslover adecuado (vista) basado en el objeto ModelAndView Analizador)
(9) ViewReslover Después de analizar, devolverá una Vista específica (vista) a la Vista DispatcherServlet
(10) DispatcherServlet para renderizar (es decir, para completar los datos del modelo en la vista)
(11) Los resultados de la representación de la vista se devolverán al navegador del cliente para su visualización

El primer programa Spring MVC

El diagrama de estructura del proyecto es el siguiente:
Nota:
1. web.xml debe colocarse en el directorio WEB-INF
2. springMVC-config.xml debe colocarse en el directorio src.
Generalmente llamado así, la figura es para distinguir diferentes configuraciones
Inserte la descripción de la imagen aquí
web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
  <display-name>spirngmvc_01</display-name>
  
  <!-- 配置前端过滤器 -->
  <servlet>
  	<servlet-name>springmvc</servlet-name>
  	<!--servlet-class中的值是spring-webmvc包提供的类,即前端控制器,用于控制所有请求 -->
  	<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  	
  	<!-- 初始化时加载文件(springmvc-anno.xml) -->
  	<init-param>
  		<param-name>contextConfigLocation</param-name>
  		<param-value>classpath:springmvc-anno.xml</param-value>
  	</init-param>
  	<!--  表示容器在启动时立即加载 Servlet,数值越小,加载越快 -->
  	<load-on-startup>1</load-on-startup>
  	
  </servlet>
  
  <!-- 配置servlet映射  servlet-name取值与servlet的servlet-name一致-->
  <servlet-mapping>
  	<servlet-name>springmvc</servlet-name>
  	<url-pattern>/</url-pattern>
  </servlet-mapping>

</web-app>

springmvc-anno.xml (anotación)

<?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"
	   xsi:schemaLocation="http://www.springframework.org/schema/beans
	   http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
	   http://www.springframework.org/schema/context 
  http://www.springframework.org/schema/context/spring-context-4.3.xsd">
	<!-- 指定需要扫描的包 -->
	<context:component-scan base-package="com.controller" >
	 
	       <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>  
	       
	</context:component-scan>
	<!-- 定义视图解析器 -->
	<bean id="viewResolver" class=
    "org.springframework.web.servlet.view.InternalResourceViewResolver">
	     <!-- 设置前缀 -->
	     <property name="prefix" value="/WEB-INF/jsp/" />
	     <!-- 设置后缀 -->
	     <property name="suffix" value=".jsp" />
	</bean>
</beans>  

springmvc-xml.xml (sin anotación)

<?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/beans/spring-beans.xsd">
        <!-- 配置Handel,映射"/hello"请求 -->
        
        <bean name="/hello" class="com.controller.FirstController"/>
        <!-- 处理映射器将bean的name作为url进行查找,需要在配置Handel时指定name(即url) -->
        
        <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
        
        <!-- SimpleControllerHandlerAdapter是一个处理器适配器,所有处理器适配器都要实现HandlerAdapter接口,-->
        <!--通过适配器实现对handlReqeust的调用 -->
        
        <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>
        
        <!-- 视图解析器 -->
        <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"/>
</beans>

clase de controlador

package com.controller;

import java.lang.annotation.Annotation;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
//import org.springframework.web.servlet.mvc.Controller;


//1、基于注解
@Controller
@RequestMapping(value="/hello")
public class FirstController {
	
	@RequestMapping(value="/firstController")
	public String handleRequest(HttpServletRequest request,
			HttpServletResponse response, Model model) throws Exception {
		// 向模型对象中添加数据
		model.addAttribute("msg", "hello,这是我的第一个Spring MVC程序,基于annotation");
		// 返回视图页面
		return "first";
	}

}

//1、继承Controller类
//public class FirstController implements Controller{
//
//	@Override
//	public ModelAndView handleRequest(HttpServletRequest arg0, HttpServletResponse arg1) throws Exception {
//		
//		ModelAndView mav = new ModelAndView();
//		
//		mav.addObject("msg", "hello,这是我的第一个Spring MVC程序,基于xml");
//		mav.setViewName("/WEB-INF/jsp/first.jsp");
//		return mav;
//	}
//}

Ver (jsp)

<%@ page language="java" contentType="text/html; charset=UTF-8"
     pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
         "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>入门程序</title>
</head>
	<body>
	     ${msg}
	</body>
</html>

Publique el proyecto en Tomcat, inicie el servidor Tomcat y luego ingrese http: // localhost: 8080 / project name / hello / firstController en el navegador (según las anotaciones)

Use anotaciones o herede la clase del controlador 1. El archivo springMVC.xml es diferente 2. La ruta de clase en el archivo web.xml debe cambiarse en consecuencia, 3. La URL ingresada en el navegador también debe cambiarse en consecuencia



Supongo que te gusta

Origin blog.csdn.net/m0_46267375/article/details/106670294
Recomendado
Clasificación