Tres formas para que el marco SpringMVC reciba parámetros de solicitud del cliente

1. [No recomendado] Use HttpServletRequest para recibir parámetros de solicitud

Puede agregar parámetros de tipo HttpServletRequest a la lista de parámetros del método de procesamiento de la solicitud, y luego obtener el valor del parámetro de solicitud de la manera tradicional:

@RequestMapping("handle_reg.do")
public String handleReg(HttpServletRequest request) {
	System.out.println("UserController.handleReg()");
	
	String username = request.getParameter("username");
	String password = request.getParameter("password");
	String age = request.getParameter("age");
	String phone = request.getParameter("phone");
	String email = request.getParameter("email");
	System.out.println("username=" + username);
	System.out.println("password=" + password);
	System.out.println("age=" + age);
	System.out.println("phone=" + phone);
	System.out.println("email=" + email);
	
	return null;
}

Este enfoque no se recomienda, las principales razones son:

  1. Muy engorroso de usar;
  2. Si el tipo de parámetro esperado no es String, debe convertir el tipo de datos usted mismo;
  3. Inconveniente para realizar pruebas unitarias.

2. [Recomendado] Agregue los parámetros de solicitud necesarios a la lista de parámetros del método para procesar la solicitud.

Puede enumerar los parámetros requeridos uno por uno en la lista de parámetros del método de procesamiento de la solicitud, y el orden no se distingue, pero los nombres deben ser consistentes con los parámetros enviados por el cliente:

@RequestMapping("handle_reg.do")
public String handleReg(String username, String password, 
	Integer age, String phone, String email) {
	System.out.println("UserController.handleReg()");
	System.out.println("username=" + username);
	System.out.println("password=" + password);
	System.out.println("age=" + (age + 1));
	System.out.println("phone=" + phone);
	System.out.println("email=" + email);
	return null;
}

Al utilizar este enfoque, puede declarar los parámetros directamente como el tipo deseado.
Si el nombre de un parámetro definido es un parámetro no enviado por el cliente, el valor del parámetro en el método será nulo.
¡Este enfoque no es adecuado para escenarios de aplicación con una gran cantidad de parámetros de solicitud!

3. [Recomendado] Encapsule los parámetros de solicitud requeridos en un tipo personalizado y utilícelos como parámetros del método de procesamiento de solicitudes.

Se pueden encapsular varios parámetros de solicitud, por ejemplo:

public class User {
	private String username;
	private String password;
	private Integer age;
	private String phone;
	private String email;
	// 添加匹配的SET/GET方法
}

Luego, en la lista de parámetros del método para procesar la solicitud, agregue los parámetros del tipo de datos personalizado anterior:

@RequestMapping("handle_reg.do")
public String handleReg(User user) {
	System.out.println("UserController.handleReg()");
	
	System.out.println(user);
	
	return null;
}

4. Resumen

En primer lugar, no se recomienda el primer enfoque (utilizando HttpServletRequest), sin importar en ningún escenario de aplicación, cuando se reciben parámetros de solicitud en el controlador (Controlador), ¡este enfoque no se usa!

El segundo enfoque (enumerar los parámetros de forma exhaustiva) y el tercer enfoque (encapsular los parámetros) tienen sus propias ventajas. Cuando el número de parámetros de solicitud es pequeño (generalmente no más de 4) y es fijo, el segundo enfoque debe usarse primero Esto hará que el código fuente sea muy intuitivo y más fácil de entender el significado del código al leerlo. Por el contrario, cuando el número de parámetros de solicitud es grande (generalmente más de 6), o cuando el número de parámetros de solicitud puede cambiar (cuando los requisitos se ajustan en el futuro, El número puede aumentar o disminuir, o cambiar para requerir otros parámetros), ¡el tercer método debe usarse primero!

Además, el segundo método y el tercer método anteriores se pueden utilizar al mismo tiempo.

Supongo que te gusta

Origin blog.csdn.net/qq_37669050/article/details/101710911
Recomendado
Clasificación