针对移动端的java服务器,接收和json返回数据

来源:互联网 发布:java直播平台源码 编辑:程序博客网 时间:2024/06/08 18:13
本人新手,刚参加工作,前段时间让我写安卓服务端,java语言,使用的是SSH框架,去百度谷歌,不过这方面的好像不是太多(也可能是我没发现)。
----------------------------------------------------
使用http协议,安卓那边的代码我不太懂,不过在我本机上测试代码的时候 我是使用http请求,以get方式提交。可以调用。
再说我的服务端,Struts+spring+hibernate,传输的是json数据。
剩下的不多说,见代码;
这是我的BaseAction,用于接收json数据:
import com.opensymphony.xwork2.ActionSupport;import java.io.BufferedReader;import java.io.IOException;import java.io.PrintWriter;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpSession;import net.sf.json.JSONObject;import net.sf.json.JSONSerializer;import org.apache.struts2.ServletActionContext;public class BaseAction extends ActionSupport {private static final long serialVersionUID = 1L;public HttpServletRequest getRequest() {return ServletActionContext.getRequest();}public HttpServletResponse getResponse() {return ServletActionContext.getResponse();}public HttpSession getSession() {return getRequest().getSession();}public HttpSession getSession(boolean create) {return getRequest().getSession(create);}public PrintWriter createPrintWriter() {HttpServletResponse response = ServletActionContext.getResponse();response.setContentType("application/x-json;charset=utf-8");PrintWriter out = null;try {out = ServletActionContext.getResponse().getWriter();} catch (IOException e) {e.printStackTrace();}return out;}public JSONObject readJsonObject() {BufferedReader reader = null;JSONObject json = null;String value = null;try {reader = getRequest().getReader();value = reader.readLine();} catch (IOException e) {e.printStackTrace();}json = (JSONObject) JSONSerializer.toJSON(value);String jsonString = json.getString("jsonString");JSONObject jsonObject = JSONObject.fromObject(jsonString);return jsonObject;}}
UserAction
import java.sql.Timestamp;import net.sf.json.JSONObject;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.context.annotation.Scope;import org.springframework.stereotype.Controller;import com.yuxu.common.MD5Util;import com.yuxutech.biz.IUserBiz;import com.yuxutech.pojo.BuyerExt;import com.yuxutech.pojo.Role;import com.yuxutech.pojo.User;@Scope("prototype")@Controllerpublic class UserAction extends BaseAction {private static final long serialVersionUID = 1L;private boolean flag = true;private String info = null;private String message = null;private boolean isSuccess = true;private User user = null;@Autowiredprivate IUserBiz userBiz;public String register() {String name = null;String password = null;String address = null;String phone = null;String email = null;String mac = null;String areaId = null;String role = null;try {JSONObject detail = readJsonObject();name = detail.getString("name");password = detail.getString("password");address = detail.getString("address");phone = detail.getString("phone");email = detail.getString("email");mac = detail.getString("mac");areaId = detail.getString("areaId");role = detail.getString("role");} catch (Exception e) {e.printStackTrace();this.flag = false;this.message = "Input type error!";return "success";}if ((name.length() > 20) || (name.length() < 4)) {this.info = "用户名长度为4-20位!";this.isSuccess = false;return "success";}if ((password.length() > 20) || (password.length() < 4)) {this.info = "密码长度为4-20位!";this.isSuccess = false;return "success";}try {User user = new User();user.setId(Integer.valueOf(this.userBiz.getMaxId() + 1));user.setName(name);user.setPwd(MD5Util.getMD5(password));user.setAddress(address);user.setPhone(phone);user.setEmail(email);user.setRole(new Role(Integer.parseInt(role)));user.setArea(areaId);user.setState(Integer.valueOf(1));BuyerExt buyerExt = new BuyerExt();buyerExt.setMac(mac.replaceAll(":", ""));buyerExt.setRegTime(new Timestamp(System.currentTimeMillis()));buyerExt.setUser(user);user.getBuyerExts().add(buyerExt);String result = this.userBiz.register(user);if (result.equals("注册成功!")) {this.isSuccess = true;this.info = result;this.user = this.userBiz.findUserByName(name);return "success";}this.isSuccess = false;this.info = result;this.user = null;return "success";} catch (Exception e) {e.printStackTrace();this.flag = false;this.message = "System error!";}return "success";}public String validPwd() {System.out.println("------------validPassword-------------");int userId = 0;String password = null;try {JSONObject jsonObject = super.readJsonObject();userId = jsonObject.getInt("userId");password = jsonObject.getString("password");} catch (Exception e) {e.printStackTrace();this.flag = false;this.message = "input type error!";return "success";}try {boolean isValid = this.userBiz.validPwd(userId,MD5Util.getMD5(password));if (isValid) {this.info = "密码正确,验证成功!";this.isSuccess = true;} else {this.info = "密码错误,请重新输入!";this.isSuccess = false;}return "success";} catch (Exception e) {e.printStackTrace();this.flag = false;this.message = "system error!";}return "success";}public String getInfo() {return this.info;}public String getMessage() {return this.message;}public User getUser() {return this.user;}public boolean isFlag() {return this.flag;}public boolean getIsSuccess() {return this.isSuccess;}}


下面的struts配置文件(部分代码),
<package name="user" extends="json-default" namespace="/user">        <!-- 用户注册 -->        <action name="register" class="userAction" method="register">            <result type="json">                <param name="includeProperties">                    flag,                    message,                    isSuccess,                    info,                    user\.id,                    user\.address,                    user\.name,                    user\.phone,                    user\.email,                    user\.area                </param>            </result>        </action>        <!-- 获取区域列表 -->        <action name="getAreas" class="areaAction">            <result type="json">                <param name="includeProperties">                    flag,                    message,                    detail\[\d+\]\.id,                    detail\[\d+\]\.name,                    detail\[\d+\]\.pid                </param>            </result>        </action>

不过现在并没有加密,只是初期的代码,以后还会继续上传加密之后的,当然如果你现在有更好的方法,请留言,多多交流!
原始地址:http://blog.csdn.net/lywwyd1314/article/details/11976571
原创粉丝点击