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"));
}
}