Response对象

response对象主要是向客户端浏览器发送二进制数据,如输出Cookie、设置HTTP文件头信息等方面内容

response主要功能和方法

getWrite()   获得PrintWrite类的对象实例,实现向浏览器输出信息

addCookie() 在客户端计算机磁盘上创建出Cookie对象实例,在Cookie对象实例可以保存客户端信息特征,然后采用request对象的getCookies()方法获取客户机所有Cookie对象

addHeader() 添加HTTP头文件信息,将信息传送到客户浏览器中

containsHeader() 判断指定名字的文件头是否存在,返回布尔型true / false

setHeader() 设置指定名字HTTP头文件的值,若该值存在则覆盖

sendRedirect() 重定向到由参数targetURL所指示的目标JSP页面或Servlet程序,不能向客户端输出信息

setContentType() 在相应中可以设置内容的文档数据类型和格式

setBufferSize() 设置Web容器的缓冲区大小,配合getBufferSize()方法返回该缓冲器信息

利用response对象实现向客户机种写入Cookie信息

Cookie或称Cookies,是指Web应用系统为了辨别访问者身份而存储在客户机中的一个文本文件,其中包含特定数据,比如登陆邮箱:

可以把用户名和密码放在客户机Cookie中,下次访问不需要再输入用户名密码

读取Cookie文件信息,使用Cookie类中的getName()和getValue()返回客户端的某一个特定Cookie对象名所对应的值。而利用response对象addCookie(cookie data )方法可以写入Cookie对象中所包装的数据。

实例:在系统首页中添加读写Cookie信息

在index jsp页面中添加如下代码

String basePath= request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%>

My JSP add Cookie information

String nowAccessTime=null;

Cookie mycookie=null;

Cookie[] cookies=null;

Date now=null;%>

now=newDate();if(cookies==null)

{

lastAccessTime=(now.getYear()+1900+"Year"+now.getMonth()+"Month"+now.getDay()+"Day"+now.getHours()+"Hour"+now.getMinutes()+"Minute"+now.getSeconds()+"Second");

mycookie=new Cookie("lastAccessTime",lastAccessTime);

mycookie.setMaxAge(30*24*60*60); //30 days 24hours 60mins 60 seconds

response.addCookie(mycookie);

}else

