jsp实现数据传递和保存

本文详细探讨了JSP中的数据传递方法,包括GET和POST的区别,以及request、response、session和cookie对象的使用。同时,阐述了解决字符集编码问题的方法,并对比了重定向和转发的不同。此外,还介绍了session对象的生命周期、安全性以及application对象在用户间数据共享的角色。最后总结了JSP的四种作用域:page、request、session和application。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

get与post区别

比较项Getpost
参数出现在URL中
长度限制
安全性
URL可传播

request对象

作用

处理客户端请求

方法

方法名称说明
String getParameter(String name)根据表单组件名称获取提交数据
String[ ] getParameterValues(String name)获取表单组件对应多个值时的请求数据
void setCharacterEncoding(String charset)指定每个请求的编码
RequestDispatcher getRequestDispatcher(String path)返回一个RequestDispatcher对象,该对象的forward( )方法用于转发请求

示例

<%
    //读取用户名和密码
    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方式

<%   // 以POST方式提交数据时
        // 设置读取请求信息的字符编码为UTF-8
        request.setCharacterEncoding("UTF-8");  
        // 读取用户名和密码
        String name = request.getParameter("name");
        String pwd = request.getParameter("pwd");
%>
​

get方式1

<%   // 以GET方式提交数据时
        // 读取用户名和密码
        String name = request.getParameter("name");
        // 对请求数据进行字符编码
        name = new String(name.getBytes("ISO-8859-1"), "UTF-8");
%>
​

get方式2

在Tomcat目录结构\conf\server.xml中设置字符集
<Connector  port="8080"  protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"  URIEncoding="UTF-8"
/>

response对象

作用

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

方法

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

重定向与转发

转发

作用

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

特点

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

举例

request.getRequestDispatcher("welcome.jsp").forward(request, response);

重定向

作用

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

特点

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

举例

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相同

举例

<%
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);

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

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

<session-config>
    <session-timeout>10</session-timeout>
</session-config>

cookie

简介

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

作用

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

安全性

容易泄露信息

创建对象

Cookie newCookie = new Cookie(String key, String value);

写入

response.addCookie(newCookie);

读取

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的对比

sessioncookie
在服务器端保存用户信息在客户端保存用户信息
session中保存的是Object类型cookie保存的是 String类型
随会话的结束而将其存储的数据销毁cookie可以长期保存在客户端
保存重要的信息保存不重要的用户信息

application对象

作用

实现用户之间的数据共享

常用方法

方法名称说 明
void setAttribute(String key, Object value)以key/value的形式保存对象值
Object getAttribute(String key)通过key获取对象值
String getRealPath(String path)返回相对路径的真实路径

示例

 <%
	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应用中的资源共享

####

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值