jsp实现数据传递和保存

本文探讨了JSP中get和post请求的区别,重点讲解了request对象、response对象、session对象和cookie对象的使用。request对象用于处理客户端请求,session对象则在会话管理中扮演关键角色,cookie对象提供了客户端数据存储的解决方案。同时,文章还介绍了转发与重定向的区别以及如何解决字符集编码问题。

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

get与post区别(请求方式)

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

get请求一般你想查询某些东西,就用get

post请求:有敏感信息,较长的信息的一组对象 (注册和登录)

get用的多,因为查询是web服务的主要义务

增删改之前,肯定要先查询

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");
%>
ISO-8859-1 默认编码格式

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("xxx.jsp").forward(request,response);

重定向

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

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

response.sendRedirect("xxx.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服务器保存在客户端的一系列文本信息

作用:1.对特定对象的追踪 2.实现各种个性化服务 3.简化登录

创建对象

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、付费专栏及课程。

余额充值