response.write()区别response.getWrite().write()

本文详细介绍了如何利用Ajax和Struts2框架实现从后台获取Response内容,并通过JavaScript处理响应数据的过程。包括创建XMLHttpRequest对象、发送GET请求、处理响应数据的完整步骤。
首先解释一下PrintWriter = response.getWriter(); wirte()是类PrintWriter提供的一个方法,是发送请求内容至页面,ajax常用到这个
response.write()是直接在页面输出内容

javascript如何获得后台response.getWriter().write()返回的值 用的struts2

这个你要用ajax才可以获得。
也就是说,在js里
1新建XMLHttpRequest对象(例如名为:xmlhttp)
2.XMLHttpRequest对象发送请求 :xmlhttp.open("GET","url",true);
注意里面的url就是你struts2跳转的action,例如test.action
3.通过struts.xml找到url跳转到的Action,在execute方法里写 response.getWriter().write("aaaaa");
Struts2获得Httpresponse对象会吧,要用ServletActionContext.getResponse(); (别忘了在execute方法最后加上一句return null ,作为execute方法的返回。)
4.在js后面里继续写:  var resultstr = xmlhttp.responseText;   那么等异步传输完成,resultstr就会被赋值为"aaaaa"

我前面说的1,2,4步骤都是涉及ajax内容,如果对ajax不了解,需要先去学习ajax基础用法
实例:
后端:
if(count ==0){ 
    response.getWriter().write("{failure:true,message:'0'}"); 
}else if(count == 1){ 
    response.getWriter().write("{success:true,message:'1'}"); 
}else if(count ==2){ 
    response.getWriter().write("{success:true,message:'2'}"); 
前端:
  1. 前台删除:   
  2. Ext.Ajax.request({   
  3. method:'POST',   
  4. url:'',   
  5. success:function(response){   
  6. var result = Ext.decode(response.responseText);  
  7. if(result.message=='0')  
  8. //如果为0   
  9. Ext.Msg.alert("信息提示"" 00000");   
  10. },   
  11. failure:function(response){   
  12. var result = Ext.decode(response.responseText);  
  13.   
  14. if( result.message== "1"){   
  15. Ext.Msg.alert("信息提示"" 11111");   
  16. }else if(result.message == "2"){   
  17. Ext.Msg.alert("信息提示"" 22222");   
  18. }   
  19. }   
  20. });   


在 Java Servlet 中,`ServletResponse` 接口提供了 `getWriter()` 方法,该方法返回一个 `PrintWriter` 对象,用于向客户端发送字符文本格式的响应内容。`getWriter().write()` 方法允许将字符、字符数组、字符串等字符类型数据写入响应输出流中。在实际开发中,这种机制常用于生成 HTML 页面、JSON 数据或纯文本响应。 ### 使用方式 `getWriter().write()` 的典型用法如下: ```java protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8"); response.setCharacterEncoding("UTF-8"); PrintWriter out = response.getWriter(); out.write("Hello, this is a sample response using getWriter().write()"); out.close(); } ``` 该方法适用于字符类型数据的输出,如果需要输出二进制数据(如图片、文件等),则应使用 `response.getOutputStream()`[^4]。 ### 编码设置 在使用 `getWriter().write()` 输出内容时,必须设置正确的字符编码以避免乱码问题。可以通过以下方式设置响应的字符集: ```java response.setContentType("text/html;charset=UTF-8"); response.setCharacterEncoding("UTF-8"); ``` 这两行代码确保响应内容以 UTF-8 编码发送,浏览器能够正确解析中文等非 ASCII 字符[^3]。 ### 缓存机制 与 JSP 中的 `JspWriter` 不同,`PrintWriter` 是一个带缓冲区的输出流对象,数据首先写入缓冲区,之后才会刷新到客户端。可以通过调用 `flush()` 或 `close()` 方法强制刷新缓冲区[^2]。 ### 注意事项 - **不能同时使用 `getOutputStream()` 和 `getWriter()`**:这两个方法分别用于处理二进制和字符数据,若同时调用会抛出 `IllegalStateException` 异常[^4]。 - **避免在 JSP 和 Servlet 混合使用时出现冲突**:JSP 页面内部也使用 `getWriter()` 输出内容,因此应确保在转发或包含 JSP 时,Servlet 不再使用 `getWriter()`。 ### 示例代码 以下是一个完整的示例,展示如何在 Servlet 中使用 `getWriter().write()`: ```java @WebServlet("/ExampleServlet") public class ExampleServlet extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8"); response.setCharacterEncoding("UTF-8"); PrintWriter writer = response.getWriter(); writer.write("<h1>欢迎使用 getWriter().write()</h1>"); writer.write("<p>这是通过 Servlet 输出的 HTML 内容。</p>"); writer.close(); } } ```
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值