码迷,mamicode.com
首页 > 编程语言 > 详细

springMVC参数设置

时间:2019-09-04 00:19:49      阅读:111      评论:0      收藏:0      [点我收藏+]

标签:use   ESS   进入   ons   let   加载   erro   code   条件   

接收的参数为日期类型

在springmvc的controller控制层接收日期参数时,如果不加以设置,服务器开启后,进入不了页面中,会报错。这个错误就是日期在页面传入到springmvc的controller中的时候没有转化。就会引起错误

解决的方法是,在controller类中加一个方法,如下:

@InitBinder
    public void initBinder(ServletRequestDataBinder binder){
        //只要网页中传来的数据格式为yyyy-MM-dd 就会转化为Date类型
        binder.registerCustomEditor(Date.class, new CustomDateEditor(new SimpleDateFormat("yyyy-MM-dd"),true));
    }

这里必须要有注解,才能起到转化的作用。

controller进行数据的保存

在springmvc的controller中进行数据保存跟以前的servlet中保存数据是同一个原理,把数据保存到request、session中,当数据保存到request中的时候,有下面的方法:

写一个方法返回类型是ModelAndView,那么这种保存方式必须在方法里面重新new一个新的ModelAndView的类,然后调用里面的方法,实现保存和跳转的作用,如图:

@Controller
public class MyController1 {
    @RequestMapping("/list.do")
    public ModelAndView list() {
        Users u=new Users();
        u.setName("张三");
        u.setAge(16);
        u.setSex("");
        u.setPhone(12332313);
        ModelAndView mv=new ModelAndView();
        mv.setViewName("login");
        mv.addObject("user", u);
        return mv;
    }
}

我这里在项目里创建一个Users的实体类,然后给实体类赋值,将数据赋值给以这个实体类为数据类型的一个对象里,然后把这个对象保存到ModelAndView中,这个是以request方式保存的

mv.addObject("user", u);是以ModelAndView的方式添加对象的或者添加字符串的还有集合。
mv.setViewName("login");这个方法是页面的跳转到login这个页面中,将对象保存到里面然后随着请求转发将数据发送给页面中,从而页面就可以得到相应的数据了
以Model的方法保存,这个方法的返回值类型还是字符串类型的。
@RequestMapping("b")
public String Model(Model model){
    UserBean bean = new UserBean();
    bean.setName("admin");
    bean.setPwd("admin");
    model.addAttribute("admin", bean);
    return "login";

Model也是一种request的存储方式,在同一个请求中被调用里面的参数,

 model.addAttribute("admin", bean);Model中添加的方法是addAttribute(),括号里面可以是文本,对象,集合。
还有使用Map的方法保存数据,返回的数据类型还是字符串类型
@RequestMapping("a")
public String Map(Map<String, Object> Map){
    UserBean bean = new UserBean();
    bean.setName("刘备");
    bean.setPwd("张飞");
    Map.put("admin", bean);
    return "login";

同上,唯一不同的就是,它添加数据的是put()的方法,它是map集合中特有的存放数据的方法

还有最原始的存储方式就是用request,那就得用HttpServletRequest 来调用request了,本人觉得还是最原始的方法用的舒服

@RequestMapping("a")
public String request(HttpServletRequest request){
    UserBean bean = new UserBean();
    bean.setName("张三");
    bean.setPwd("123");
    request.setAttribute("b", bean);
    return "login";

session的保存方式:

@RequestMapping("/a")
public String session(HttpSession session){
    UserBean bean = new UserBean();
    bean.setName("曹操");
    bean.setPwd("周瑜");
    session.setAttribute("b", bean);
    return "login";
}

request和session在controller中和在servlet中使用的方法都是一样的,之前的讲的除了session是保存在session中的,其余的都是保存在request中的,

如果想使用上面的几种方法保存到session中那么就使用注解了 ,在类外使用@SessionAttributes(names={key1,key2})这个方法。

controller中进行重定向调转

请求转发和重定向跳转的区别,1.第一个差别点,就是重定向是两次请求,转发是一次请求,因此转发的速度要快于重定向。2.第二个差别点也很明显,重定向之后地址栏上的地址会发生变化,变化成第二次请求的地址,转发之后地址栏上的地址不会变化,还是第一次请求的地址,那么在springmvc的controller中想用重定向跳转页面,只需要在要跳转的页面前面加上redirect就ok了。

    方式一:使用ModelAndView
        return new ModelAndView("redirect:/login");
        这样可以重定向到toList这个方法
        方式二:返回String
         return "redirect:/ login "; 

静态资源的映射

技术图片

 

 

 从上面的图片可以看出web.xml的拦截条件是*.do 那么静态资源就不会拦截,我们想让静态资源被拦截,就要改成:

技术图片

 

 

 写成/是对所有的文件都进行了拦截,因为在controller中找不到静态资源的相应的servlet,所以图片什么效果就不会显示出来的,这个时候就需要在springmvc的配置文件中释放资源了

技术图片

 

 

 用springmvc完成ajax功能

创建一个jsp文件,里面引入jquery文件,然后里面写入ajax代码

ajax的实现有三种方式$.get(url,data,callback,type);其中url:服务器的路劲    data:请求参数   callback:回调函数  type: 响应数据的类型。(html,json)

$.post()和get一样   $.ajax({url:(服务器的路径),data:(请求参数),type:(响应的数据类型),success:(回调函数),Error:(错误),Async:(同步),datatype:(请求数据类型)})

在以前学的servlet中响应文本的时候直接Out.print()响应过去,当响应的是对象的时候需要借助gson jar包。把Java对象转化为json对象,

但在controller中需要加入jackson的jar包,在响应的方法上加上@ResponseBody这个注解,就能把Java对象转化为json对象了

方法的返回值可以是对象的集合,字符串。

jsp页面

技术图片

 

 ajax操作,当加载页面的时候,从controller中响应数据到页面上,然后弹出来,测试一下。

当页面控制器响应一个中文的话,页面接收到会发现是乱码,解决的方法是:

@RequestMapping(value="Ajax",produces = "text/html;charset=UTF-8" )
    @ResponseBody
    public String a(String name) {
        System.out.println(name);
        return "张三";
    }
在括号里面加上:produces = "text/html;charset=UTF-8",这些代码就解决了,还有就是在springmvc的配置文件中添加标签来修改源代码来从新设置响应的编码。

 

 

springMVC参数设置

标签:use   ESS   进入   ons   let   加载   erro   code   条件   

原文地址:https://www.cnblogs.com/lw97-1014/p/11456292.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!