写过servlet的人都知道,可以通过HttpServletResponse中的getWriter方法获取对客户端的输出流,但是如果在调用getWriter之前未设置编码(既调用setContentType或者setCharacterEncoding方法设置编码),HttpServletResponse则会返回一个用默认的编码(既ISO-8859-1)编码的PrintWriter实例。这样就会造成中文乱码。而且设置编码时必须在调用getWriter之前设置,不然是无效的。比如:
PrintWriter out = resp.getWriter();
resp.setContentType("text/html;charset=utf-8");
out = resp.getWriter();
这样用out输出中文的时候肯定会是乱码的,而且即便你在下面再获取一次getWriter(红色地方),此时的PrintWriter也不会是utf8编码的PrintWriter。 正确的写法应该是:
resp.setContentType("text/html;charset=utf-8");
PrintWriter out = resp.getWriter();
这样的。
这是我自己犯得一个小错误。学艺不精啊,记下来!呵呵!
分享到:
相关推荐
2. **获取PrintWriter对象**:通过`resp.getWriter();`获得PrintWriter对象,用于向客户端输出内容。 #### 三、网页定时刷新与跳转 `HttpServletResponse`还支持设置HTTP响应头来实现网页的定时刷新和自动跳转。 ...
`getWriter()`返回一个`PrintWriter`,用于写入字符流,适合文本内容。 4. **添加响应头**:`addHeader(String name, String value)`用于设置或添加响应头,如设置缓存控制。 案例分析: 假设我们有一个登录功能,...
`HttpServletResponse`是Java Web开发中的一个重要接口,它继承自`ServletResponse`接口,并提供了与HTTP协议相关的多种方法。这些方法主要用于设置HTTP响应的状态码、响应头和响应体等内容。通过掌握`...
10. getHeaderNames():返回请求包含的所有头名称的一个Enumeration(遍历器)。 HttpServletResponse: 1. getWriter():从Servlet中可以通过getWriter方法取得PrintWriter对象,来输出字符数据。 2. ...
特别需要注意的是,一个响应只能选择其中一个流进行操作,不能同时使用,否则会抛出`IllegalStateException`异常。 `HttpServletRequest`接口则用于获取客户端的请求信息,包括请求参数。在`ServletRequest`的父类...
每次客户端向Web服务器发起请求时,服务器都会为每个请求创建一个HttpServletRequest对象和一个HttpServletResponse对象,以便开发者能够通过这些对象获取请求信息并构造响应。 ### 一、实现类与实例化 ...
在`ResponseWrapper`中,我们还需要实现`WapperedOutputStream`类,这是一个内部类,它包装了`CharArrayWriter`,使得所有通过ServletOutputStream写出的数据都能被记录。这样,当过滤器完成对响应的修改后,可以...
`getWriter()`返回一个`PrintWriter`对象,用于输出字符数据到响应流中。`sendRedirect(String location)`方法用于将客户端重定向到新的URL。还有`addCookie(Cookie cookie)`用于添加响应中的Cookie,以及`setStatus...
远程获取数据是指在一个程序中通过网络请求的方式从其他服务器或网站上获取信息的过程。这种方式在现代软件开发中非常常见,尤其是在需要从多个源收集数据的应用场景下。 ### 2. Java实现远程数据获取 #### 2.1 ...
在本例中,我们需要创建一个包含输入字段的HTML表单,让用户输入姓名和爱好。这可以通过`<form>`标签实现,其中`action`属性指定提交表单时应调用的Servlet,`method`属性通常设置为"POST",表示数据将以隐藏方式...
HttpServletResponse对象提供了返回数据给用户的两个方法:一种是使用getWriter方法获取PrintWriter对象,用于返回文本数据;另一种方法是使用getOutputStream方法获取ServletOutputStream对象,用于返回二进制数据...
在Java Web开发中,`HttpServletResponse` 是一个关键接口,用于服务器向客户端发送响应。它提供了多种方法来设置响应头、编码输出、重定向和触发下载等操作。下面我们将详细探讨`HttpServletResponse`的一些常用...
`reqresp_demo3.zip`这个文件很可能是包含一个或多个示例代码,用于演示如何处理请求对象`HttpServletRequest`和响应对象`HttpServletResponse`,特别是针对中文乱码问题的处理。在本篇文章中,我们将深入探讨这两个...
- 使用`StreamUtil.readBytes()`方法将请求体中的数据读入一个`byte[]`数组。 - 创建一个新的`ByteArrayInputStream`实例并将其包装为`ServletInputStream`。 - 在`getInputStream()`方法中返回该`Servlet...
在第8行至第13行的doGet()方法中,我们使用了HttpServletResponse对象的getWriter()方法获取PrintWriter,然后通过PrintWriter输出HTML内容,向客户端展示"Welcome To The First Servlet!"的欢迎信息。最后,调用...
在Java开发中,由于不同的操作系统、数据库以及网络传输协议对中文字符的支持程度不一,因此中文处理成为了开发者经常面临的一个难题。具体问题包括但不限于:数据库连接时的字符集冲突、Web应用中客户端与服务器端...
`HttpServletResponseWrapper` 是Servlet API中提供的一个抽象类,它允许开发者创建自定义的响应对象,以覆盖或扩展`HttpServletResponse`的行为。这个抽象类提供了一个包装器模式,使得我们可以对响应对象的默认...
响应数据可以通过ServletResponse的getOutputStream()获取ServletOutputStream来发送二进制数据,或通过getWriter()获取PrintWriter对象来发送字符数据。设置MIME正文的字符编码和内容类型是通过setCharacter...
接下来,实验者使用`HttpServletResponse`的`getWriter()`方法创建一个`PrintWriter`对象`out`,通过`out.print()`方法将接收到的用户信息以HTML格式输出到网页上。例如,`out.print(name+" ")`会在网页上显示...
- `HttpSession request.getSession(true)` 创建或获取一个会话,以便在用户的不同请求之间保持状态。`true` 参数表示如果当前请求没有会话,则创建一个新的。 5. **getAttribute() 和 setAttribute()**: - `...