4 springMVC详解(项目实战2-控制器接收参数)

1 controller

package cn.edu.nuaa.controller;


import cn.edu.nuaa.domain.Account;
import cn.edu.nuaa.domain.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;

import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
import java.util.Date;
import java.util.Map;

/**
 * 请求参数绑定
 */
@Controller
@RequestMapping("/param")
public class ParamController {

    /**
     * 请求参数绑定入门
     * @return
     */
    @RequestMapping("/testParam")
    public String testParam(String username,String password){
        System.out.println("执行了...");
        System.out.println("用户名:"+username);
        System.out.println("密码:"+password);
        return "success";
    }

    /**
     * 请求参数绑定把数据封装到JavaBean的类中
     * @return
     */
    @RequestMapping("/saveAccount")
    public String saveAccount(Account account){
        System.out.println("执行了...");
        System.out.println(account);
        return "success";
    }


    /**
     * 自定义类型转换器
     * @param user
     * @return
     */
    @RequestMapping("/saveUser")
    public String saveUser(User user){
        System.out.println("执行了...");
        System.out.println(user);
        return "success";
    }

    @RequestMapping(value="/testPathVariable/{sid}")
    public String testPathVariable(@PathVariable(name="sid") String id){
        System.out.println("执行了...");
        System.out.println(id);
        return "success";
    }

    /**
     * 获取到请求体的内容
     * @return
     */
    @RequestMapping("/testRequestBody")
    public String testRequestBody(@RequestBody String body){
        System.out.println("执行了...");
        System.out.println(body);
        return "success";
    }

    /**
     * 获取请求头的值
     * @param header
     * @return
     */
    @RequestMapping(value="/testRequestHeader")
    public String testRequestHeader(@RequestHeader(value="Accept") String header, HttpServletRequest request, HttpServletResponse response) throws IOException {
        System.out.println("执行了...");
        System.out.println(header);
        // return "success";
        // response.sendRedirect(request.getContextPath()+"/anno/testCookieValue");
        return "success";
    }

    /**
     * 获取Cookie的值
     * @return
     */
    @RequestMapping(value="/testCookieValue")
    public String testCookieValue(@CookieValue(value="JSESSIONID") String cookieValue){
        System.out.println("执行了...");
        System.out.println(cookieValue);
        return "success";
    }

    @RequestMapping(value="/testModelAttribute")
    public String testModelAttribute(@ModelAttribute("abc") User user){
        System.out.println("testModelAttribute执行了...");
        System.out.println(user);
        return "success";
    }

    @ModelAttribute
    public void showUser(String uname, Map<String,User> map){
        System.out.println("showUser执行了...");
        // 通过用户查询数据库(模拟)
        User user = new User();
        user.setUname(uname);
        user.setAge(20);
        user.setDate(new Date());
        map.put("abc",user);
    }

}

2 测试代码

为了不起动服务器,我们使用mockMVC进行测试

package cn.edu.nuaa.springday01Test;

import cn.edu.nuaa.controller.AnnoController;
import cn.edu.nuaa.controller.ParamController;
import com.alibaba.fastjson.JSONObject;
import org.junit.Test;
import org.springframework.http.MediaType;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.request.MockHttpServletRequestBuilder;
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;

import javax.servlet.http.Cookie;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.view;
import static org.springframework.test.web.servlet.setup.MockMvcBuilders.standaloneSetup;

public class testParm {

    ParamController paramController = new ParamController();
    MockMvc mockMvc = standaloneSetup(paramController).build();
    @Test
    public void test1() throws Exception {

        mockMvc.perform(get("/param/testParam")
                .param("username", "zhangsan")
                .param("password", "123"))
                .andExpect(view().name("success"));
    }

    @Test
    public void test2() throws Exception {

        mockMvc.perform(post("/param/saveAccount")
                .param("username", "lisi"))
                .andExpect(view().name("success"));

    }

    @Test
    public void test3() throws Exception {

        mockMvc.perform(post("/param/saveUser")
                .param("uname", "wangwu")
                .param("age", "1")
                .param("date","Wed Jan 01 00:00:00 CST 2020"))
                .andExpect(view().name("success"));

    }

    @Test
    public void test4() throws Exception {

        String requestJson = JSONObject.toJSONString("testJOSN");
        mockMvc.perform(post("/param/testRequestBody")
                .contentType(MediaType.APPLICATION_JSON).content(requestJson))
                .andExpect(view().name("success"));

    }

    @Test
    public void test5() throws Exception {
        MockHttpServletRequestBuilder request = MockMvcRequestBuilders.get("/param/testRequestHeader")
                .contentType("text/html")
                .accept(MediaType.APPLICATION_JSON);
        mockMvc.perform(request)
               .andExpect(view().name("success"));

    }

    @Test
    public void test6() throws Exception {
        Cookie cookie =new Cookie("JSESSIONID","c1");
        MockHttpServletRequestBuilder request = MockMvcRequestBuilders.get("/param/testCookieValue")
                .contentType("text/html")
                .accept(MediaType.APPLICATION_JSON)
                .cookie(cookie);
        mockMvc.perform(request)
                .andExpect(view().name("success"));

    }

    @Test
    public void test7() throws Exception {
        MockHttpServletRequestBuilder request = MockMvcRequestBuilders.get("/param/testRequestHeader")
                .contentType("text/html")
                .accept(MediaType.APPLICATION_JSON);
        mockMvc.perform(request)
                .andExpect(view().name("success"));

    }

    @Test
    public void test8() throws Exception {
        mockMvc.perform(post("/param/testModelAttribute")
                .param("uname", "wangwu"))
                .andExpect(view().name("success"));
    }
}
发布了146 篇原创文章 · 获赞 91 · 访问量 13万+

猜你喜欢

转载自blog.csdn.net/A1342772/article/details/104116740