SpringMVC的注解练习

来源:互联网 发布:怎样做淘宝店铺 编辑:程序博客网 时间:2024/05/23 13:23
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;@Controllerpublic 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整合到项目中。
0 0