JSP数据交互(一)
- 预习检查
- request和response对象的作用和常用方法是什么?
- 针对GET和POST请求如何处理中文乱码?
- 转发与重定向的区别和应用场合是什么?
- session对象的作用和常用方法是什么?
- 本章任务
- 实现在JSP页面中获取注册信息
- 实现企业邮箱登录验证功能
- 实现新闻发布系统页面访问控制
- 本章目标
- 熟练应用request对象获取用户请求
- 熟练应用response对象处理响应
- 熟练应用转发与重定向控制页面跳转
- 掌握session的原理及应用
- 掌握include指令的应用
- 什么是表单?
收集用户的数据,并进行提交.
(数据提交了之后,到JSP中了)
- 什么是JSP内置对象
是 Web 容器创建的一组对象
常见的out内置对象
常用的JSP内置对象:
- JSP内置对象request
request对象主要用于处理客户端请求
- JSP内置对象request
request对象常用方法:
- JSP内置对象request
如何实现学员的注册功能?
注册信息包括:用户名、密码、信息来源
页面提交后,显示学员输入的数据
- JSP内置对象request
信息读取显示页面
提示:
为什么我们输入的中文都是乱码显示?
- JSP内置对象request ------------乱码
- 在页面设置支持中文字符的字符集,如:UTF-8
- 获取数据时解决中文乱码问题
示例: 下面的表单get方法------只是治标
byte[] name=name.getBytes(“ISO-8859-1”);
name=new String (name,”utf-8”);
(和下面的这种方法一样)
下面这个治本的方法,需要---------------先暂停服务!
POST解决方法:
- 为什么要用转发和重定向?
解决乱码了之后,如何给用户提示成功/失败呢?
需要转发或者重定向!
- JSP内置对象response -1
- response对象用于响应客户请求并向客户端输出信息
-
- 页面重定向
- void sendRedirect (String location)
- 客户端将重新发送请求到指定的URL
- 页面重定向
如果中文乱码,则给他编码utf-8格式
也可以给他解码,用URLDncoder就好
- JSP内置对象response -2
实现登录验证,并在验证成功后跳转至欢迎页面
示例:
- JSP内置对象response -3
- 页面实现跳转了,请求的信息是否也一起转移呢?
-
- 如何才能实现页面跳转后,请求信息不丢失呢?
使用转发取代重定向实现页面跳转
- 请求的转发
- 转发的作用
- 在服务器端,将请求发送给服务器上的其他资源,以共同完成一次请求的处理
- 转发的实现
- RequestDispatcher对象的forward()方法
- 转发的作用
在多个页面交互过程中请求中的数据可以共享
- 小结------转发和重定向的区别
request:
setAttribute() 作用域仅限于一次请求
request.setAttribute(“mess” , ”**” );
doUserCreate.jsp:
注册成功----->index.jsp 重定向,给他一个新的页面网址
注册失败----->userCreate.jsp 转发,返回给客户端
转发:服务器内部自动完成了跳转,服务器行为,无形中延长了request作用域
--->doUserCreate.jsp
--->doUserCreate.jsp--->userCreate.jsp
- page session application
page: this----当前对象
作用域仅限于当前页面
session setAttribute()作用域是一次会话
会话:
一个会话就是在一段时间内,这一个用户与Web服务器的一次对话的过程
会话可以在多次请求中保存和使用数据
session是一种机制,同一个机器/浏览器上,sessionId是固定的.
不同的浏览器,sessionId是不同的
服务器使用的记录客户端状态的机制----sessionId
每一个session有一个唯一的sessionId
session.getId();
session是单用户,多页面可共享的
session保存在服务器端的
application
- 什么是会话
一个会话就是在一段时间内,一个客户端与Web服务器的一连串相关的交互过程
- JSP内置对象session
session对象常用方法:
- session与窗口的关系
每个session对象都与一个浏览器窗口对应 ,重新开启一个浏览器窗口,可以重新创建一个session对象(不同版本浏览器可能有所差别)
通过超链接打开的新窗口,新窗口的session与其父窗口的session相同
- 使用session实现访问控制4-1
在新闻发布系统中,增加访问控制功能 :
提供用户登录功能
管理员有权对新闻实现增、删、改的操作
- 使用session实现访问控制4-2
在控制页面获取用户请求的登录信息进行验证
- 使用session实现访问控制4-3
在新闻发布系统页面增加登录验证:
- 使用session实现访问控制4-4
访问控制效果验证,步骤如下:
- 会话的清除和过期
- session对象的失效
语法:
手动设置失效:invalidate()
超时失效:
26. 1 通过setMaxInactiveInterval( )方法,单位是秒
26.2 通过设置项目的web.xml或Tomcat目录下的/conf/web.xml文件,设置时间单位是分钟
- 二次复习:
page session application
page: tihs----当前对象
作用域仅限于当前页面
request 作用域是一次请求
session setAttribute()作用域是一次会话
会话:
一个会话就是在一段时间内,一个用户与Web服务器的一次对话的过程
会话可以在多次请求中保存和使用数据
session是一种机制,同一个机器/浏览器上,session是固定的.
不同的浏览器,session是不同的
服务器使用的记录客户端状态的机制----sessionId
每一个session有一个唯一的sessionId
session.getId();
session是单用户,多页面可共享的
session保存在服务器端的
application
- cookie 跟踪用户的整个会话
给客户端发送一个通行证 ,每一个客户一个
cookie本质是文本信息
session保存在服务器端的
cookie通过在客户端记录信息
使用cookie自动填充用户名,自动保存密码---------有时候比较方便
cookie以文件方式保存数据
添加数据:
public void addCookie(Cookie cookie)
获取数据:
public Cookie[] getCookies()
设置有效期:
public void setMaxAge(int expiry)
expiry
>0,保存信息expiry秒
=0,删除当前信息
<0,不保存当前信息
- include指令2-1
除了首页面,其它页面中同样需要加入登录验证,有没有办法避免冗余代码的出现
可以将一些共性的内容写入一个单独的文件中,然后通过include指令引用该文件
- include指令2-2
创建登陆验证文件loginControl.jsp
在后台首页面中, 使用include指令, 引用登陆验证文件
- 总结