Jsp第三课 Servlet常用对象
Posted 笔触狂放
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Jsp第三课 Servlet常用对象相关的知识,希望对你有一定的参考价值。
在Servlet技术的学习过程中,需要用到很多的常用对象,而且其用法也非常重要,这里介绍第二个常用对象,HttpServletResponse
概述
1.response对象使用OutputStream发送数据给浏览器
新建一个项目,在src文件夹中新建com.servlet包,然后创建一个Servlet,命名为Servlet1。在doGet方法中定义一个字符串,然后通过response对象获得OutputStream输出流,将字符串的数据写出给浏览器。这里OutputStream写出数据需要将数据转换成字节数组才能完成。代码如下:
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//因为浏览器发送请求的时候,默认是get请求,所有Servlet对应于doget方法接收浏览器的请求
//假设当浏览器给该Servlet发送请求的时候
String info="hello china";
//从response对象中获得输出流
OutputStream os= response.getOutputStream();
//输入流:将数据从外部读取进来
//输出流:将数据从自己写出去
os.write(info.getBytes());
}
访问运行效果如下:
一次请求访问的流程图如下:
如果需要发送中文数据给浏览器,需要设置编码格式。
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//设置servlet要发给浏览器的数据要支持html文本格式
//因为浏览器只能识别html代码
response.setContentType("text/html");
//设置servlet要发给浏览器的数据的编码格式一定要是UTF-8,因为UTF-8是国际编码格式
response.setCharacterEncoding("UTF-8");
//因为浏览器发送请求的时候,默认是get请求,所有Servlet对应于doget方法接收浏览器的请求
//假设当浏览器给该Servlet发送请求的时候
//String info="hello china";
String info1="你好,<span style='color:red;'>中国</span>";
//从response对象中获得输出流
OutputStream os= response.getOutputStream();
//输入流:将数据从外部读取进来
//输出流:将数据从自己写出去
os.write(info1.getBytes());
}
运行效果如下:
2.response对象使用PrintWrite发送数据给浏览器
创建Servlet2类,在doGet方法中定义一个字符串,使用response对象获得PrintWrite对象。
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String info="abc";
//从response中获得写的权限
PrintWriter pw=response.getWriter();
pw.print(info1);
}
这里就不展示运行效果,初学者可自行运行,观察运行效果。
PrintWrite对象可输出的数据类型多样化
如果使用PrintWrite发送中文数据给浏览器,与OutputStream执行代码类似,需要提前设置编码格式。
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html");
response.setCharacterEncoding("UTF-8");
String info1="软件1班";
//从response中获得写的权限
PrintWriter pw=response.getWriter();
pw.print(info1);
}
3.使用OutputStream对象完成文件下载功能
创建Servlet3,并准备好一张图片存放至项目的WebContent文件夹下或者WebApp文件夹下。
代码如下:
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//要求servlet将图片以文件下载的方式发送给浏览器
//设置响应头
response.setHeader("content-disposition", "attachment;filename=flower.jpg");
//1.servlet先要从磁盘中找到这张图片的绝对路径
//先获得ServletContext对象
ServletContext sc=getServletContext();
String path=sc.getRealPath("/images/1.jpg");
System.out.println(path);
//2.将图片读取至servlet,输入流 字节流
InputStream is=new FileInputStream(path);
byte[] bytes=new byte[1024];
int count=-1;
OutputStream os=response.getOutputStream();
while ((count=is.read(bytes))!=-1) {
//读取了一部分图片的字节就把这部分发送出去
os.write(bytes, 0, count);
}
}
运行效果如下:
打开已下载的图片,可观察到就是我们下载的图片
4.使用response对象完成生成6位数随机验证码,并定时刷新
创建Servlet4,使用Math.random()产生【0-1】之间的随机数,因我们需要生成6位数的随机数,那么也就是需要【100000-1000000】之间产生随机数。其代码如下:
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html");
response.setCharacterEncoding("UTF-8");
//设置浏览器每隔3秒钟自动刷新浏览器页面
response.setHeader("refresh", "3");
//生成随机6位数的验证码 100000--1000000
int i=(int)(Math.random()*900000+100000);//0--1:1以下的小数 0.123456789900
//0-1 *900000=0--900000+100000=100000--1000000
PrintWriter pw=response.getWriter();
pw.print("您支付宝收到1000万到账,需要的验证码为:<span style='color:red'>"
+i+"</span>,打死也不要告诉别人!!!!");
}
运行效果如下:
5.使用response对象完成Servlet之间的跳转
创建Servlet5,我们学习到目前为止,浏览器都是访问单独Servlet,并没有做过多个Servlet之间的跳转,那么这里开始学习第一种Servlet打开另一个Servlet的方法,这里称为重定向。
访问流程图如下:
代码如下:
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//能不能使用servlet跳转到另一个servlet
//改变浏览器的访问地址,称为重定向:重新制定访问的方向
//当浏览器访问Servlet5的时候,可以使用response回复一个消息给浏览器,要求浏览器别再访问我,访问servlet1
response.sendRedirect("Servlet1");
//重定向的跳转方式:
//servlet指挥浏览器改变访问地址去访问其他的servlet
//地址会改变
//跳转servlet的方式,借用浏览器改变地址的方式切换访问servlet
}
这里不展示运行效果,初学者可自行运行,观察浏览器地址的变化,以及页面内容的展示情况,并总结重定向方式实现Servlet的跳转,并非是直接跳转,而是借助于浏览器改变请求地址实现的间接性的页面跳转。
以上是关于Jsp第三课 Servlet常用对象的主要内容,如果未能解决你的问题,请参考以下文章