reader,writer,request,session
只要Controller的参数中存在Reader,Writer,HttpSession,HttpServletRequest对象即可
public void method1(HttpSession session,Writer writer)
public void method2(Writer writer, HttpServletRequest request)
public void method3(Reader reader,String str,Writer writer)
public void method4(Writer writer)
Public void method5(Writer writer,HttpServletRequest request)
@RequestMapping(value="/paramtype")
public void paramtype(HttpServletRequest request,HttpSession session,Writer writer) throws IOException{
writer.write("sessionid: "+session.getId()+"\n");
writer.write("contextPath: "+session.getServletContext().getContextPath()+"\n");
writer.write("RequestURL: "+request.getRequestURL()+"\n");
}
@RequestHeader
获取header信息
@RequestMapping(value="/header")
public void requestParam(
@RequestHeader("User-Agent") String userAgent,
@RequestHeader(value="Accept")String accepts,
@RequestHeader(value="Accept-Encoding")String encoding,
@RequestHeader(value="Accept-Language")String language,
@RequestHeader(value="Cookie")String[] cookie,
Writer writer){
try {
writer.write("userAgent:"+userAgent+"\n");
writer.write("accepts:"+accepts+"\n");
writer.write("encoding:"+encoding+"\n");
writer.write("language:"+language+"\n");
writer.write("cookie:"+Arrays.asList(cookie));
} catch (IOException e) {
e.printStackTrace();
}
}
@RequestParam
获取请求中的参数信息,参数之间用&分开,默认请求参数名和方法参数,required属性默认为true,如果不存在会报404,也可指定defaultValue填充
//http://127.0.0.1:8080/hellomvc/databind/requestParam1.mvc?username=hello
@RequestMapping(value="/requestParam1")
public void requestParam1(@RequestParam String username,Writer writer) throws IOException{
writer.write("hello "+username);
}
//http://127.0.0.1:8080/hellomvc/databind/requestParam2.mvc?name=sam&skills=java&skills=scala&cities=beijing&cities=shanghai
@RequestMapping(value="/requestParam2")
public void requestParam2(
@RequestParam(value="name",defaultValue="Jane") String username,
@RequestParam(required=false)List<String> skills,//也可使用String[]
@RequestParam(required=false)String cities,//required默认是true,如果没有会报404
Writer writer) throws IOException{
writer.write("hello: "+username+"\n");
writer.write("your skills:"+skills+"\n");
writer.write("you live in:"+cities);
}
}
@PathVariable
将请求URL中模板变量映射到功能处理方法的参数上
//http://127.0.0.1:8080/hellomvc/databind/path1/userid:10010/username/world.mvc
@RequestMapping(value="/path1/userid:{userid}/username/{username}")
public void pathVariable1(
@PathVariable(value="userid")int userid,//参数如果不是Int会抛出异常
@PathVariable(value="username")String username,
Writer writer) throws IOException{
writer.write("userid: "+userid+"\n");
writer.write("username: "+username);
}
@ModelAttribute
@ModelAttribute修饰的方法会在每次该控制器的请求方法被调用时调用 如果返回一个对象,这个对象会放到Model中
@ModelAttribute("user1") //会将user放到model中
public User modelAttribute(){
User user=new User();
user.setUsername("sam");
user.setSkills(Arrays.asList("spring","mybatis"));
return user;
}
@ModelAttribute
public void printTitle(Writer writer)throws IOException{
writer.write("Hello World"+"\n");
}
@ModelAttribute修饰的参数
如下,会使用请求的参数构造user对象,放到ModelMap中,key为user2中
//http://127.0.0.1:8080/hellomvc/databind/modelAttributeParam.mvc?username=kate&skills=java&skills=scala
@RequestMapping(value="/modelAttributeParam")
public String request3(Writer writer,@ModelAttribute("user2") User user)throws IOException{;
return "/databind/parameters";
}
@SessionAttribute
@SessionAttribute修饰类,将modelMap中的属性放到session中
@SessionAttributes("user")//会将user放到session中
public class SessionAttributeController {
}