springMVC数据相关

1.接收的参数是日期类型
2.controller进行数据保存
3.controller进行重定向跳转
4.静态资源的映射关系
5.springMVC完成ajax功能
 
一、接收参数是日期类型
细节补充:WEB-INF下的资源无法直接访问,也无法重定向访问
如果按照常规接收日期==>status40(请求参数问题)
    方法一:接收独立的参数,使用initBinder注解,在Cotroller中添加下述方法
     @InitBinder    //org.springframework.web.bind.annotation.InitBinder
     public void test(ServletRequestDataBinder binder){ 
        //只要网页中传来的数据为预设的格式,就会转化为Date类型
        binder.registerCustomEditor(Date.class,new CustomDateEditor(new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"),true)); 
    }
    方法二:实体类中加注解
    public class User {
        private String name;
        private String sex;
        private int age;
        @DateTimeFormat(pattern="yyyy-MM-dd hh:mm:ss")    //不是输出的结果格式,而是符合要求的参数接收格式
        private Date birthday;
    }

二、数据保存

1.三种方式作用域都是request,${requestScope.key}
    方式一:保存在ModelAndView中
    @RequestMapping("setInfo")
        public ModelAndView setInfo(String name) {
            ModelAndView mv=new ModelAndView();
            mv.setViewName("login");
            mv.addObject("user","user");
            return mv;
        }
    方式二:保存在Model对象中
    @RequestMapping("setInfo")
        public String setInfo(Model model) {
            model.addAttribut("name","大兵");
            return "login";
        }
    方式三:保存在map中
    @RequestMapping("setInfo")
        public String setInfo(Map<String, Object> map) {
            map.put("name","大兵");
            return "login";
        }
    方式四:使用原始的HttpServletRequest
    @RequestMapping("setInfo")
        public String setInfo(HttpServletRequest request) {
            request.setAttribute("name","大兵");
            return "login";
        }

2.使用session对象存储数据
    方式一:原始的HttpSession
    @RequestMapping("setInfo")
        public String setInfo(HttpSession session) {
            session.setAttribute("name","大兵");
            return "login";
        }
    方式二:注解方式==>类上加上注解:@SessionAttributes
    @Controller
    @RequestMapping("user")
    @SessionAttributes(names={"name","sex"})    
    public class UserController {
        @RequestMapping("setInfo")
        public String setInfo(Model model) {
            model.addAttribut("name","大兵");
            model.addAttribut("sex","男");
            return "login";
        }
    }
    //names={key1,key2}
    //types=User.class==>将model中所有类型为User的属性添加到会话中  
    //types={User.class, Dept.class}==>将model中所有类型为User和Dept的属性添加到会话中
    //value={"user1","user2"}==>将model中属性名为user1和user2的属性添加到会话中

3.利用session获取application对象并把数据存储到application中(服务器没停止,数据有效)
    @RequestMapping("setInfo")
        public String setInfo(HttpSession session) {
            ServletContext servletContext = session.getServletContext();    //得到application对象
            servletContext.setAttribute("name","我在application中");
            return "login";
        }

三、Controller进行重定向跳转

    @RequestMapping("setInfo")
        public void setInfo() {
            return "login";    //默认为请求转发到login.jsp页面
        //  return "redirect:login.jsp";    //重定向,此时不再经过视图解析器,也可以是到其他Controller方法
        }

四、静态资源的映射关系

    <servlet-mapping>
        <servlet-name>springMVC</servlet-name>
        <!--拦截所有的请求(要注意静态资源的,如jpg,css,js,jquery,需要在springMVC配置文件中添加<mvc:default-servlet-handler/>)-->
        <url-pattern>/</url-pattern>    
    </servlet-mapping>

猜你喜欢

转载自www.cnblogs.com/BoxMonster/p/11456365.html