Rabbit的gravatar头像
Rabbit 2014-12-11 17:15:06

如何在java web项目中写一个http接口的发布?

我用的框架是springmvc,spring,hibernate,想写一个接口供外部调用,但是只让写基于http协议的接口,不用webservice什么的.谢谢了.


最代码官方编辑于2015-5-28 21:08:04
所有回答列表(10)
张道玺的gravatar头像
张道玺 2014年12月11日

218.203.170.13

acw2000的gravatar头像
acw2000  LV9 2014年12月12日

直接返回一个json串就行 用@responesebody

迷彩风情的gravatar头像
迷彩风情  LV26 2014年12月12日

和咱们写普通方法没什么区别,你只要设定好返回的数据格式就行,比如:xml或者是json格式!

下面是我写的例子,你可以参考下:

1.这个是代码:

package cn.gov.csrc.flight.controller;

import java.util.HashMap;
import java.util.Map;

import javax.servlet.http.HttpSession;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import cn.gov.csrc.cms.entity.UserEntity;
import cn.gov.csrc.cms.service.UserService;
import cn.gov.csrc.cms.util.GlobalConstants;
/**
 * 客户端登录
 * @version 1.0  
 * @author zhaoxinguo  
 * @created 2014年10月17日
 */
@Controller
@RequestMapping("/u")
public class ClientController {
	
	private static Logger logger = LoggerFactory
			.getLogger(ClientController.class);
	
	private Integer flag;// 返回值(0失败,1成功)
	
	@Autowired
	private UserService userService;
	
	/**
	 * 登录(接口)
	 * @param model
	 * @param userName
	 * @param passWd
	 * @return   
	 * @version 1.0  
	 * @author zhaoxinguo  
	 * @created 2014年10月17日
	 */
	@RequestMapping("/login")
	@ResponseBody
	public Map<String, Object> login(Model model,HttpSession session,String userName,String passWd,String onlyCode){
		UserEntity userEntity = userService.login(userName,passWd);
		Map<String, Object> dataMap = new HashMap<String, Object>();
		if(userEntity != null){
			/*if(userEntity.getOnlyCode().equals(onlyCode)){
				dataMap.put("userId", userEntity.getUserId());
				logger.info("-----客户端登录成功-----");
				dataMap.put("flag", 1);// 成功
			}else{
				logger.info("-----客户端登录失败-----");
				dataMap.put("flag", 0);// 失败
			}*/
			session.setAttribute(GlobalConstants.SESSION_LOGIN_USER,userEntity);// 登录成功
			dataMap.put("userId", userEntity.getUserId());
			logger.info("-----客户端登录成功-----");
			dataMap.put("flag", 1);// 成功
		}else{
			logger.info("-----客户端登录失败-----");
			dataMap.put("flag", 0);// 失败
		}
		return dataMap;
	}

	public Integer getFlag() {
		return flag;
	}

	public void setFlag(Integer flag) {
		this.flag = flag;
	}
	
	
}

2.这个是客户端和服务端接口的交互协议:

如何在java web项目中写一个http接口的发布?3.客户端就是通过这设定的地址去访问,如果是外网需要通过ip地址,如果是本地,就直接127.0.0.1就可以了!

mj19910923的gravatar头像
mj19910923  LV14 2014年12月12日

说白了就是一个 action,接受参数,返回值json

最代码官方的gravatar头像
最代码官方  LV168 2014年12月12日

你要的这个功能本质上是java servlet实现的http接口。

可以通过java servlet实现,也可以通过java web mvc框架如struts,springmvc等第三方开源框架来实现。

至于部署可以是java的任意web容器,比如tomcat,jetty,resin等。

咖啡加糖609的gravatar头像
咖啡加糖609  LV11 2014年12月12日

最基础的一个servlet功能就可以了,看你需求使用get  还是  post 方式,然后在考虑下数据交互方式,一般来说,现在都是xml或者json字符串,

tony.cui的gravatar头像
tony.cui 2014年12月13日

RESTful 

324769774的gravatar头像
324769774  LV2 2014年12月16日

可以使用web service ,返回参数使用json字符串来返回

行走de稻草人的gravatar头像
行走de稻草人  LV5 2014年12月17日

返回json是最流行的,如果需要返回xml,可以使用一些XML工具来转换。但是需要在用到的model上加xml注解,且不宜解决递归调用。最笨的办法是自己拼xml格式字符串,注意字符编码就行。给你个参考:

@RequestMapping(value="/anonymous/getXml",produces = "application/xml; charset=utf-8")

@ResponseBody

public String getXml(String args,HttpServletResponse response) {

   try {
       String str = getStrXml(args);//这样去获取你的xml字符串,自己去处理,可以传参数
       return str;
   } catch (Exception e) {
       return "出现内部错误。";//这里打印个错误信息吧
   }

}

dongqdong的gravatar头像
dongqdong  LV2 2014年12月17日

selvelt 不就好了?

顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友