JSP数据传递与保存

HTML页面转成JSP页面

HTML页面转成JSP页面一般有两种方式

方式1:直接修改HTML页面

直接在HTML页面最顶端添加page指令

修改文件后缀名为jsp

方式2:新建jsp文件,拷贝HTML代码(推荐使用)

在工程中新建文件名为***.jsp文件。

将HTML页面的内容拷贝到***.jsp文件中。千万别傻乎乎的连jsp文件头的内容也覆盖了,只覆盖jsp文件中html标签的内容就OK。

JSP内置对象

JSP内置对象是JSP容器为每个页面提供的Java对象,开发者可以直接使用它们而不用显式声明。JSP所支持的九大内置对象:

对象

描述

request

每当客户端请求JSP页面时,JSP引擎会制造一个新的request对象来代表这个请求。

response

当服务器创建request对象时会同时创建用于响应这个客户端的response对象

out

out对象用来在response对象中写入内容。

session

session对象用来跟踪在各个客户端请求间的会话。

application

该对象代表web应用本身,整个web应用共享一个application对象。

config

这个对象允许开发者访问Servlet或者JSP引擎的初始化参数。

pageContext

页面上下文对象,这个对象存储了内置对象的引用。

page

这个对象就是页面实例的引用。它可以被看做是整个JSP页面的代表

exception

这个对象包装了从先前页面中抛出的异常信息。

JSP内置对象request

主要用于处理客户端请求。

request对象中保存了用户的请求数据和浏览器的相关信息,通过调用相关方法就可以实现请求数据的读取。

request对象的常用方法

方法名称

说明

String getParameter(String name)

根据表单组件名称获取提交数据

String[ ] getParameterValues(String name)

获取表单组件对应多个值时的请求数据

void setCharacterEncoding(String charset)

指定每个请求的编码

RequestDispatcher getRequestDispatcher(String path)

返回一个RequestDispatcher对象,该对象的forward( )方法用于转发请求

常用的发送表单数据的方法:post和get

get与post区别

比较项

get

post

参数出现在URL中

长度限制

安全性

URL可传播

JSP内置对象response

方法名称

说明

void addCookie(Cookie cookie)

给客户端添加一个Cookie对象,以保存客户端的信息

PrintWriter getWriter()

返回一个输出字符流

void sendRedirect()

将请求重新定位到一个不同的URL,即页面重定向

void setCharacterEncoding(String encoding)

设置字符编码类型为encoding

请求的转发

转发的作用

在服务器端,将请求发送给服务器上的其他资源,以共同完成一次请求的处理

转发的实现

RequestDispatcher对象的forward()方法

在多个页面交互过程中请求中的数据可以共享

转发

转发是在服务器端发挥作用,将同一请求在服务器资源之间进行传递

客户端浏览器的地址栏不会显示转向后的地址

重定向

重定向是在客户端发挥作用,通过发送一个新的请求实现页面转向

在地址栏中可以显示转向后的地址

思考:

如果普通用户直接输入后台地址,我们的程序没有进行的权限拦截,后台将暴露给普通用户,这是不安全的,怎么办?

解决方案:使用会话保存登录用户的状态

会话

会话就是在一段时间内,一个客户端与Web服务器的一连串相关的交互过程。

会话可以在多次请求中保存和使用数据。

在JSP中使用session对象实现会话的存取。

session对象

session机制是一种服务器端的机制,在服务器端保存信息。

用于存储与用户相关的会话信息

方法名称

说明

void setAttribute(String key,Object value)

以key/value的形式保存对象值

Object getAttribute(String key)

通过key获取对象值

void invalidate()

设置session对象失效

String getId()

获取sessionid

void setMaxInactiveInterval(int interval)

设定session的非活动时间

int getMaxInactiveInterval()

获取session的有效非活动时间(以秒为单位)

void removeAttribute(String key)

从session中删除指定名称(key)所对应的对象

session与窗口的关系

每个session对象都与一个浏览器窗口对应 ,重新开启一个浏览器窗口,可以重新创建一个session对象(不同版本浏览器可能有所差别)

通过超链接打开的新窗口,新窗口的session与其父窗口的session相同

每个session都有一个唯一的sessionid

public String getId();

使用session对象存取数据

使用session对象存取数据的步骤

1:使用属性保存数据

2:从属性中读取数据,必要时需要进行数据类型转换

语法:public void setAttribute(String name, Object value);
      用法:session.setAttribute("userName", "张三丰"); 
     public Object getAttribute(String name);
     用法:String userName=(String)session.getAttribute("userName");

