package com.yuanhongfei.controller;
import java.util.List;
import javax.annotation.Resource;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
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.servlet.ModelAndView;
import com.yuanhongfei.entity.UserInfo;
import com.yuanhongfei.service.UserInfoService;
/***
* '@Controller' 为 使用spring mvc方式而不使用struts来编写MVC思想中的Controller层。
* '@Controller' 的类 spring会自动扫描并注册,并且作为控制器(靠springmvc-context.xml中配置<annotation-driven />来扫描这种类)
*
* 作为Controller的类的其中面向页面请的的方法中的参数有很多,且都是可选参数,可根据需要来选择,有:
* 1.@PathVariable String id 为 如果 '@RequestMapping'的value写的是 /{id}/{name} 等 此写法可以直接获取传过来的{id}的值并赋给id
* 2.@ModelAttribute("entity") Entity entity 将页面传入的参数自动封装到Entity类中,需页面的表单name与类中的属性名一致
* 3.HttpServletRequest request, HttpServletResponse response 获取request和response
* 4.@RequestParam("a") String a 可以单个接受页面的参数a
* 5. Model model 可以model可以将一些对象进行addAttribute操作,然后到页面可以获取这些对象。
*
* @author HOFEY
*/
/**在做添加和修改时候,应该先跳转到添加或修改的页面
* (也就是说先写跳转的controller,而修改的时候应该获取原来实体的id,然后调用根据id查询实体的service方法,将实体属性信息显示到更新页面,提交的时候也是用add方法)
* user controller
* @author HOFEY
*
*/
@Controller
@RequestMapping("user")
//如果 controller中用到@RequestMapping("user"),那么要访问此controller就必须在路径中加上user
public class UserController {
//@Autowired
@Resource
//@Autowird自动注入默认按类型注入,推荐使用@Resource按名称注入
private UserInfoService userService;
public UserInfoService getUserService() {
return userService;
}
public void setUserService(UserInfoService userService) {
this.userService = userService;
}
@RequestMapping(value="/list",method=RequestMethod.GET)
public String queryAllUserInfo(Model model){
List<UserInfo> userinfoList = userService.queryAllUserInfo();
model.addAttribute("userinfolist", userinfoList);
return "userInfoList";
}
/**
* 跳转到添加页面
* @return
*/
@RequestMapping(value="/toAddUserPage")
public String toAddUserPage(){
return "addUserPage";
}
/**
*
* 添加controller
* @param userinfo
* @return
*/
@RequestMapping(value="/addUser",method=RequestMethod.POST)
//@ModelAttribute("entity") Entity entity 将页面传入的参数自动封装到Entity类中,需页面的表单name与类中的属性名一致
public ModelAndView addUser(@ModelAttribute("userinfo") UserInfo userinfo){
userService.addUser(userinfo);
return new ModelAndView("redirect:/user/list");
//让跳转到list界面直接显示 而不是跳到成功页面 重定向 redirect:/user/list
}
/**
*
* 跳转到更新用户信息页面
* controller
*/
@RequestMapping(value="/{id}")
/**
*
* @param id
* @RequestParam("id") String id 获取页面传过来的值
* @param Model model 可以model可以将一些对象进行addAttribute操作,然后到页面可以获取这些对象
* @return
*/
public String toUpdateUserPage(@PathVariable String id,Model model){
UserInfo userInfo = userService.queryUserById(id);
model.addAttribute("userInfo", userInfo);
return "updateUserPage";
}
/**
*
* @PathVariable String id 参数获取方法
* @RequestMapping(value="/{id}")
* public String toUpdateUserPage(@PathVariable String id,Model model){
System.out.println("跳转到更新页面上的参数值是"+id);
UserInfo userInfo = userService.queryUserById(id);
model.addAttribute("userInfo", userInfo);
System.out.println("跳转到更新页面获取到的性别是"+userInfo.getSex());
return "updateUserPage";
}
* @RequestParam("id") String id 参数获取方法
@RequestMapping(value="toUpdateUserPage")
public String toUpdateUserPage(@RequestParam("id") String id,Model model){
UserInfo userInfo = userService.queryUserById(id);
model.addAttribute("userInfo", userInfo);
System.out.println("跳转到更新页面获取到的性别是"+userInfo.getSex());
return "updateUserPage";
}
*/
/**
* 更新用户信息Controller
*
*/
@RequestMapping(value="updateUser", method=RequestMethod.POST)
public String updateUser(@ModelAttribute("userinfo") UserInfo userinfo){
if(userinfo.getId()!=null){
userService.addUser(userinfo);
//重定向到list页面
return "redirect:/user/list";
}else
return "error";
}
/**
* 删除用户
* @param userInfo
* @return
*/
@RequestMapping("deleteUser")
public String deleteUser(UserInfo userInfo){
userService.deleteUser(userInfo);
return "redirect:/user/list";
}
}