springMVC参数设置

Posted lw97-1014

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了springMVC参数设置相关的知识,希望对你有一定的参考价值。

接收的参数为日期类型

在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参数设置的主要内容,如果未能解决你的问题,请参考以下文章

springmvc接口接收json类型参数设置

tomcat设置utf-8编码,springMVC后台接收参数反而乱码

Java学习路线分享SpringMVC之请求和响应

SpringMVC接收前端参数(Json数据)解析

springmvc+jsp中关于JQuery ajax提交的Content-Type参数设置application/json和application/x-www-form-urlencoded区别

SpringMVC——RequestMapping