spring-mvc的request和response

记录自己的java菜鸟历程。

1, 如何接收请求参数?

标注@Controller,注册成为一个Controller bean
在具体方法上标注@RequestMapping,指定具体的url地址和请求类型get/post
如果需要传参数的话,spring可以根据具体的名字直接做映射
如果传入的的参数都完全符合一个java对象的话,那可以在方法的参数列表中直接写这个SpecialClass object
还可以通过HttpServletRequest,然后通过request.getParameter("parameter")来获取传入的参数。

在这个过程中,可能会遇到一个问题,就是乱码,解决方案是在web.xml中增加对编码的支持。


         characterEncodingFilter
         org.springframework.web.filter.CharacterEncodingFilter
         
             encoding
             UTF-8
         
         
             forceEncoding
             true
         


         characterEncodingFilter
         /*

如果ResponseBody的返回中文乱码,最简单的方法是在@RequestMapping参数后增加produces="application/json;charset=utf-8")
详情可见: http://josh-persistence.iteye.com/blog/2085015

2, 如何返回请求结果?

2.1 返回json对象

spring支持直接返回对象,然后被序列化为json格式,直接在方法上标注@ResponseBody ,return object。
需要在spring-mvc.xml中加入




然后在pom.xml中增加依赖包

  
        org.springframework  
        spring-webmvc  
        3.1.2.RELEASE  
        jar  
        compile  
      
      
        org.codehaus.jackson  
        jackson-mapper-asl  
        1.9.8  
        jar  
        compile  
     

参考:

  • http://snowolf.iteye.com/blog/1628861

像以上的这种,直接会在页面上看到json对象,但如果想有更好的表现形式,比如想要有一个页面去包装下返回的内容,其中的一个做法是用jsp。

2.2 返回结果 使用jsp解析

这里就不能使用@ResponseBody了,需要return一个view的名字,比如return "query"
在spring-mvc.xml中定义对view的"转换和包装"


    
    

经过了这个定义之后,请求会默认访问/WEB-IN/views/query.jsp的内容。在query.jsp中可以获取返回的对象,之后把它用html的形式显示出来。
Controller中还需要修改下,需要在@RequestMapping下面的方法参数中,增加一个参数ModelMap map,之后把结果put进去

users = userService.getUserInfoByHotelName(hotelName);
modelMap.put("userList", users);

之后这个userList对象,会被query.jsp获取到,通过${}的方式获取其中内容

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

    
店名

对于jsp的第一行,taglib,需要在pom.xml中增加依赖包


    org.glassfish
    javax.servlet.jsp.jstl
    3.0.1


    org.glassfish.web
    jstl-impl
    1.2
```

你可能感兴趣的:(spring-mvc的request和response)