El primer programa de entrada simple de Spring MVC

La ventaja de SpringMVC y el programa MVC que escribimos antes es que, creo, SpringMVC nos ha ayudado a hacer muchas cosas. El MVC que escribí antes tiene controladores de front-end, muchos, muchos controladores de back-end, archivos de configuración, etc. Sí, SpringMVC también tiene estos. Cuando usamos SpringMVC, no necesitamos escribir un controlador frontal, pero se nos puede decir que tenemos que realizar varias configuraciones. Por ejemplo, queremos construir un proyecto maven. Lo conté. Hay tres archivos de configuración. Puede ser muy molesto para los principiantes usar estas muchas configuraciones. Es mejor usar nuestro MVC anterior. ¿Cuál es la razón? Debido a que ya hemos escrito MVC muy bien antes, y ahora acabamos de entrar en contacto con el marco Spring, será un poco difícil comenzar con mucha fluidez. Los marcos como estos simplifican nuestro código, como herramientas, la práctica hace al maestro.

Programa de entrada SpringMVC:

1. Primero, creamos un proyecto maven y agregamos el paquete jar correspondiente en el archivo de configuración pom.xml. (El código del paquete jar se publicó en el blog anterior)

Luego configuramos nuestro controlador DispatcherServlet (front-end) en el archivo de configuración web.xml,

	<servlet>
		<!-- 这里的名字可以随便起,但是为了我们方便管理,最好是项目名称 -->
		<servlet-name>SpringBasicMVC01</servlet-name>
		<!-- 前端控制器的完全限定名,可以通过从我们的jar包中拿到这个名字 -->
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
		<init-param>
			<!-- 这个是DispatcherServlet控制器要读取的字段名,不可以随便起! -->
			<param-name>contextConfigLocation</param-name>
			<!-- 按照这个格式填写,SpringBasicMVC01.xml这个配置文件名和接下来我们在资源文件中创建的文件名要一致
				之后DispatcherServlet控制器会读取里面的配置信息
			 -->
			<param-value>classpath:SpringBasicMVC01.xml</param-value>
		</init-param>
		<load-on-startup>1</load-on-startup>
	</servlet>
	<servlet-mapping>
		<!-- 这个要和上面的servlet-name名称保持一致! -->
		<servlet-name>SpringBasicMVC01</servlet-name>
		<!-- 拦截的url,这样写的是任意以.do结尾的请求都会进入DispatcherServlet控制器 -->
		<url-pattern>*.do</url-pattern>
	</servlet-mapping>

2. Escribimos una página index.jsp y usamos un hipervínculo para demostrar

<%@ 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>Insert title here</title>
</head>
<body>
	<a href="${pageContext.request.contextPath }/test.do">1.访问Controller</a>
</body>
</html>

Aquí, $ {pageContext.request.contextPath} /test.do es la URL, y luego el hipervínculo de la descarga eléctrica será interceptado por DispatcherServlet, $ {pageContext.request.contextPath} es la expresión EL, y el nombre del proyecto se muestra en la página web. Para ser flexible, no escribas hasta la muerte.

Tres, escriba el controlador de back-end y el archivo de configuración SpringBasicMVC02.xml

(El controlador de back-end es relativo al front-end, para facilitar la distinción, no confundirse).

/**
 * 后端控制器
 * 实现Controller接口,实现接口的handleRequest方法
 * 当然实现哪个接口根据我们SpringBasicMVC01.xml配置文件中的处理器决定的
 * @author: 满脑子代码的祝大朋
 * @date: 2019年1月10日 下午7:05:48
 */
public class WebAction implements Controller
{
	@Override
	public ModelAndView handleRequest(HttpServletRequest req, HttpServletResponse resp ) throws Exception
	{
		//实例化ModelAndView对象
		ModelAndView mv = new ModelAndView();
		//添加模型数据
		mv.addObject("data", "66666");
		//设置下一视图
		mv.setViewName("main");
		//返回
		return mv;
	}
}

A continuación, configure el procesador, el asignador y el solucionador de vistas relevantes en el archivo de configuración SpringBasicMVC02.xml

El procesador determina cómo se implementa el controlador personalizado

El asignador determina cómo la URL pasada por el cliente se asigna al controlador del objeto

El solucionador de vistas decide cómo generar la respuesta al cliente

<!-- 配置处理器 -->
   <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>
   
   <!-- 配置映射器 -->
   <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
   
   <!-- 配置视图解析器 -->
   <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
   	<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
   	<!--prefix:前缀 suffix:后缀 这样写的话,/WEB-INF/jsp/main.jsp这样一个连接,只需要在后端控制器写 mian 就行了 -->
   	<property name="prefix" value="/WEB-INF/jsp/"/>
   	<property name="suffix" value=".jsp"/>
   </bean>

   <!-- 设置映射关系,DispatcherServlet(前端)控制器会根据/test.do找到后端控制器(WebAction) -->
   <bean name="/test.do" class="com.study.web.WebAction" />

 En este momento, cuando hago clic en el hipervínculo de la página, la solicitud irá al controlador frontal, y el controlador frontal encontrará el controlador back-end de acuerdo con la URL de la solicitud. Una vez que el controlador back-end realiza operaciones comerciales relacionadas, vuelve a la URL de la siguiente vista. Para el controlador frontal, el controlador frontal realiza la dirección. En este punto, pasamos a la página /WEB-INF/jsp/main.jsp

Por supuesto, con solo hacer clic en el comentario del código del controlador de back-end, ¡la interfaz implementada puede ser diferente! Todo esto depende de nuestro archivo de configuración. Si estás interesado, puedes echar un vistazo al paquete jar. Hay muchas interfaces en él, ¡y todas tienen funciones que no se pueden hacer!

/**
 * 实现HttpRequestHandler,上一个实现 Controller接口的话
 * 两者实现的方法就不一样了,这里做个对比
 * Controller接口
 * 		有返回值,返回值类型是ModelAndView
 * 		通过addObject()把信息存入模型数据,模型数据会存入request作用域
 * 		通过setViewName()设置转向下一个视图的名称。
 * HttpRequestHandler接口
 * 		无返回值
 * 		把数据存入到request作用域中和转向方法和我们之前写的一样
 * @author: 满脑子代码的祝大朋
 * @date: 2019年1月10日 下午7:44:36
 */
public class WebAction implements HttpRequestHandler
{
	@Override
	public void handleRequest(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException
	{
		req.setAttribute("data", "66666");
		req.getRequestDispatcher("/WEB-INF/jsp/main.jsp").forward(req, resp);
	}
}

 La configuración también debe cambiarse, el procesador y el mapeador deben cambiarse.

el código se muestra a continuación

 <!-- 配置处理器 -->
   <bean class="org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter"/>
   <!-- 配置映射器 -->
	<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
		<property name="mappings">
			<props>
				<prop key="/test.do">webAction</prop>
			</props>
		</property>
	</bean>   
<bean id="webAction" class="com.study.web.WebAction" />

Por supuesto, el mapeador relacional es el mismo que antes. 

Cuatro, código main.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>Insert title here</title>
</head>
<body>
	This is a main.jsp;
</body>
</html>

Después de ejecutarlo, puede completar el programa de entrada simple de SpringMVC.

¡Grabe, resuma, comparta! ¡El aprendizaje siempre está en camino!

Supongo que te gusta

Origin blog.csdn.net/qq_35340913/article/details/86247596
Recomendado
Clasificación