for(int index=0;index

{if(cookies[index].getName().equals("lastAccessTime"))

{

lastAccessTime=cookies[index].getValue();

nowAccessTime=(now.getYear()+1900+"Year "+now.getMonth()+" Month "+now.getDay()+" Day "+now.getHours()+" Hour "+now.getMinutes()+" Minute "+now.getSeconds()+" Second");

mycookie=new Cookie("lastAccessTime",nowAccessTime);

mycookie.setMaxAge(30*24*60*60); //30 days 24hours 60mins 60 seconds

response.addCookie(mycookie);break;

}

}

out.print("the last time your visit this system is "+lastAccessTime);%>

首先用request的getCookie获取一下cookie,如果没有cookie信息,使用response的addCookie增加cookie信息

区分重定向与跳转方式的区别

请求转发过程中客户端浏览器只向server端产生一次请求,而重定向是两次;

请求转发时在浏览器的URL地址栏中的信息不会发生改变,仍然是原来的URL而重定向将会转向目标URL

使用HTTP请求转发:

使用转发由于只有一次请求,所以在一个页面的request.setAttribute 能够在跳转后的页面使用request.getAttribute获取其属性值

使用4个jsp页面和一个类文件

新建 login.jsp 设置登陆框,用户名密码。。。。。

String basePath= request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%>

This is my first JSP pageusername:

password:

userType:

user

master

新建response.jsp页面当用户名是:young并且密码是1234跳转到index.jsp否则跳转到error.jsp,引入userInfo类,使用其verifyID方法校验用户名密码

userinfo类代码:

packagemypackage;public classuserInfo {/***@paramargs

* two parameters add get/set methods*/String userName=null;

String passWord=null;publicString getUserName() {returnuserName;

}public voidsetUserName(String userName) {this.userName =userName;

}publicString getPassWord() {returnpassWord;

}public voidsetPassWord(String passWord) {this.passWord =passWord;

}public booleanverifyID( )

{if(userName.equals("young") && passWord.equals("1234"))

{

System.out.print("login successful\n");return true;

}else{

System.out.print("login failure\n");return false;

}

}

}

代码如下:

String basePath= request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%>

My JSP 'response.jsp' starting page

RequestDispatcher rd=null;%>

user.setPassWord(request.getParameter("password"));if(user.verifyID())

{

request.setAttribute("userNameString",user.getUserName());

targetPage="index.jsp";

System.out.print(user.getUserName());

}else{

request.setAttribute("errorMSG","sorry,Login FAILED.\n");

targetPage="error.jsp";

}

rd=request.getRequestDispatcher(targetPage);

rd.forward(request,response);%>

新建error.jsp 这个页面会获取response.jsp传递过来的errorMSG

String basePath= request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%>

My JSP 'error.jsp' starting page

新建index.jsp

String basePath= request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%>

My JSP add Cookie information

String nowAccessTime=null;

Cookie mycookie=null;

Cookie[] cookies=null;

Date now=null;%>

now=newDate();if(cookies==null)

{

lastAccessTime=(now.getYear()+1900+"Year"+now.getMonth()+"Month"+now.getDay()+"Day"+now.getHours()+"Hour"+now.getMinutes()+"Minute"+now.getSeconds()+"Second");

mycookie=new Cookie("lastAccessTime",lastAccessTime);

mycookie.setMaxAge(30*24*60*60); //30 days 24hours 60mins 60 seconds

response.addCookie(mycookie);

}else

for(int index=0;index

{if(cookies[index].getName().equals("lastAccessTime"))

{

lastAccessTime=cookies[index].getValue();

nowAccessTime=(now.getYear()+1900+"Year "+now.getMonth()+" Month "+now.getDay()+" Day "+now.getHours()+" Hour "+now.getMinutes()+" Minute "+now.getSeconds()+" Second");

mycookie=new Cookie("lastAccessTime",nowAccessTime);

mycookie.setMaxAge(30*24*60*60); //30 days 24hours 60mins 60 seconds

response.addCookie(mycookie);break;

}

}

out.print("the last time your visit this system is "+lastAccessTime);%>

登陆成功会显示: 可以看出,跳转后的页面URL仍然是跳转前的URL并未发生任何变化,由于只进行一次请求,所以request.setAttribute 和request.getAttribute能够正常工作

登陆失败:

而是用response.sendRedirect()会出现2次请求不能再是用request的对象包装和传递参数,可以使用session.setAttribute("NAME","VALUE")使用EL表达式语句${sesstionScope.userNameString}

从session会话对象中获取传递的参数,同时重定向后的URL为重定向页面的URL。

java三级考试_java web 学习 --第五天(Java三级考试)相关推荐

  1. java 三级考试_java web 学习 --第三天(Java三级考试)

    Jsp中的动作标签 实现动态包含,在一个文件里包含另一个文件 动作标签的包含结果是"结果的合并"而不是内容的合并 定义和实例化JavaBean组件类的对象实例 该动作标签创建Jav ...

  2. java三级报名_java web 学习 --第四天(Java三级考试)

    jsp内置对象 out out 属性类型:JspWriter 作用域:page 作用:一个输出缓存流,向客户端浏览器输出信息 JspWriter类中常用的方法和功能 flush() 输出缓存区的数据 ...

  3. java 线程等待队列_Java多线程学习(五)——等待通知机制

    等待通知机制的实现 方法wait()的作用是使当前线程进行等待,wait()方法是Object类的方法,该方法用来将当前线程放到"预执行队列",并在wait()所在的代码处停止执行 ...

  4. Web学习(五)中期项目-简易拳皇

    Web学习(五)中期项目-简易拳皇 项目参考地址:https://git.acwing.com/yxc/kof 游戏的基本原理:主要依靠requestAnimationFrame实现,该函数会在下次浏 ...

  5. 课工场java新手基础教程_Java新手学习路线,学Java不走弯路

    Java新手学习路线,学Java不走弯路 很多人都会有一个疑问,就是学习Java能看懂,但是不会写,所以学习Java一定要掌握一个有效率的学习方法,一个适合自己的学习方法,作为一个新人,千万不要自己瞎 ...

  6. java 方法泛型_Java基础学习,什么是泛型概念,使用泛型有哪些好处?

    一般的类和方法,只能使用具体的类型,要么是基础数据类型,要么是自定义类. 如果要编写可以应用与多种类型的代码,这种刻板的限制对代码的束缚就会很大. 泛型的字面概念: 适合用于许多类型. 在面向对象中, ...

  7. java 指针_java多线程学习二十二:::java中的指针

    在上面那个图,我们看到一个特殊的变量unsafe,它的包名是 sun.misc.Unsafe;从名字看,这个类应该是封装一些不安全的操作,为什么不安全?对c语言理解的朋友就知道了,指针是不安全的,在j ...

  8. java深度克隆_Java深入学习26:Java深度克隆

    Java深入学习26:Java深度克隆 深克隆和浅克隆区别 浅克隆: 只copy对象引用,不copy对象本身.即对象地址不变,仍然只存在一个对象. 深克隆: 不仅拷贝对象本身,而且拷贝对象包含的引用指 ...

  9. java开发简介_Java Web开发介绍

    转自:http://www.cnblogs.com/pythontesting/p/4963021.html 简介 Java很好地支持web开发,在桌面上Eclipse RCP谈不上成功,JAVA是主 ...

最新文章

  1. 使用DOSBox编译汇编代码
  2. java.lang.String_自己写的java.lang.String可以让jvm加载到吗?
  3. Fragment间的通信
  4. 知乎专栏应用客户端源码项目
  5. NYOJ 674 善良的国王(树形背包DP)
  6. Java IO API记录
  7. c语言某年某月的天数switch,在C语言中 使用switch语句编写“显示某年某月的天数”程序:...
  8. DataGrid与GridView中删除前提示框与编辑框长度设置的实现(ASP.NET)
  9. ospf多区域实例配置
  10. Soft Bellman Equation and Soft Value Iteration证明
  11. 从多个文档在Word 2010中创建主文档
  12. 工作缺点和不足及措施_【工作中存在的问题和不足及改进措施】_工作中的不足与改进_工作中不足及改进措施...
  13. 加拿大卡尔顿大学两个月进阶java—2
  14. java实现网页评分_Java web分级测试评分C级感受
  15. android手机设置查看电池耗电,安卓查看电池损耗代码【搞定指南】
  16. MySQL的集合运算
  17. 在EXCEL中通过VBA实现批量读取文件夹内的文件名称
  18. jacob调用中控考勤机事件监听实现
  19. netflix_DeepCasting可能是Netflix的未来
  20. Android3d结构光,安卓阵营独一份!OPPO完成3D结构光技术研发,某果开始慌了

热门文章

  1. 矩阵乘以其矩阵转置求导-数学
  2. Adam那么棒,为什么还对SGD念念不忘 (2)—— Adam的两宗罪
  3. LeetCode简单题之整理字符串
  4. 通俗易懂的Go协程的引入及GMP模型简介
  5. php – Laravel 7 Session Lifetime
  6. 【CV】Numpy|Python中矩阵和数组乘法及向量相关问题
  7. [FaceBook]测试、发布和分享小游戏
  8. react控制 input 框回车之后内容清空
  9. Oracle报错createPool,Jmeter中连接Oracle报错Cannot create PoolableConnectionFactory
  10. AttributeError: ‘NoneType‘ object has no attribute ‘span‘