spring mvc controller类方法的示例

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





}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值