虽然我的方向是android应用开发,但大多android应用都会从后台获取数据,所以我在第一个项目中选择后台开发,尽量能对后台的处理机制能有大概的了解,并且能简单使用spring框架,MySql,进行后台开发。
今天, 本人写了简单的android登陆后台代码, 结果前台一直接收不到我返回的字符串,但是tomcat里显示前台返回了数据,,后台尴尬了,真不给力啊,翻来覆去找不到bug.最后发现原来是少了一条注解@ResponseBody
@ResponseBody注释的作用是把返回值转化成某种格式,再传输到前台,所以,没返回值的方法是不能加这个注释的.
并且今天也更深刻的理解了Spring框架对解耦合的方式,简洁概括下,就是使用bean来给一些类初始化,所以随时可以改变要使用的类,并且可以将这些耦合关系放在xml代码中配置.
贴下代码备忘,初学记录
package com.qgmobile.xnote.controller;
import java.io.UnsupportedEncodingException;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import com.google.gson.Gson;
import com.qgmobile.xnote.bean.User;
import com.qgmobile.xnote.service.UserService;
import javax.servlet.http.HttpServletRequest;
@Controller
public class UserController {
//获取spring的具体实现类的接口
public UserService userService;
public void setUserService(UserService userService){
this.userService = userService;
}
@ResponseBody
@RequestMapping(value = "/login", method = RequestMethod.POST)
public String login (HttpServletRequest request) throws UnsupportedEncodingException
{
request.setCharacterEncoding("utf8");
System.out.println("login 开始!");
System.out.println(request);
String userJson = request.getParameter("param");
System.out.println(userJson);
Gson gson = new Gson();
User user = gson.fromJson(userJson, User.class);
System.out.println("login 开始!");
return userService.login(user);
// return "success!";
}
@RequestMapping(value = "/register", method = RequestMethod.POST)
public String register(HttpServletRequest request)
{
String userJson = request.getParameter("param");
Gson gson = new Gson();
User user = gson.fromJson(userJson, User.class);
System.out.println("register 开始!");
return userService.register(user);
}
@RequestMapping(value = "/index", method = RequestMethod.GET)
public String index(HttpServletRequest request){
System.out.println("GOT method star!");
return "111";
}
}