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萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章