码迷,mamicode.com
首页 > 编程语言 > 详细

Spring MVC(五)--控制器通过注解@RequestParam接受参数

时间:2018-10-04 08:44:40      阅读:169      评论:0      收藏:0      [点我收藏+]

标签:异常   ref   属性   html   nop   一个   orm   encoding   前端   

上一篇中提到,当前后端命名规则不一致时,需要通过注解@RequestParam接受参数,这个注解是作用在参数上。下面通过实例说明,场景如下:

在页面输入两个参数,控制器通过注解接受,并将接受到的数据渲染到新的视图。所以首先来创建输入参数页面,然后创建控制器,再创建对应的响应视图。

1、创建输入参数页面

<%@ 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">
<%
    String root = request.getContextPath();
    String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort()
            + root + "/";
%>
<script type="text/javascript"
    src="<%=basePath%>jslib/jquery-1.8.3.min.js"></script>
<script type="text/javascript" src="<%=basePath%>jslib/jquery.form.js"></script>
<script type="text/javascript" src="<%=basePath%>js/param.js"></script>
<link href="<%=basePath%>css/param.css" type="text/css" rel="stylesheet">
<title>Insert title here</title>
</head>
<body>

    <!-- 简单参数传递 -->
    <p style="text-align: center;color: red;font-size: x-large;">Spring MVC控制器接受参数方式测试</p>
    <div class="param">
        <!--使用注解获取参数 -->
        <div class="public annotaion">
            <p style="text-align: center;">注解法获取</p>
            <form id="annoForm" action="<%=basePath%>param/annoParam"
                method="post">
                <table>
                    <tr>
                        <td>id:</td>
                        <td><input type="text" name="paramId" value=""></td>
                    </tr>
                    <tr>
                        <td>名称:</td>
                        <td><input type="text" name="paramName" value=""></td>
                    </tr>
                    <tr>
                        <td></td>
                        <td style="text-align: right;"><input type="submit"
                            value="提交" id="setAnnoParam"></td>
                    </tr>
                </table>
            </form>
        </div>
</body>
</html>

页面如下:

技术分享图片

2、创建控制器

@Controller
@RequestMapping("/param")
public class ParamController {

    /**
     * 通过注解的方式获取参数
     * 
     * @param paramId
     * @param paramName
     * @return
     */
    @RequestMapping(value = "annoParam", method = RequestMethod.POST)
    public ModelAndView getParamByAnno(@RequestParam(value = "paramId", required = false) String id,
            @RequestParam("paramName") String name) {
        ModelAndView mv = new ModelAndView();
        System.out.println(id);
        System.out.println(name);
        mv.addObject("paramId", id);
        mv.addObject("paramName", name);
        mv.setViewName("annoParam");
        return mv;
    }
}

在控制器中,我的参数是id和name,但是前端传过来的是paramId和paramName,这个时候如果直接接受会报错,所以要通过注解进行转化,注解的值就是前端传过来的参数名,可以看到前端页面中的参数名就是paramId和paramName。

注意??:如果参数被注解@RequestParam修饰,默认情况下该参数不能为空,如果为空系统会抛异常,如果允许它为空,还要给注解增加一个required属性,属性值设置为false即可。

上面的控制器获取到参数之后将数据渲染到了视图annoParam中,所以下一步就是创建这个响应视图。

3、创建响应页面

<%@ 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>Annotatioin Param</title>
</head>
<body>

    <h2>
        获取到的参数id是:<label>${paramId }</label> <br /> 获取到的参数名称是:<label>${paramName }</label>
    </h2>

</body>
</html>

在该页面获取了控制器渲染的数据。至此,代码完成,下面开始测试。

4、测试

首先在页面输入如下参数:

技术分享图片

点击提交之后结果如下:

技术分享图片

可以看到渲染成功,说明控制器接受参数成功。

5、总结

注解方式需要注意两点:

1、注解的value属性值为前端传递过来的参数名

2、默认不能为空,如果希望允许为空,必须增加属性required,并设置其值为false

Spring MVC(五)--控制器通过注解@RequestParam接受参数

标签:异常   ref   属性   html   nop   一个   orm   encoding   前端   

原文地址:https://www.cnblogs.com/hellowhy/p/9741344.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!