@RequestMapping("/save1")
public String save1(User user){
System.out.println(user.toString());
return "suc";
}
<!-- @RequestMapping("/helloword/?/aa") 的 Ant 路径,匹配符:
?:匹配文件名的一个字符
*:匹配文件名的所有字符
**:匹配多层路径
-->
前端参数绑定到某个属性里面
<!--请求参数绑定(封装到实体类) list[].属性名-->
<form action="/SpringMVC/user/save2" method="get">
<input type="text" name="username"/><br/>
<input type="text" name="age"/><br/>
<input type="text" name="account.money"/><br/>
<input type="text" name="accounts[0].money"/><br/>
<input type="text" name="accounts[1].money"/><br/>
<input type="submit"/>
</form>
@RequestMapping("/dept")
public class DeptController {
@RequestMapping("/save")
public String save(@RequestParam(value = "username",required = true) String name){
//name的参数必须提供,否则访问save方法就会报错
System.out.println(name);
return "suc";
}
}
@RequestMapping("/dept/{id}")
public class DeptController {
@RequestMapping("/save")
public String save(@PathVariable Integerid){
//name的参数必须提供,否则访问save方法就会报错
System.out.println(name);
return "suc";
}
}
@PostMapping("/dept/{id}")
public class DeptController {
@RequestMapping("/save")
public String save(@RequestBody User user){
//name的参数必须提供,否则访问save方法就会报错
System.out.println(user);
return "suc";
}
}
/**
* 获取 Session
* SESSION=xxxxxx
*/
@RequestMapping("/testCookieValue")
public String testCookieValue(@CookieValue("SESSION") String sessionId) {
System.out.println("JSESSIONID = " + sessionId);
return "success";
}
@SessionAttributes(value = {"user"}, types = {String.class})
@RequestMapping("/springmvc")
@Controller
public class SessionAttributesTest {
/**
* @SessionAttributes
* 除了可以通过属性名指定需要放到会话中的属性外(value 属性值),
* 还可以通过模型属性的对象类型指定哪些模型属性需要放到会话中(types 属性值)。
* 注意: 该注解只能放在类的上面,不能放在方法上面
*
* @return
*/
@RequestMapping("/testSessionAttributes")
public String testSessionAttributes(Map<String, Object> map) {
User user = new User(1, "刘邦", "qwe", "123", "辽宁");
map.put("user", user);
map.put("school", "重庆");
return "success";
}
}
补充: 在SpringMVC中获取request对象的几种方式
@Autowired
private HttpServletRequest request;
<listener>
<listener-class>
org.springframework.web.context.request.RequestContextListener
</listener-class>
</listener>
之后再程序里可以用代码来获得
HttpServletRequest request =((ServletRequestAttributes)RequestContextHolder.getRequestAttributes()).getRequest()
public String hello(HttpServletRequest request,HttpServletResponse response)
public class BaseAction{
protected HttpServletRequest request;
protected HttpServletResponse response;
protected HttpSession session;
@ModelAttribute
public void setReqAndRes(HttpServletRequest request, HttpServletResponse response){
this.request = request;
this.response = response;
this.session = request.getSession();
}
/** 其他业务代码 */
}
2、通过spring提供的RequestContextHolder在非contrller层获取request和response对象
HttpServletRequest request = ((ServletRequestAttributes)RequestContextHolder.getRequestAttributes()).getRequest();
HttpServletResponse response = ((ServletRequestAttributes)RequestContextHolder.getRequestAttributes()).getResponse();
HttpServletResponse response = ((ServletWebRequest)RequestContextHolder.getRequestAttributes()).getResponse();
ServletContext context = ContextLoader.getCurrentWebApplicationContext().getServletContext();
request的基本方法
getScheme() :获取当前访问的协议,比如http
getServerName() :获取当前服务器的名字
getServerPort() :获取当前服务器的端口号
getAttribute(String name):返回由name指定的属性值
getAttributeNames():返回request对象所有属性的名字集合,结果是一个枚举的实例
getCookies():返回客户端的所有Cookie对象,结果是一个Cookie数组
getCharacterEncoding():返回请求中的字符编码方式
getContentLength():返回请求的Body的长度实例
getInputStream():返回请求的输入流,用于获得请求中的数据
getMethod():获得客户端向服务器端传送数据的方法
getParameter(String name):获得客户端传送给服务器端的有name指定的参数值
getParameterNames():获得客户端传送给服务器端的所有参数的名字,结果是一个枚举的实例
getParameterValues(String name):获得有name指定的参数的所有值
getProtocol():获取客户端向服务器端传送数据所依据的协议名称
getQueryString():获得查询字符串
getRequestURI():获取发出请求字符串的客户端地址
getRemoteAddr():获取客户端的IP地址
getRemoteHost():获取客户端的名字
getSession([Boolean create]):返回和请求相关Session
getServerName():获取服务器的名字
getServletPath():获取客户端所请求的脚本文件的路径