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>
发布了84 篇原创文章 · 获赞 49 · 访问量 22万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章