SpringMVC: parámetros del controlador y valor de retorno

@RequestMapping

Mapeo de ruta URL

@RequestMapping(value="/item")
或
@RequestMapping("/item")

value的值是数组,可以将多个url映射到同一个方法

Asignación de solicitud estrecha

Agregue @RequestMapping (url) a la clase para especificar un prefijo de solicitud común. Restrinja todos los métodos de esta clase. La URL de solicitud debe comenzar con el prefijo de solicitud y use este método para clasificar y administrar la URL.

@RequestMapping放在类名上边,设置请求前缀:
@Controller
@RequestMapping("/item")

@RequestMapping放在方法名上边,设置请求映射url:
@RequestMapping("/queryItem")

访问地址为:/item/queryItem

Limitación del método de solicitud

Limite el método GET, si accede a través de Post obtendrá un error: Estado HTTP 405-Método de solicitud 'POST' no compatible

@RequestMapping(value="/editItem", method=RequestMethod.GET)

Limite el método POST, si accede a través de Post obtendrá un error: Estado HTTP 405-Método de solicitud 'GET' no compatible

@RequestMapping(method=RequestMethod.POST)

GET y POST pueden ser

@RequestMapping(method={RequestMethod.GET,RequestMethod.POST})

El valor de retorno del método controlador

Regresar a ModelAndView

Cuando el método deba finalizar, defina ModelAndView y configure el modelo y la vista por separado.

ModelAndView modelAndView = new ModelAndView();
modelAndView.addObject("itemsList", itemsList);
modelAndView.setViewName("itemsList.jsp");
return modelAndView;

Retorno nulo

La solicitud y la respuesta se pueden definir en los parámetros formales del método del controlador y utilizar la solicitud o la respuesta para especificar el resultado de la respuesta:

1. Use la solicitud para ir a la página:

request.getRequestDispatcher("页面路径").forward(request, response); 

2. Redireccionar a través de la página de respuesta:

response.sendRedirect("url") ;

3. También puede especificar el resultado de la respuesta a través de la respuesta, por ejemplo, datos de respuesta json:

response.setCharacterEncoding("utf-8");
response.setContentType("application/json;charset=utf-8");
response.getWriter().write("json串");

Cadena de retorno

1. Dirección de vista lógica

El método del controlador devuelve una cadena para especificar la dirección de la vista lógica, que el resolutor de la vista resuelve en la dirección de vista física.

Dirección de vista física (ruta jsp) = prefijo + dirección de vista lógica + sufijo

<!-- springmvc.xml配置视图解析器 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <!-- 配置jsp路径的前缀 -->
    <property name="prefix" value="/WEB-INF/jsp/"/>
    <!-- 配置jsp路径的后缀 -->
    <property name="suffix" value=".jsp"/>
</bean>

//Handler方法返回逻辑视图地址
return "items/itemsList";

2. Redirigir

El método del controlador devuelve el resultado y lo redirige a una dirección URL, la url en la barra de direcciones del navegador cambiará. Los datos de solicitud modificados no se pueden enviar a la dirección redirigida, porque la solicitud se vuelve a ejecutar después de la redirección y la solicitud no se puede compartir.

//重定向到queryItem.action地址,request无法带过去
return "redirect:queryItem.action"; 

El método de redireccionamiento es equivalente a "response.sendRedirect ()". Después del reenvío, la barra de direcciones del navegador se convierte en la dirección reenviada, porque el reenvío ejecuta una nueva solicitud y respuesta.

Dado que los parámetros originales de una nueva solicitud no se pueden pasar a la siguiente url al reenviar, si desea pasar los parámetros, puede agregar parámetros después de /item/queryItem.action, de la siguiente manera: / item / queryItem? ... & ...

3. Reenvío

Después de ejecutar el método del controlador, continúe ejecutando otro método del controlador, reenviando la página hacia adelante, la URL de la barra de direcciones del navegador permanece sin cambios y la solicitud se puede compartir.

//结果转发到editItem.action,request可以带过去
return "forward:editItem.action"; 

El modo de reenvío es equivalente a "request.getRequestDispatcher (). Forward (solicitud, respuesta)". Después del reenvío, la barra de direcciones del navegador sigue siendo la dirección original. El reenvío no ejecuta una nueva solicitud y respuesta, pero comparte una solicitud y una respuesta con la solicitud antes del reenvío. Por lo tanto, los parámetros solicitados antes del reenvío aún se pueden leer después del reenvío.

202 artículos originales publicados · elogiados 37 · 30,000+ vistas

Supongo que te gusta

Origin blog.csdn.net/lovecuidong/article/details/103487002
Recomendado
Clasificación