SpringMvc 浅析 之 URL Action

就不再赘述理论,下面都是代码示例。


Web.xml配置

<servlet>
        <servlet-name>spring</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:spring-servlet.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>spring</servlet-name>
        <url-pattern>*.htm</url-pattern>
        <url-pattern>*.do</url-pattern>
    </servlet-mapping>

1、……/string.do || ……/string.htm

    /**
     * @return
     */
    @RequestMapping("/string")
    public ModelAndView Index(){
        ModelAndView modelAndView = new ModelAndView();
        modelAndView.setViewName("index");
        return modelAndView;
    }

2、……/map.do || ……/map.htm

传递参数
@RequestMapping("/map")
    public ModelAndView Index2(){
        ModelAndView modelAndView = new ModelAndView();
        modelAndView.setViewName("/collection/map");
        Map<String, List<Person>> datas = new HashMap<String, List<Person>>();
        List<Person> persons = new ArrayList<Person>();
        person.setName("yvan");
        person.setSex("male");
        persons.add(person);
        datas.put("data", persons);
        modelAndView.addObject("data", datas);
        return modelAndView;
    }

视图接收

<c:forEach items="${data}" var="item">
        <div>
        <p style="color: red"><c:out value="${item.key}"></c:out></p>
        <div>
            <c:forEach items="${item.value}" var="person">
                <p style="color: purple"><c:out value="${person.name}"></c:out></p>
                <p style="color: purple"><c:out value="${person.sex}"></c:out></p>
            </c:forEach>
        </div>
        </div>
    </c:forEach>

3、通过ResponseBody 返回json格式的数据

method请求的方法,下面的示例表示只允许post请求
@RequestMapping(value="/json",method=RequestMethod.POST)
    public @ResponseBody  Person Index4(){
        return person;
    }

4、多路由映射

请求 ……../mapArr.do 和……../mappingArr.do都会请求此action

@RequestMapping(value={"/mapArr","/mappingArr"})
    public ModelAndView mapIngArray(){
        return new ModelAndView("/muti/muti");
    }

5、请求路径参数

当访问…./123456.htm || …./123456/info.htm || …./user/123456/info.htm
的时候123456会作为参数传入以@PathVariable注解的变量中。

    @RequestMapping(value={"/{userId}","/{userId}/info","/user/{userId}/info"})
    public ModelAndView handlerByParamValue(@PathVariable int userId){
        System.out.println(userId);
        return new ModelAndView("/muti/muti");
    }

6、通配符

可以匹配 …./user1.do和…./usera.do 但是不能匹配…./user11.do和…./useraa.do

@RequestMapping(value="/user?")
    public ModelAndView handlerByExp(){
        return new ModelAndView("/muti/muti");
    }

7、通过参数名来匹配

可以匹配…/core.do?create

@RequestMapping(value="/core",params="create")
    public ModelAndView handlerByParams(){
        return new ModelAndView("/muti/muti");
    }

8、请求传参

    /**
     * action映射:.../requestParam?userid=123456
     * @RequestParam
     * value="userid":url绑定的变量值
     * required=true:是否必须
     * defaultValue:默认值
     * @param 
     * @return
     */
    @RequestMapping("/requestParam")
    public ModelAndView requestParam(@RequestParam(value="userid",required=true,defaultValue="")String userid)
    {
        System.out.println(userid);
        return new ModelAndView("/muti/muti");
    }

9、传递数组参数

/**
     * action映射:.../paramArrs?role=admin&role=super
     * @return
     */
    @RequestMapping("/paramArrs")
    public String GetUserMenu(@RequestParam(value="role") List<String> roles)
    {
        if (roles!=null&&roles.size()>0) {
            for (String string : roles) {
                System.out.println(string);
            }
        }
        return "/muti/muti";
    }

10、提交model

    /**
     * action映射:.../setUser.do
     * @param user
     */
    @RequestMapping(value="/setUser",method=RequestMethod.POST)
    public String createUser(@ModelAttribute(value="user")User user)
    {
        System.out.println(user.getUsername());
        System.out.println(user.getSex());
        return "/muti/muti";
    }

视图部分

<form action="${pageContext.request.contextPath}/setUser.htm"  method="post">
        <input type="text" name="username" />
        <input type="radio" name="sex" value="男"/>
        <input type="radio" name="sex" value="女"/>
        <input type="submit" value="提交" />
    </form>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值