package mjf.haihan.springmvc.handle;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import mjf.haihan.springmvc.pojo.User;
import mjf.haihan.springmvc.pojo.UserForm;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.CookieValue;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;
@Controller
public class DemoAction {
/**标准的映射*/
@RequestMapping("demo1")
public ModelAndView demo1(){
ModelAndView mv = new ModelAndView();
mv.setViewName("hello");
mv.addObject("msg", "呵呵");
return mv;
}
/**ant的映射方式*/
@RequestMapping("/*/demo2")
public ModelAndView demo2(){
ModelAndView mv = new ModelAndView();
mv.setViewName("hello");
mv.addObject("msg", "呵呵");
return mv;
}
/**占位符的映射方式*/
@RequestMapping("/{userId}/demo3")
public ModelAndView demo3(){
ModelAndView mv = new ModelAndView();
mv.setViewName("hello");
mv.addObject("msg", "呵呵");
return mv;
}
/**限制请求方法映射 */
//demo4.action?userId=123
@RequestMapping(method=RequestMethod.GET,params="userId",value="/demo4")
public ModelAndView demo4(){
ModelAndView mv = new ModelAndView();
mv.setViewName("hello");
mv.addObject("msg", "呵呵");
return mv;
}
/**绑定Servlet内置对象*/
@RequestMapping(value="/demo5")
public ModelAndView demo5(HttpServletRequest request,HttpServletResponse response,HttpSession session){
ModelAndView mv = new ModelAndView();
mv.setViewName("hello");
mv.addObject("msg", "我的第一个注解应用!</br>" +request +"</br>"+response +"</br>"+session);
return mv;
}
/**@PathVariable,使用在占位符*/
@RequestMapping(value="/{userName}/demo6")
public ModelAndView demo6(@PathVariable("userName")String userName){
ModelAndView mv = new ModelAndView();
mv.setViewName("hello");
mv.addObject("msg", "呵呵");
return mv;
}
/**@RequestParam ,使用在带过来的 参数,名字一致可以不用带参*/
@RequestMapping(value="/demo7")
public ModelAndView demo7(@RequestParam(defaultValue="123",value="userName",required=true)String userName,
@RequestParam("password")String password,
@RequestParam("answer")String answer){
ModelAndView mv = new ModelAndView();
mv.setViewName("hello");
mv.addObject("msg", "呵呵"+userName+"..."+password+"..."+answer);
return mv;
}
/**@RequestParam,是可以省略不写的*/
@RequestMapping("demo20")
public ModelAndView demo20(String userName,String password){
ModelAndView mv = new ModelAndView();
mv.setViewName("hello");
mv.addObject("msg", "呵呵"+userName+".."+password);
return mv;
}
/**@CookieValue */
@RequestMapping(value="/demo8")
public ModelAndView demo8(@CookieValue("JSESSIONID") String cookie){
ModelAndView mv = new ModelAndView();
mv.setViewName("hello");
mv.addObject("msg", "我的第一个注解应用!</br>"+cookie);
return mv;
}
/**@RequestBody,是把json转换为pojo对象,也是可以不写的 */
@RequestMapping(value="/demo9")
public ModelAndView demo9(@RequestBody User user){
ModelAndView mv = new ModelAndView();
mv.setViewName("hello");
mv.addObject("msg", "我的第一个注解应用!</br>"+user);
return mv;
}
/**java基本类型绑定*/
@RequestMapping(value="/demo10")
public ModelAndView demo10(@RequestParam("userName") String userName,@RequestParam("id") Integer id,@RequestParam("bool") Boolean bool){
ModelAndView mv = new ModelAndView();
mv.setViewName("hello");
mv.addObject("msg", "我的第一个注解应用!</br>"+userName+id+bool);
return mv;
}
/**集合List绑定 */
@RequestMapping(value="/demo11")
public ModelAndView demo11(UserForm userForm){
ModelAndView mv = new ModelAndView();
for (User user : userForm.getUsers()) {
System.out.println(user);
}
mv.setViewName("hello");
mv.addObject("msg", "我的第一个注解应用!</br>");
return mv;
}
/**在ModelAndView中直接添加视图名*/
@RequestMapping("/demo12")
public ModelAndView demo12(){
ModelAndView mv = new ModelAndView("jstl-demo");
List<User> users = new ArrayList<User>();
for (int i = 0; i < 10; i++) {
User user = new User();
user.setAge(20 + i);
user.setCreated(new Date());
user.setId(Long.valueOf(i));
user.setName("name_" + i);
user.setPassword("123456");
user.setSex(i / 2);
user.setUpdated(user.getCreated());
user.setUserName("userName_"+i);
users.add(user);
}
mv.addObject("users",users);
return mv;
}
/**forward:带有数据的转发,返回modelAndView对象 */
@RequestMapping("/demo13")
public ModelAndView demo13(){
ModelAndView mv = new ModelAndView("forward:/demo12.action");
mv.addObject("msg", "呵呵");
return mv;
}
/**forward:不带有数据的转发,直接返回字符串 */
@RequestMapping("/demo14")
public String demo14(){
return "forward:/demo12.action";
}
/**redirect:重定向 */
@RequestMapping("demo15")
public ModelAndView demo15(){
ModelAndView mv = new ModelAndView("redirect:/test.jsp");
try {
mv.addObject("msg",URLEncoder.encode("呵呵","UTF-8"));
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return mv;
}
/**不需要附带数据redirect重定向 */
@RequestMapping("demo16")
public String demo16(){
return "redirect:demo12.action";
}
/**@RequestBody,把json转换为pojo */
@RequestMapping("demo17")
public ModelAndView demo17(@RequestBody User user){
ModelAndView mv = new ModelAndView("show");
mv.addObject("msg", user);
return mv;
}
/**把pojo转换为json*/
@RequestMapping("demo18")
@ResponseBody //把页面的输出转化为json格式。
public List<User> demo18(){
List<User> list = new ArrayList<User>();
for (long i = 0; i <=10; i++) {
User user = new User();
user.setId(i);
user.setName("黑马程序员"+i);
user.setBirthday(new Date());
list.add(user);
}
return list;
}
}
这次练习了springmvc的注解,大致常用注解为@RequestMapping、@PathVariable、@RequestParam、@RequestBody和@ResponseBody这些注解,springmvc以后经常和mybatis和spring整合到项目中。
SpringMVC的注解练习
最新推荐文章于 2022-07-20 22:18:29 发布