JavaWeb如何将后台数据传递到前台页面HttpServletResponse和HttpServletRequest_html/css_WEB-ITnose

WBOY
Release: 2016-06-24 11:50:50
Original
2724 people have browsed it

继续总结: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"));
Copy after login

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("中国");
Copy after login


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

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 + "'}"); } }
Copy after login
上面得到结果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(); } } }
Copy after login

可以看到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); } }}
Copy after login





source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!