Spring MVC HTTP請求地址映射


package com.springmvc.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.servlet.ModelAndView;

/**
 * <p>前期准備:了解Http請求報文結構與內容。</p>
 * <p>測試Http請求地址映射。</p>
 * author:liaody
 */
@Controller
public class ViewController {

    /**
     * <p>簡單的測試Mvc框架是否搭建完成</p>
     *
     * @return 視圖名稱
     */
    @RequestMapping("/view")
    public String view() {
        System.out.println("你已通過springMVC進入controller方法。。。。");
        return "index";
    }

    /**
     * <p>通過URL限定:*。</p>
     * <p>示例:
     * value="/user/*\/createUser,匹配user/createUser、user/aaa/createUser、user/bb/createUser。*代表零個或多個字符。
     * </p>
     * <p>
     * 訪問的url:http://localhost:8080/user/createUser、url:http://localhost:8080/user/aaa/createUser、url:http://localhost:8080/user/bb/createUser
     * </p>
     *
     * @return
     */
    @RequestMapping(value = "/user/*/createUser")
    public ModelAndView paramUrl() {
        ModelAndView mv = new ModelAndView();
        System.out.println("調用paramUrl方法");
        mv.addObject("message", "user/*/createUser匹配:url:http://localhost:8080/user/createUser");
        mv.addObject("message2", "user/*/createUser匹配:url:http://localhost:8080/user/aaa/createUser");
        mv.addObject("message3", "user/*/createUser匹配:url:http://localhost:8080/user/bb/createUser");
        mv.setViewName("/success");
        return mv;
    }

    /**
     * <p>通過URL限定:**。</p>
     * <p>示例:
     * value="/user/**\/createUser,匹配user/createUser、user/aa/bb/createUser、user/aa/bb/cc/createUser。**代表可以有多個路徑。
     * </p>
     * <p>
     * 訪問的url:http://localhost:8080/user/createUser、http://localhost:8080/user/aa/bb/createUser、http://localhost:8080/user/aa/bb/cc/createUser
     * </p>
     *
     * @return
     */
    @RequestMapping(value = "user/**/createUser")
    public ModelAndView paramUrl2() {
        ModelAndView mv = new ModelAndView();
        System.out.println("調用paramUrl2方法");
        mv.addObject("message", "user/**/createUser匹配:url:http://localhost:8080/user/createUser");
        mv.addObject("message2", "user/**/createUser匹配:url:http://localhost:8080/user/aa/bb/createUser");
        mv.addObject("message3", "user/**/createUser匹配:url:http://localhost:8080/user/aa/bb/cc/createUser");
        mv.setViewName("/success");
        return mv;
    }

    /**
     * <p>通過URL限定:{}占位符。</p>
     * <p>示例:
     * value="/user/**\/{userId},匹配/user/aa/123、/user/aa/bb/abc、/user/aa/bb/cc/ddd
     * </p>
     * <p>
     * 訪問的url:url:http://localhost:8080/user/aa/123、http://localhost:8080/user/aa/bb/abc、http://localhost:8080/user/aa/bb/cc/ddd
     * </p>
     *
     * @return
     */
    @RequestMapping(value = "user/**/{userId}")
    public ModelAndView paramUrl3(@PathVariable("userId") String userId) {
        ModelAndView mv = new ModelAndView();
        System.out.println("調用paramUrl3方法");
        System.out.println("使用@PathVariable注解綁定參數userId:" + userId);
        mv.addObject("message", "user/**/{userId}匹配:url:http://localhost:8080/user/aa/123");
        mv.addObject("message2", "user/**/{userId}匹配:url:http://localhost:8080/user/aa/bb/abc");
        mv.addObject("message3", "user/**/{userId}匹配:url:http://localhost:8080/user/aa/bb/cc/ddd");
        mv.setViewName("/success");
        return mv;
    }

    /**
     * <p>通過URL限定:?。</p>
     * <p>示例:
     * value="/user/createUser??,匹配user/createUseraa、user/createUserbb。?代表0個或一個字符。
     * </p>
     * <p>
     * 訪問的url:http://localhost:8080/user/createUseraa、http://localhost:8080/user/createUserbb
     * </p>
     *
     * @return
     */
    @RequestMapping(value = "/user/createUser??")
    public ModelAndView paramUrl4() {
        ModelAndView mv = new ModelAndView();
        System.out.println("調用paramUrl4方法");
        mv.addObject("message", "user/createUser??匹配:url:http://localhost:8080/user/createUseraa");
        mv.addObject("message2", "user/createUser??匹配:url:http://localhost:8080/user/createUserbb");
        mv.setViewName("/success");
        return mv;
    }

