package com.zy.controller;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.ModelAttribute;
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.SessionAttributes;
import org.springframework.web.bind.support.SessionStatus;
import org.springframework.web.servlet.ModelAndView;
import com.zy.model.User;
@Controller
@RequestMapping("/user")
@SessionAttributes("user")
public class UserControllers {
//url占位符,绑定到入参中。最好在pathvariable中显示指定入参。
//requestmapping请求URL,方法get/post,参数params,请求头headers
@RequestMapping(value="/{userId}",method=RequestMethod.POST,params="userId",headers="content-type=text/*")
public ModelAndView showDetail(@PathVariable("userId") String userId)
{
ModelAndView mav=new ModelAndView();
mav.setViewName("user/showDetail");
// mav.addObject("user",userService.getUserById());
return mav;
}
//几种典型的处理方法签名
/*@RequestMapping(value="/param")
1.public String handParam(@RequestParam("userName") String userName)
{
//字符串返回逻辑视图名
return "success";
}*/
/*@RequestMapping(value="/param")
* 将cookie值和报文头属性绑定到参数中
2.public ModelAndView handleCookie(@CookieValue("JSESSIONID") String sessionId,@RequestHeader("Accept-Language") String al))
{
ModelAndView mav=new ModelAndView();
mav.setViewName("success");
mav.addObject("user",new User());
return mav;//modelandview 返回模型和逻辑视图名
}*/
/*@RequestMapping(value="/param")
*请求参数按照名称匹配的方式绑定到user属性中
3.public String handlerUser(User user)
{
return "success";
}*/
/*@RequestMapping(value="/param")
* 直接将http请求对象传递给方法
public String handlerHttp(HttpServletRequest request)
{
return "success";
}*/
/*@RequestMapping(value="/param")
* 添加servlet api类 response返回值设置为void
4.public void handleServlet(HttpServletResponse response)
{
response.addCookie(new Cookie("name","zy"));
}
使用httpsession入参
5.public String handleServlet(HttpSession session)
{
session.setAttribute("sessionId","1234");
return "success";
}*/
//处理数据模型
//方式1
@ModelAttribute("user")
public User getUser()
{
User user=new User();
user.setUserId("1");
return user;
}
//会先调用上面的方法,然后合并填充user
public String getUserId(@ModelAttribute("user") User user)
{
user.setUserId("1");
return "success";
}
//方式2请求对应的隐含模型对象传递给modelmap,通过它可以访问模型中的数据
@RequestMapping(value="/model")
public String handleModle(ModelMap modelMap)
{
modelMap.addAttribute("test", "ha");
User user=(User)modelMap.get("user");
user.setUserId("1");
return "/user/showUser";
}
//方式3 多个请求共享模型属性数据,在控制器类前标注SessionAttributes
//SessionAttributes("")自动将处理器中任何处理方法中名为user的模型属性透明地存储到HttpSession中
public String handleModle2(ModelMap modelMap,SessionStatus sessionStatus)
{
User user=(User)modelMap.get("user");
if(user!=null)
{
user.setUserId("1");
sessionStatus.setComplete();
}
return "success";
}
}
spring mvc controller类方法的示例
最新推荐文章于 2021-10-08 20:19:23 发布