美文网首页
(二)传参、返回

(二)传参、返回

作者: guideEmotion | 来源:发表于2019-06-09 22:21 被阅读0次

一 配合jsp

可以返回String或ModelAndView

@RequestMapping("/demo2")
@Controller
public class TestController2 {

    @RequestMapping("/string")
    public String demo2(HttpServletRequest request){
        request.setAttribute("name","王大锤");

        return "demo2";
    }

    @RequestMapping("/mav")
    public ModelAndView mav1(ModelAndView modelAndView) {
        // 把结果传递给页面

        modelAndView.addObject("name","皮卡丘" );
        // 设置逻辑视图
        modelAndView.setViewName("demo2");
        return modelAndView;
    }


    @RequestMapping("/mav2")
    public ModelAndView mav2() {
        // 把结果传递给页面
        ModelAndView modelAndView = new ModelAndView();
        modelAndView.addObject("name","小智" );
        // 设置逻辑视图
        modelAndView.setViewName("demo2");
        return modelAndView;
    }


    @RequestMapping("/model")
    public String model(Model model) {
        // 把结果传递给页面
        model.addAttribute("name","喷火龙");
        // 设置逻辑视图

        return "demo2";
    }


}

jsp

%@ page import="java.util.Date" %><%--
  Created by IntelliJ IDEA.
  User: zyc
  Date: 2019/6/9
  Time: 20:03
  To change this template use File | Settings | File Templates.
--%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>

<html>
<head>
    <title>demo2</title>
</head>
<body>

    <h1>${requestScope.name}</h1>
    <%
        Date date = new Date();
        out.print(date);
    %>

    <%= date %>
</body>
</html>

二 参数绑定

补充

POJO:Spring MVC 会按请求参数名和 POJO 属性名进行自动匹配, 自动为该对象填充属性值。支持级联属性。
如:dept.deptId、dept.address.tel 等

        @RequestMapping("/testPojo")
        public String testPojo(User user) {
            System.out.println("testPojo: " + user);
            return SUCCESS;
        }

支持Serlvet 原生的 API

    /**
     * 可以使用 Serlvet 原生的 API 作为目标方法的参数 具体支持以下类型
     * 
     * HttpServletRequest 
     * HttpServletResponse 
     * HttpSession
     * java.security.Principal 
     * Locale 
     * InputStream 
     * OutputStream 
     * Reader 
     * Writer
     * @throws IOException 
     */
    @RequestMapping("/testServletAPI")
    public void testServletAPI(HttpServletRequest request,
            HttpServletResponse response, Writer out) throws IOException {
        System.out.println("testServletAPI, " + request + ", " + response);
        out.write("hello springmvc");
        }

默认支持的参数类型

处理器形参中添加如下类型的参数,处理适配器会默认识别并进行赋值。

  • HttpServletRequest:通过request对象获取请求信息。
  • HttpServletResponse:通过response处理响应信息。
  • HttpSession:通过session对象得到session中存放的对象。
  • Model/ModelMap:ModelMap是Model接口的实现类,我们可通过Model或ModelMap向页面传递数据

简单数据类型绑定

当请求的参数名称和处理器形参名称一致时会将请求参数与形参进行绑定。从Request取参数的方法可以进一步简化
@RequestParam
使用@RequestParam注解常用于处理简单类型的绑定。

  • value:参数名字,即入参的请求参数名字,如value=“item_id”表示请求的参数区中的名字为item_id的参数的值将传入。
  • required:是否必须,默认是true,表示请求中一定要有相应的参数,否则将报如下错误:
  • defaultValue:默认值,表示如果请求中没有同名参数时的默认值。

乱码

post

<filter>
    <filter-name>CharacterEncodingFilter</filter-name>
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
    <init-param>
        <param-name>encoding</param-name>
        <param-value>utf-8</param-value>
    </init-param>
</filter>
<filter-mapping>
    <filter-name>CharacterEncodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

