用spring拦截器返回json咋样返回json

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
您的访问请求被拒绝 403 Forbidden - ITeye技术社区
您的访问请求被拒绝
亲爱的会员,您的IP地址所在网段被ITeye拒绝服务,这可能是以下两种情况导致:
一、您所在的网段内有网络爬虫大量抓取ITeye网页,为保证其他人流畅的访问ITeye,该网段被ITeye拒绝
二、您通过某个代理服务器访问ITeye网站,该代理服务器被网络爬虫利用,大量抓取ITeye网页
请您点击按钮解除封锁&Spring MVC返回json数据给Android端_Linux编程_Linux公社-Linux系统门户网站
你好,游客
Spring MVC返回json数据给Android端
来源:Linux社区&
作者:zhrxidian
原先做项目时,服务端接口一直是别人写的,自己拿来调用一下,但下个项目,接口也要自己搞定了,我想用Spring MVC框架来提供接口,这两天便抽空浅学了一下该框架以及该框架如何返回json数据。在这里边介绍两种个人觉得比较方便的两种方法(PS:其实是我现在只会这两种)。
1.直接PrintWriter输出json数据
使用该方法时,可以自己拼凑json字符串,不过我并不赞同使用该方法,毕竟太容易出错了。所以这里我是先构建jsonobject对象,在将该对象打印出来。首先,我们要导入一个最重要的jar包。
json-lib-2.2.2-jdk15.jar
接下来我们看代码。
package sedion.zhr.
import java.io.PrintW
import javax.servlet.http.HttpServletRimport javax.servlet.http.HttpServletR
import net.sf.json.JSONO
import org.springframework.stereotype.Cimport org.springframework.web.bind.annotation.RequestM
@Controller@RequestMapping("/test")public class TestController {/**& &
* 直接 PrintWriter输出json & &
* @param req& &
* @param rep& &
* @throws Exception& &
*/& & @RequestMapping("/login")& & public void getjson(HttpServletRequest req,HttpServletResponse rep) throws Exception& & {& & & & String username = req.getParameter("username");& & & & String pass = req.getParameter("pass");& & & & & & & & System.out.println(" 直接 PrintWriter输出json :"+username +"---&" + pass);
& & & & PrintWriter writer = rep.getWriter();& & & & JSONObject object = new JSONObject();& & & & if(username.equals("zhr") && pass.equals("123"))& & & & {& & & & & & object.put("results", "login success");& & & & }& & & & else& & & & {& & & & & & object.put("results", "login fail");& & & & }& & & & & & & & & & & & writer.println(object.toString());& & & & writer.flush();& & & & writer.close();& & & & & & }}
服务端好了以后,我们简单做个Android端的来测试一下,界面很简单,代码就不给出了。
测试代码如下
package com.example.
import org.json.JSONOimport webservice.Wimport android.annotation.SuppressLimport android.app.Aimport android.os.Bimport android.os.Himport android.os.Mimport android.view.Mimport android.view.Vimport android.view.View.OnClickLimport android.widget.Bimport android.widget.EditTimport android.widget.T
public class MainActivity extends Activity {
& & private EditText edit_username,edit_& & private B& & private H& & private JSONO& & & & @SuppressLint("HandlerLeak")& & @Override& & protected void onCreate(Bundle savedInstanceState)& & {& & & & super.onCreate(savedInstanceState);& & & & setContentView(R.layout.activity_main);& & & & edit_username = (EditText)findViewById(R.id.username);& & & & edit_pass = (EditText)findViewById(R.id.pass);& & & & loginbtn = (Button)findViewById(R.id.login_btn);& & & & & & & & handler = new Handler()& & & & {& & & & & & @Override& & & & & & public void handleMessage(Message msg) & & & & & & {& & & & & & & & if(msg.what == 123)& & & & & & & & Toast.makeText(getApplicationContext(), object.optString("results"), Toast.LENGTH_SHORT).show();;
& & & & & & }& & & & };& & & & & & & & loginbtn.setOnClickListener(new OnClickListener()& & & & {& & & & & & & & & & & & @Override& & & & & & public void onClick(View arg0) {& & & & & & & & & & & & & & & & new Thread(new Runnable()& & & & & & & & {& & & & & & & & & & & & & & & & & & & & @Override& & & & & & & & & & public void run() & & & & & & & & & & {& & & & & & & & & & & & object = Webservice.login(edit_username.getText().toString(), edit_pass.getText().toString());& & & & & & & & & & & & Message message = new Message();& & & & & & & & & & & & message.what = 123;& & & & & & & & & & & & handler.sendMessage(message);& & & & & & & & & & & & & & & & & & & & & & }& & & & & & & & }).start();& & & & & & & & & & & & & & }& & & & });& & & & & & & & & & }}
其中Webservice.login()方法是我自己封装好的数据提交方法,具体细节可以看我的另一篇博客 & 。
我们来测试一下,输入用户名zhr,密码123,可以看到控制台上打印出来了 & 直接 PrintWriter输出json :zhr---&123 ,说明请求到了,同时手机端上也得到返回的结果
测试成功。
2.使用Spring内置的支持
使用该方法先要在springmvc中添加如下配置
&bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"&&&property name="messageConverters"&& &list&&
&bean& & class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter" /&& &/list&&&/property&&/bean&
随后引入两个jar包。jackson-mapper-asl-1.8.5.jar和jackson-core-asl-1.8.5.jar。
再将服务端代码改为
* 使用Spring内置的支持& &
* @param req& &
* @param rep& &
* @throws Exception& &
*/& & @RequestMapping("/login")& & @ResponseBody& & public Map&String, String& getjson(HttpServletRequest req,HttpServletResponse rep) throws Exception& & {& & & & String username = req.getParameter("username");& & & & String pass = req.getParameter("pass");& & & & & & & & System.out.println("使用Spring内置的支持:"+username +"---&" + pass);
& & & & Map&String, String& map = new HashMap&String, String&();& & & & if(username.equals("zhr") && pass.equals("123"))& & & & {& & & & & & map.put("results", "login success");& & & & }& & & & else& & & & {& & & & & & map.put("results", "login fail");& & & & }& & & & & & & & & & & & & & & &
记得加上&@ResponseBody,这样便支持返回复杂对象,Android端不做任何修改,再次测试即可。
Spring MVC+Spring3+Hibernate4开发环境搭建
Spring MVC整合Freemarker基于注解方式
基于注解的Spring MVC简单介绍
Spring MVC 框架搭建及详解
Spring MVC使用Cron表达式的定时器
简单的Spring MVC经典案例
本文永久更新链接地址:
相关资讯 & & &
& (04月01日)
& (04月01日)
& (03月28日)
& (04月01日)
& (03月31日)
& (03月23日)
图片资讯 & & &
   同意评论声明
   发表
尊重网上道德,遵守中华人民共和国的各项有关法律法规
承担一切因您的行为而直接或间接导致的民事或刑事法律责任
本站管理人员有权保留或删除其管辖留言中的任意内容
本站有权在网站内转载或引用您的评论
参与本评论即表明您已经阅读并接受上述条款<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
您的访问请求被拒绝 403 Forbidden - ITeye技术社区
您的访问请求被拒绝
亲爱的会员,您的IP地址所在网段被ITeye拒绝服务,这可能是以下两种情况导致:
一、您所在的网段内有网络爬虫大量抓取ITeye网页,为保证其他人流畅的访问ITeye,该网段被ITeye拒绝
二、您通过某个代理服务器访问ITeye网站,该代理服务器被网络爬虫利用,大量抓取ITeye网页
请您点击按钮解除封锁&<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
您的访问请求被拒绝 403 Forbidden - ITeye技术社区
您的访问请求被拒绝
亲爱的会员,您的IP地址所在网段被ITeye拒绝服务,这可能是以下两种情况导致:
一、您所在的网段内有网络爬虫大量抓取ITeye网页,为保证其他人流畅的访问ITeye,该网段被ITeye拒绝
二、您通过某个代理服务器访问ITeye网站,该代理服务器被网络爬虫利用,大量抓取ITeye网页
请您点击按钮解除封锁&springmvc统一的异常处理拦截器实现_小组_ThinkSAAS
springmvc统一的异常处理拦截器实现
springmvc统一的异常处理拦截器实现
springmvc已经实现了异常的处理,这里我对异常进行自定义实现
实现继承SimpleMappingExceptionResolver实现自定义的异常拦截器,
通过viewName是否为空来判断action请求是ajax还是http
import java.io.IOE
import java.io.PrintW
import java.util.HashM
import java.util.M
import javax.servlet.http.HttpServletR
import javax.servlet.http.HttpServletR
import org.springframework.web.servlet.ModelAndV
import org.springframework.web.servlet.handler.SimpleMappingExceptionR
import com.alibaba.druid.support.json.JSONU
public class MySimpleMappingExceptionResolver extends
SimpleMappingExceptionResolver {
protected ModelAndView doResolveException(HttpServletRequest request,
HttpServletResponse response, Object arg2, Exception ex) {
System.out.println("resolver ...");
String viewName = determineViewName(ex, request);
if (viewName != null) {// JSP格式返回
if (!(request.getHeader("accept").indexOf("application/json") & -1 || (request
.getHeader("X-Requested-With") != null && request
.getHeader("X-Requested-With").indexOf("XMLHttpRequest") & -1))) {
// 如果不是异步请求
// Apply HTTP status code for error views, if specified.
// Only apply it if we're processing a top-level request.
Integer statusCode = determineStatusCode(request, viewName);
if (statusCode != null) {
applyStatusCodeIfPossible(request, response, statusCode);
return getModelAndView(viewName, ex, request);
} else {// JSON格式返回
PrintWriter writer = response.getWriter();
Map map=new HashMap();
map.put("success", false);
map.put("msg", ex.getMessage());
writer.write(JSONUtils.toJSONString(map));
writer.flush();
} catch (IOException e) {
e.printStackTrace();
然后在springmvc的配置文件中配置自定义拦截器
&bean id="exceptionResolver"
class="com.dahafo.demo.resolver.MySimpleMappingExceptionResolver"&
&property name="exceptionMappings"&
&prop key="java.lang.SQLException"&error/sqlerror&/prop&
&prop key="java.lang.Exception"&error/500&/prop&
&/property&
最后在srping Controller 中将异常进行抛出
@RequestMapping(value="/query.html",method=RequestMethod.POST)
@ResponseBody
protected Object query(HttpServletRequest request,
HttpServletResponse response) throws Exception {
EtlUser user = new EtlUser();
user.setUserName("test");
throw new SQLException("hello error");
PHP开发框架
开发工具/编程工具
服务器环境
ThinkSAAS商业授权:
ThinkSAAS为用户提供有偿个性定制开发服务
ThinkSAAS将为商业授权用户提供二次开发指导和技术支持
官方1群:【已满】
让ThinkSAAS更好,把建议拿来。

我要回帖

更多关于 spring拦截器返回json 的文章

 

随机推荐