SpringMvc4.3.8搭建记录

来源:互联网 发布:左程云面试算法指南 编辑:程序博客网 时间:2024/06/06 02:15

环境:Centos6.5 x64  MyQL6.7  tomcat8.5.6 java sdk 1.8.0_121 eclipse 4.6.1

spring下载地址:http://repo.spring.io/release/org/springframework/spring/

前期配置时出现启动 tomcat 失败

tomcat 报错信息:java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException

1、需要把 spring mvc 所有有信赖包都要放在 /WEB-INF/lib下,不要使用 build path 引入这些包,

      增加 commons-logging包(http://commons.apache.org/proper/commons-logging/)。

2、对web.xml 中的配置<servlet-mapping>时,servlet-mapping的属性配置错误。

<servlet-mapping>
      <servlet-name>coreServlet</servlet-name>
      <url-pattern>/</url-pattern>
  </servlet-mapping>

其中<url-pattern></url-pattern>可以为你想要的路径,但是一定要配置正确。

3、修改项目.setting 目录下的org.eclipse.wst.common.project.facet.core.xml文件,修改 <installed facet="jst.web" version="3.1"/> 中的 version='2.5'

4、SpringMVC @RequestBody 需要的是 json 字符串,如果上传的是json对象会提示

WARNING: Failed to read HTTP message: org.springframework.http.converter.HttpMessageNotReadableException: Could not read JSON document: Unrecognized token 'Code': was expecting ('true', 'false' or 'null')

$.ajax({
            url:'/MyTest/Test/GetTest',
            data:JSON.stringify({SCode:"this is my data",PageIndex:"10",PageSize:"10"}),    // 注意这里已把  json对象转成 字符串
            type:"POST",
            dataType:"json",   //后台返回的 json
            contentType:"application/json;charset=utf-8",   //必须,@ReqeustBody根据这个来确定需要使用JsonHttpMessageConverter
            success:function(data)
            {
                alert(data.RetMsg+"-"+data.TotalRows);
            },
            error:function(XMLHttpRequest, textStatus, errorThrown)
            {
                alert(XMLHttpRequest.status);
            }
        })


5、@RequestBody 接受 json数组对象

后台

    @ResponseBody
    @RequestMapping(value = "/MyData",method={RequestMethod.POST})
    public BaseResult MyData(@RequestBody User[] req)    // 不能使用  List<User>
    {
        BaseResult retObj = new BaseResult();
        retObj.RetCode = "00000";
        retObj.RetMsg = req.Code;
        return retObj;
    }

前台

var users=[];  

var user1={"userName":"test","address":"111"};    

var user2={"userName":"qq","address":"22"};    

users.push(user1);    

users.push(user2);


data = JSON.stringify(users);



6、SpringMVC helloword

@Controller    //标注为一个控制器
@RequestMapping("/Test")   //请求 url路径
public class HelloWord {
    @RequestMapping("/HelloWord")   //请求资源url
    public String Hello() {
        return "Index";   //返回对应的 jsp 文件
    }

    //返回请求数据

    @ResponseBody
    @RequestMapping(value = "/Json")
    public ResponseEntity<BaseResult> ResultJSON() {
        BaseResult retObj = new BaseResult();
        try {
            retObj.RetCode = "00000";
            retObj.RetMsg = "test";
            return new ResponseEntity<BaseResult>(retObj,HttpStatus.OK);
        } catch (Exception ex) {
            throw ex;
        }
    }

    //返回JSON数据

    @ResponseBody
    @RequestMapping(value = "/MyJson")
    public BaseResult Json() {
        BaseResult retObj = new BaseResult();
        try {
            retObj.RetCode = "00000";
            retObj.RetMsg = "测试 JSON";
            retObj.TotalRows = 10;
            return retObj;
        } catch (Exception ex) {
            throw ex;
        }
    }

    //返回 List对象

    @ResponseBody
    @RequestMapping(value = "/MyList")
    public List<BaseResult> MyList() {
        List<BaseResult> retObj = new ArrayList<BaseResult>();
        BaseResult item = new BaseResult();
        item.RetCode = "00001";
        item.RetMsg = "1";
        retObj.add(item);
        
        BaseResult item1 = new BaseResult();
        item1.RetCode = "00001";
        item1.RetMsg = "1";
        retObj.add(item1);
        return retObj;
    }

   //请求 JSON 数据,但 @RequestBody只接收 JSON字符串

    @ResponseBody
    @RequestMapping(value = "/MyData",method={RequestMethod.POST})
    public BaseResult MyData(@RequestBody BaseRequest req)
    {
        BaseResult retObj = new BaseResult();
        retObj.RetCode = "00000";
        retObj.RetMsg = req.Code;
         retObj.TotalRows = req.PageIndex + req.PageSize;
        String vSQL = "select * from t";
        return retObj;
    }

}



7、在Controller 中使用 Redirect 处理请求

    //redirect     @RequestMapping("/redirect")    public String redirect(){        return "redirect:hello";    }







原创粉丝点击