get
修改tomcat配置文件添加编码与工程编码一致

<Connector URIEncoding="utf-8" connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>

自定义Converter

提交的表单中不要有日期类型的数据,否则会报400错误。如果想提交日期类型的数据需要用到后面的自定义参数绑定的内容
实现类

public class DateConverter implements Converter<String, Date> {
    @Override
    public Date convert(String source) {
        try {
            SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            Date date = simpleDateFormat.parse(source);
            return date;
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return null;

    }

}

配置文件
方式一:扩展<mvc:annotation-driven/>

!-- 配置一个注解驱动,如果配置此标签,那么就可以不用配置处理器映射器和处理器适配器 -->
<mvc:annotation-driven conversion-service="conversionService" />
<!-- 转换器的配置 -->
<bean id="conversionService"
    class="org.springframework.format.support.FormattingConversionServiceFactoryBean">
    <property name="converters">
        <set>
            <bean class="com.zyc.controller.DateConverter"/>
        </set>
    </property>
</bean>

方式二:自定义webBinder

<!-- 转换器配置 -->
    <bean id="conversionService"
        class="org.springframework.format.support.FormattingConversionServiceFactoryBean">
        <property name="converters">
            <set>
                <bean class="com.zyc.controller.DateConverter"/>
            </set>
        </property>
    </bean>
    <!-- 自定义webBinder -->
    <bean id="customBinder" class="org.springframework.web.bind.support.ConfigurableWebBindingInitializer">
        <property name="conversionService" ref="conversionService" />
    </bean>

三 方法返回值

返回ModelAndView

返回void

  1. 使用request转发页面
request.getRequestDispatcher("页面路径").forward(request, response);
  1. response实现页面重定向
response.sendRedirect("url")
  1. response响应
response.setCharacterEncoding("utf-8");
response.setContentType("application/json;charset=utf-8");
response.getWriter().write("json串");

返回字符串

逻辑视图名
spring mvc会将字符串作为逻辑视图名,封装成一个ModelAndView


重定向、转发

return "redirect:/item/itemList.action?id=xxx&name=xxx";

return "forward:/item/itemList.action";

参考:

  1. SpringMVC学习(五)——SpringMVC的参数绑定
  2. SpringMVC学习(七)——Controller类的方法返回值

相关文章

  • (二)传参、返回

    一 配合jsp 可以返回String或ModelAndView jsp 二 参数绑定 补充 POJO:Spring...

  • MUI返回传参

    从a页面跳转到b页面,从b页面返回到a页面时向a页面传递一个参数,a页面接收到参数后做出响应a.html b.ht...

  • 八、Flutter路由

    目录一、基本路由二、基本路由传参三、命名路由四、命名路由传参五、替换路由六、返回到根路由 一、基本路由 跳转到De...

  • Flutter 路由 Navigator基本使用

    返回到上一个界面 返回到上一个界面 并且传参 push 到界面TestRooterPage并且传参TestRoot...

  • Navigation的一些问题

    1.startDestination传参和重定向问题 2.fragment返回传参问题 我们知道Activity可...

  • js-获取元素

    获取元素的方法 传参 返回值

  • js判断日期是否已经过期

    一、js判断日期是否已经过期 传参格式 2018-5-20 过期返回false 没有返回true 二、判断年月是否过期

  • JPA使用之@Query的常用写法

    准备 实体 其中同步类型 枚举的转换器 修改 使用冒号传参 使用问号传参 查询 返回指定列第1种写法 返回指定列第...

  • 获取地址栏参数带#都不怕

    function getUrlSearch(name) { // 未传参,返回空 if (!name) ret...

  • iOS和Unity交互之参数传递

    1. 调用方法一 Unity调方法传参,有返回值 如果Unity传参为string类型,不执行strdup()方法...

网友评论

      本文标题:(二)传参、返回

      本文链接:https://www.haomeiwen.com/subject/iutoxctx.html