Home  >  Article  >  Web Front-end  >  How JavaWeb passes background data to the front page HttpServletResponse and HttpServletRequest_html/css_WEB-ITnose

How JavaWeb passes background data to the front page HttpServletResponse and HttpServletRequest_html/css_WEB-ITnose

WBOY
WBOYOriginal
2016-06-24 11:50:502781browse

Continue to summarize: After Java passes the Action, how to write the data returned in the action to the front desk

First understand: HttpServletResponse object

(1). When the web server receives an http request, it will create an HttpServletRequest and HttpServletResponse object for each request, send data to the client to find HttpServletResponse, and get data from the client to find HttpServletRequest;

(2 ). The HttpServletResponse object can send three types of data to the client: a. Response header b. Status code c. Data
(3). See the API of HttpServletResponse yourself
(4).rsponse returns to the front desk Data:

a. Use OutputStream to write Chinese to the client:

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

b. Use Writer to write to the client Write in Chinese:

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


Look at how companies generally use it: No matter how it is used, it is nothing more than encapsulating it into methods , return data to the front desk

Action:

public void searchModelIsUsed() {		<strong>HttpServletRequest req = ServletActionContext.getRequest();</strong>		boolean result1 = this.voucherTypeService.queryProductionMode();		if(result1==false){			//非生产模式则可修改模板			String result="is_PRODUCTION_MODE";			this.<strong>actionWrite</strong>("{success:'true',info:'" + result + "'}");		}else{			String vmId = req.getParameter("vmId");			boolean result = this.voucherTypeService.checkVoucherModelUsed(vmId);			this.actionWrite("{success:'true',info:'" + result + "'}");		}	}
The result obtained above, return display data to the front desk using actionWrite

actionWrite is as follows:

	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();			}		}	}

You can see that the actionWrite method is an HttpServletResponse that sets the relevant information and uses PrintWriter to write data to the frontend

In the frontend JS, it is the response passed from the background The data is 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);	}			}}





Statement:
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