菜鸟学Android笔记(二十六):Response数据输出
来源:互联网 发布:开淘宝网店的条件 编辑:程序博客网 时间:2024/05/16 01:04
一、Response的概念
response主要是向客户端输出内容,也就是你输出什么,客户端就显示什么。setCharactorEncoding是设置字符集,如出现汉字,以UTF8进行编码。SetContentType 设置页面的ContentType为text/html; 字符集为utf-8
注意:什么是servlet容器
servlet没有main()方法。他们受控于另一个Java应用,这个Java应用成为容器。servlet容器指的是部署servlet的容器,比如tomcat。需要运行在servlet容器中
二、response------响应的意思,就是将服务器对浏览器的响应封装成这个对象。
|-----HttpServletResponse是实现response的通用类
三、入门案例:如何向客户端(浏览器)输出一段文本?
第一步:建立一个OutServlet.java在classes文件中
package com.java;import java.io.IOException;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class OutServlet extends HttpServlet{public void doGet(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {resp.getOutputStream().write("sdfjksdlfjsjf".getBytes());}public void doPost(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {doGet(req,resp);}}
第二步:在web.xml中部署访问路径
<?xml version="1.0" encoding="UTF-8"?><web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> <servlet> <servlet-name>OutServlet</servlet-name> <servlet-class>com.java.OutServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>OutServlet</servlet-name> <url-pattern>/java/OutServlet</url-pattern> </servlet-mapping> </web-app>第三步:在浏览器中输入“http://localhost/Day04/java/OutServlet“回车浏览器便会输出
如果输出的是中文会不会乱码?
package com.java;import java.io.IOException;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class OutServlet extends HttpServlet{public void doGet(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {resp.getOutputStream().write("中文".getBytes());}public void doPost(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {doGet(req,resp);}}在浏览器中输入回车,可以看出,并没有乱码,原因是浏览器用的是GBK,服务器设置的是浏览器默认的编码
如果设置服务器向浏览器输出的数据是UTF-8编码会怎么样?(这个时候就显示response在浏览器编码设置的作用了,如何设置呢?看下面OutServlet.java的编码)
package com.java;import java.io.IOException;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class OutServlet extends HttpServlet{public void doGet(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {resp.getOutputStream().write("中国".getBytes("utf-8"));}public void doPost(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {doGet(req,resp);}}
当然不出所料,浏览器显示的是乱码
如何解决这个问题?只要我们在服务器向浏览器输出数据时,提醒浏览器用UTF-8来接收就可以了
package com.java;import java.io.IOException;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class OutServlet extends HttpServlet{public void doGet(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {resp.getOutputStream().write("中国".getBytes("utf-8"));resp.setHeader("Content-Type", "text/html;charset=utf-8");}public void doPost(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {doGet(req,resp);}}
我们可以直接设置服务器解析的编码为UTF-8,而不用设置成这样:
"中国".getBytes("utf-8")代码如下:
package com.java;import java.io.IOException;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class OutServlet extends HttpServlet{public void doGet(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {resp.getOutputStream().write("中国".getBytes());//设置将发送到客户端的响应的字符编码resp.setCharacterEncoding("utf-8");}public void doPost(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {doGet(req,resp);}}
但此时为什么没有乱码?(原因可以根据服务器是什么编码而默认成什么编码)
但我们为了规范,任然要设置浏览器接收的编码:
package com.java;import java.io.IOException;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class OutServlet extends HttpServlet{public void doGet(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {//给浏览器设置utf-8,可以省去resp.setHeader("Content-Type", "text/html;charset=utf-8");//可以简写成为这样://resp.setContentType("text/html;charset=utf-8");//给服务器设置UTF-8resp.setCharacterEncoding("utf-8");resp.getWriter().write("中国");//服务器默认的是iosXX,即非UTF-8}public void doPost(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {doGet(req,resp);}}
0 0
- 菜鸟学Android笔记(二十六):Response数据输出
- 菜鸟学Android笔记(二十七):Response下载
- 菜鸟学Android笔记(二十八):response实现定时刷新
- 菜鸟学Android笔记(十六):零散的知识点
- 菜鸟学Android笔记(三十一):Response实现验证码
- 菜鸟学Android笔记(二十三):ServletConfig
- 菜鸟学Android笔记(二十四):ServletContext1
- 菜鸟学Android笔记(二十五):ServletContext2
- 菜鸟学Android笔记(二十二):Servlet的一些细节
- 菜鸟学Andoid笔记(三十):Response实现重定向和注意事项
- 菜鸟学jsp(二)
- 菜鸟学JDBC(二)
- Android学习路线(二十六)Android数据存储
- 菜鸟学Android(二十):Servlet的调用过程
- 菜鸟学Java(十六)——Jboss简介
- 菜鸟学android(二): XML概述
- 菜鸟学Android笔记(十):Schema语法
- 菜鸟学Android笔记(十一):web开发概述
- APP Launchimage软件启动图片
- Codeforces Round #306 (Div. 2) (ABCE题解)
- UVA 10635 Prince and Princess 最长公共子序列(nlongn)
- 黑马程序员_多线程间通信
- EXCEL内的字符比较公式
- 菜鸟学Android笔记(二十六):Response数据输出
- ViewPager实例
- 循环顺序队列2——使用标示位判断队满或空
- OpenLayers学习笔记5——使用jQuery UI实现查询并标注(UI篇)
- qt大全(连接)
- EXCEL文件行交替背景色设置
- Java NIO使用及原理分析 (四)
- 十项SEO操作,让你的新站更快获得排名
- LeetCode | Palindrome Number