JavaScript实现数据传递和保存

2023-05-04 19:15:33 浏览数 (1)

jsp实现数据传递和保存

get与post区别

比较项

Get

post

参数出现在URL中

长度限制

安全性

URL可传播

request对象

作用

处理客户端请求

方法

方法名称

说明

String getParameter(String name)

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

String[ ] getParameterValues(String name)

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

void setCharacterEncoding(String charset)

指定每个请求的编码

RequestDispatcher getRequestDispatcher(String path)

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

示例
代码语言:javascript复制
<%
    //读取用户名和密码
    String name = request.getParameter("name");
    String pwd = request.getParameter("pwd");
    ……//HTML页面
    //读取复选框选择项
    String[] channels = request.getParameterValues("channel");
    if (channels != null) {
for (String channel : channels) {
out.println(channel);
}
    }
%>
​

内置对象

请求对象:request 输出对象:out 响应对象:response 应用程序对象:application 会话对象:session 页面上下文对象:pageContext 页面对象:page 配置对象:config 异常对象:exception

解决字符集编码问题

post方式
代码语言:javascript复制
<%   // 以POST方式提交数据时
        // 设置读取请求信息的字符编码为UTF-8
        request.setCharacterEncoding("UTF-8");  
        // 读取用户名和密码
        String name = request.getParameter("name");
        String pwd = request.getParameter("pwd");
%>
​
get方式1
代码语言:javascript复制
<%   // 以GET方式提交数据时
        // 读取用户名和密码
        String name = request.getParameter("name");
        // 对请求数据进行字符编码
        name = new String(name.getBytes("ISO-8859-1"), "UTF-8");
%>
​
get方式2
代码语言:javascript复制
在Tomcat目录结构confserver.xml中设置字符集
<Connector  port="8080"  protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"  URIEncoding="UTF-8"
/>

response对象

作用

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

方法

void sendRedirect(String location)//重定向,客户端将重新发送请求到指定的URL

重定向与转发

转发
作用

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

特点

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

举例
代码语言:javascript复制
request.getRequestDispatcher("welcome.jsp").forward(request, response);
重定向
作用

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

特点

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

举例
代码语言:javascript复制
response.sendRedirect("welcome.jsp");

session对象

定义

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

常用方法

方法名称

说明

String getId()

获取sessionid

void setMaxInactiveInterval(int interval)

设定session的非活动时间

int getMaxInactiveInterval()

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

void invalidate()

设置session对象失效

void setAttribute(String key, Object value)

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

Object getAttribute(String key)

通过key获取对象值

void removeAttribute(String key)

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

注意点

1.每个session对象都与一个浏览器窗口对应 ,重新开启一个浏览器窗口,可以重新创建一个session对象(不同版本浏览器可能有所差别) 2.通过超链接打开的新窗口,新窗口的session与其父窗口的session相同

举例
代码语言:javascript复制
<%
if ("admin".equals(name) && "admin".equals(pwd)) {  // 如果是已注册用户
session.setAttribute("login", name);
 // 设置session过期时间
session.setMaxInactiveInterval(10*60);
request.getRequestDispatcher("admin.jsp").forward(request, response);
} else {
response.sendRedirect("index.jsp");
} 
%>
​
<%
String login = (String) session.getAttribute("login");
if (login == null) {
    response.sendRedirect("index.jsp");
    return;
} %>
​
关于失效
手动设置失效:

session.invalidate()

超时失效

1.通过setMaxInactiveInterval( )方法,单位是秒

session.setMaxInactiveInterval(600);

代码语言:javascript复制
<%
session.setAttribute("login","admin"); 
session.setMaxInactiveInterval(600); 
response.sendRedirect("admin.jsp"); 
%>

2.通过设置项目的web.xml或Tomcat目录下的/conf/web.xml文件,单位是分钟

代码语言:javascript复制
<session-config>
    <session-timeout>10</session-timeout>
</session-config>

cookie

简介

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

作用

对特定对象的追踪 实现各种个性化服务 简化登录

安全性

容易泄露信息

创建对象
代码语言:javascript复制
Cookie newCookie = new Cookie(String key, String value);
写入
代码语言:javascript复制
response.addCookie(newCookie);
读取
代码语言:javascript复制
Cookie[] cookies = request.getCookies();
常用方法

方法名称

说 明

void setMaxAge(int expiry)

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

void setValue(String value)

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

String getName()

获取cookie的名称

String getValue()

获取cookie的值

int getMaxAge()

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

cookie与session的对比

session

cookie

在服务器端保存用户信息

在客户端保存用户信息

session中保存的是Object类型

cookie保存的是 String类型

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

cookie可以长期保存在客户端

保存重要的信息

保存不重要的用户信息

application对象

作用

实现用户之间的数据共享

常用方法

方法名称

说 明

void setAttribute(String key, Object value)

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

Object getAttribute(String key)

通过key获取对象值

String getRealPath(String path)

返回相对路径的真实路径

示例
代码语言:javascript复制
 <%
    Integer count = (Integer) application.getAttribute("count");
    if (count != null) {
        count = 1   count;
    } else {
        count = 1;      
    }
    application.setAttribute("count", count);
%>
​

作用域分类

page作用域

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

范围

指本JSP页面的范围

request作用域

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

范围

一次请求

session作用域

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

范围

一次会话

application作用域

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

范围

整个应用的上下文

jsp内置对象回顾

内置对象名称

说明

out

用于向客户端输出数据

request

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

response

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

session

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

application

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

0 人点赞