会话的清除和过期

程序主动清除session数据有两种实现方式

1:设置会话失效:session.invalidate();

2:只移除会话的一个属性:session. removeAttribute(String name);

服务器主动清除长时间没有再次发出请求的session,两种实现方式:

1:通过setMaxInactiveInterval(int interval )方法,单位是秒

<%
session.setAttribute("loginUser",user); 
session.setMaxInactiveInterval(600); 
response.sendRedirect("admin.jsp"); 
%>

2:修改tomcat服务器的web.xml,单位是分钟

<session-config>
       <session-timeout>30</session-timeout>
</session-config>

小结

用浏览器访问服务器——产生会话

通过浏览器在网站登录——在会话中保存数据

登录成功后用个人身份进行访问——会话有效期内

关闭了浏览器——结束会话

服务器主动结束会话——会话到期

使会话失效、删除属性——及时释放会话资源

程序主动结束会话、会话到期——会话中的数据丢失

JSP页面中的包含操作

在JSP中实现页面包含的方式有两种:

1:使用<%@include%>指令实现静态包含

<%@include   file=“URL”%>

2:使用<jsp:include>标签实现动态包含

<jsp:include  page=“URL”>

动态包含与静态包含的区别

静态包含

动态包含

<%@include%>

<jsp:include>

先将页面包含,后执行页面代码,即将一个页面的代码复制到另一个页面中。

先执行页面代码,后将页面包含,即将一个页面的运行结果包含到另一个页面中。

被包含的页面内容发生变化时,包含页面将会被重新编译。

被包含页面内容发生变化时,包含页面不会重新编译。

application对象

application对象代表web应用本身,整个web应用共享一个application对象,该对象主要用于在多个JSP页面或者Servlet之间共享变量。

application对象开始于服务器的启动,终止于服务器的关闭。

application对象实现了用户间的数据共享,可以存放全局变量。

application对象的常用方法:

方法名称

说 明

void setAttribute(String key,Object value)

以key/value的形式保存对象值

Object getAttribute(String key)

通过key获取对象值

String getRealPath(String path)

返回相对路径的真实路径

JSP常用内置对象

内置对象

说明

out

用于向客户端输出数据

request

主要用于处理客户端请求的数据信息

response

用于响应客户端请求并向客户端输出信息

session

用于记录会话状态的相关信息

application

类似于系统的全局变量,用于实现Web应用中的资源共享

对象的作用域

page作用域对应的作用域访问对象为pageContext 对象

request作用域对应的作用域访问对象为request 对象

session作用域对应的作用域访问对象为session 对象

application作用域对应的作用域访问对象为application 对象

page作用域

page作用域指本JSP页面的范围

pageContext.setAttribute(键,值)

pageContext.getAttribute(键)

request作用域

request作用域内的对象则是与客户端的请求绑定在一起

session作用域

session作用域:一次会话

application作用域

application作用域:面对整个Web应用程序

名称

说 明

page作用域

在一个页面范围内有效,通过pageContext对象访问

request作用域

在一个请求范围内有效

session作用域

在一次会话范围内容有效

application作用域

在一个应用服务器范围内有效

Cookie简介

Cookie是Web服务器保存在客户端的一系列文本信息

Cookie的作用

对特定对象的追踪(Cookie能告诉在线广告商广告被点击的次数,从而可以更精确的投放广告)

实现各种个性化服务(Cookie能帮助站点统计用户个人资料以实现各种各样的个性化服务)

简化登录(Cookie有效期限未到时,Cookie能使用户在不键入密码和用户名的情况下进入曾经浏览过的一些站点)

安全性能

容易泄露信息

在JSP中使用

语法:

创建Cookie对象
Cookie newCookie = new Cookie(String key, String value);
由服务器端向客户端写入Cookie对象
response.addCookie(newCookie);
读取客户端的Cookie对象
Cookie[] cookies = request.getCookies();

Cookie类的常用方法

方法名称

说 明

void setMaxAge(int expiry)

设置cookie的有效期,以秒为单位

void setValue(String value)

在cookie创建后,对cookie进行赋值

String getName()

获取cookie的名称

String getValue()

获取cookie的值

int getMaxAge()

获取cookie的有效时间,以秒为单位

小结

session

cookie

服务器端保存用户信息

客户端保存用户信息

session中保存的是Object类型

cookie保存的是 String类型

随会话的结束而将其存储的数据销毁

cookie可以长期保存在客户端

保存重要的信息

保存不重要的用户信息

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值