老师讲servlet返回处理结果时讲的是用请求转发的方式
新建一个showJson.jsp
<%[url=home.php?mod=space&uid=2779]@[/url] page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!-- 服务器端程序传递过来的数据,可以用el表达式获得数据
等同于:request.getAttribute("key");===${key} -->
${json}
然后在servlet.java里用
JSONArray jsonArray = service.getFoodMenu();
request.setAttribute("json",jsonArray) ;
//// 请求转发
request.getRequestDispatcher("showMenu.jsp").forward(request, response) ;
的方法向请求返回数据
可是我看到网上有用
response.setCharacterEncoding("UTF-8");
response.setContentType("application/json; charset=utf-8");
PrintWriter out = null;
try {
out = response.getWriter();
out.append(jsonArray.toString());
} catch (IOException e) {
e.printStackTrace();
} finally {
if (out != null)
out.close();
}
返回的 它们有什么区别?该用哪种比较好?
1.用request是将值存放在request的域里面,楼主可以参考jsp的八大对象里面有好几个域,比如session,page等。
2. 用printwrite,是将值写入在响应流里面返回给前端。
3.两者的区别是,前者是需要通过程序去主动获取才能取到,且在跳转后无法获取。后者会被浏览器接受,如果是同步请求会显示在页面上,如果是异步则会显示在ajax的数据对象中。且,request存储的数据有限制仅java一些数据类型,但是printwirt可以响应一些文件类型给前端,比如文件下载就是用它实现的。