视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
JavaWeb如何将后台数据传递到前台页面HttpServletResponse和HttpServletRequest_html/css_WEB-ITnose
2020-11-27 16:01:03 责编:小采
文档

继续总结:Java经过Action后,怎么将action中返回的数据写到前台去

先了解下:HttpServletResponse对象

(1).Web服务器收到一个http请求,会针对每个请求创建一个HttpServletRequest和HttpServletResponse对象,向客户端发送数据找HttpServletResponse,从客户端取数据找HttpServletRequest;

(2).HttpServletResponse对象可以向客户端发送三种类型的数据:a.响应头b.状态码c.数据
(3).自己去看HttpServletResponse的API
(4).rsponse向前台返回数据:

a.使用OutputStream向客户端写入中文:

 response.setHeader("Content-type","text/html;charset=UTF-8");//向浏览器发送一个响应头,设置浏览器的解码方式为UTF-8 String data = "中国"; OutputStream stream = response.getOutputStream(); stream.write(data.getBytes("UTF-8"));

b.使用Writer向客户端写入中文:

 response.setCharacterEncoding("UTF_8");//设置Response的编码方式为UTF-8 response.setHeader("Content-type","text/html;charset=UTF-8");//向浏览器发送一个响应头,设置浏览器的解码方式为UTF-8,其实设置了本句,也默认设置了Response的编码方式为UTF-8,但是开发中最好两句结合起来使用 //response.setContentType("text/html;charset=UTF-8");同上句代码作用一样 PrintWriter writer = response.getWriter(); writer.write("中国");


看看企业一般怎么用:不管怎么用,无非就是封装成方法,向前台返回数据

Action:

public void searchModelIsUsed() {	HttpServletRequest req = ServletActionContext.getRequest();	boolean result1 = this.voucherTypeService.queryProductionMode();	if(result1==false){	//非生产模式则可修改模板	String result="is_PRODUCTION_MODE";	this.actionWrite("{success:'true',info:'" + result + "'}");	}else{	String vmId = req.getParameter("vmId");	boolean result = this.voucherTypeService.checkVoucherModelUsed(vmId);	this.actionWrite("{success:'true',info:'" + result + "'}");	}	}
上面得到结果result,向前台返回显示数据用actionWrite

actionWrite如下:

	public void actionWrite(String result) {	if(result == null){	result = "";	}	HttpServletResponse resp = ServletActionContext.getResponse();	resp.setContentType("text/json;charset=UTF-8");	resp.setHeader("Cache-Control", "no-cache");	PrintWriter pw = null;	try {	pw = resp.getWriter();	pw.write(result);	} catch (IOException e) {	throw new EVoucherException("获取http写入流异常" + e.getMessage());	} finally {	if (pw != null) {	pw.close();	}	}	}

可以看到actionWrite方法就是一个HttpServletResponse设置相关信息后利用PrintWriter向前台写数据

在前台JS中,就是响应response后台传递过来的数据就OK。

callback : function (options,success,response){	if(success){	checkSessionOverdue(response.responseText);	var msg = Ext.JSON.decode(response.responseText);	var msgInfo = msg.info;	if(msgInfo == 'true'){	Ext.Msg.alert("系统提示", "当前模板已存在历史数据,只能修改模板名称跟启用日期!");	isAddVoucherModel = false;	refreshAddVoucherModelForm(false);	}else if(msgInfo=='is_PRODUCTION_MODE'){	isAddVoucherModel = true;	refreshAddVoucherModelForm(false);	}else{	isAddVoucherModel = true;	refreshAddVoucherModelForm(false);	}	}}

下载本文
显示全文
专题