    /**
     * <p>通過URL限定:{XXX}綁定XXX參數值。</p>
     * <p>示例:
     * value="/owners/{ownerId},匹配owners/123、owners/abc
     * </p>
     * <p>
     * 訪問的url:http://localhost:8080/owners/123、http://localhost:8080/owners/abc
     * </p>
     * <p>
     * 如果@PathVariable不指定參數名,只有在編譯的時候打開窗debug開關才有效,建議不要做么做。
     * <p>
     * </p>
     *
     * @return
     */
    @RequestMapping(value = "/owners/{ownerId}")
    public ModelAndView paramUrl5(@PathVariable("ownerId") String ownerId) {
        ModelAndView mv = new ModelAndView();
        System.out.println("調用paramUrl5方法");
        mv.addObject("message", "/owners/{ownerId}匹配:url:http://localhost:8080/owners/123");
        mv.addObject("message2", "user/createUser??匹配:url:http://localhost:8080/owners/abc");
        mv.addObject("message3", "被綁定的參數" + ownerId);
        mv.setViewName("/success");
        return mv;
    }


    /**
     * <p>通過請求方式進行限定,一般只會用到GET和POST方式,PUT、DELETE不常用</p>
     * <p>通過請求方法限定:post</p>
     * <p>
     * 訪問:使用post方式訪問http://localhost:8080//method/post
     * </p>
     *
     * @return
     */
    @RequestMapping(value = "/method/post", method = RequestMethod.POST)
    public ModelAndView methodPost() {
        ModelAndView mv = new ModelAndView();
        System.out.println("調用的是post方法");
        mv.setViewName("/success");
        mv.addObject("message", "成功調用的是post方法");
        return mv;
    }

    /**
     * <p>通過請求方法限定:get</p>
     * <p>value值故意設置與上面的一樣value="/method/post"</p>
     * <p>
     * 訪問:使用get方式訪問http://localhost:8080//method/post
     *
     * @return
     */
    @RequestMapping(value = "/method/post", method = RequestMethod.GET)
    public ModelAndView methodGet() {
        ModelAndView mv = new ModelAndView();
        System.out.println("調用的是Get方法");
        mv.setViewName("/success");
        mv.addObject("message", "成功調用后get方法!");
        return mv;
    }

    /**
     * <p>通過請求參數限定</p>
     * <p>
     *     "param1":表示請求必須包含名為param1的請求參數。
     *     "!param1":表示請求不能包含名為param1的請求參數。
     *     "!param1=value1":表示請求包含名為param1的請求參數且其值不能夠為value1。
     *      {"param1!=value11","param2"}:表示請求包含名為param1和param2的請求參數且param1的值不能夠為value1。
     * </p>
     * <p>訪問的url:http://localhost:8080/param1/yuyu?userName=liaody&userPassword=123</p>
     *
     * @param validationType
     * @param userName
     * @param userPassword
     * @return
     */
    @RequestMapping(value = "/param1/{validation}", params = {"userName!=administrator", "userPassword"})
    public ModelAndView param1(@PathVariable("validation") String validationType,
                               @RequestParam("userName") String userName,
                               @RequestParam("userPassword") String userPassword) {

        System.out.println("綁定參數設置{}:" + validationType);
        System.out.println("綁定參數userName:" + userName);
        System.out.println("綁定參數設置userPassword:" + userPassword);
        ModelAndView mv = new ModelAndView();
        mv.setViewName("/success");
        return mv;
    }

    /**
     * <p>通過請求頭參數限定</p>
     * <p>訪問的url:http://localhost:8080/param1/yuyu?userName=liaody&userPassword=123</p>
     *
     * @param userId
     * @return
     */
    @RequestMapping(value = "/head",headers="content-type=text/*")
    public ModelAndView head(@RequestParam("userId") String userId) {

        System.out.println("綁定參數設置{}:" + userId);
        ModelAndView mv = new ModelAndView();
        mv.setViewName("/success");
        mv.addObject("message", "通過請求頭參數限定!");
        mv.addObject("message2", "綁定參數userId!"+userId);
        mv.setViewName("/success");
        return mv;
    }

}

 success.jsp

<%@ 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>Insert title here</title>
</head>
<body>
模擬登錄成功頁面<br>
${message }<br>
${message2 }<br>
${message3 }
</body>
</html>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM