2020-11-8 JSP 学习笔记

本文介绍如何使用JSP的response对象实现页面重定向,并演示了session对象的应用,包括登录验证及页面跳转控制。

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

JSP笔记

response

response对象概念

response对象包含了响应客户端请求的有关信息,主要将JSP处理数据后的结果传回到客户端。
response对象实现使用javax.Servlet.http.HttpServletResponse接口,他是HttpServletResponse类的实例。
response内置对象的常用方法:

方法描述
String grtCharacterEncoding()返回响应用的是何种字符编码
ServletOutputStream getOutputStream()返回响应的一个二进制输出流
PrintWriter getWriter()返回可以向客户端输出字符的一个对象
void setContentLength(int len)设置响应头长度
void setContentType(String type)设置响应的MIME类型
sendRedirect(java.lang.String location)重新定向客户的请求
void setHeader(String name,String value)指定String类型的值到名为name的http头部

这次学习主要使用response对象的sendRedirect方法实现页面的重定向。response1.jsp页面设置一个下拉选项框控件,通过下拉选值向handle2.jsp页面提交数据。handle.jsp根据提交的数据重定向页面的内容。
新建一个jsp文件(response1.jsp),用来提交数据。

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>response内置对象的使用</title>
</head>
<body>
<form action="handle2.jsp" method="post">
<select name="opt">
<option value="taobao">淘宝</option>
<option value="jingdong">京东</option>
<option value="pdd">拼多多</option>
</select>
<input type="submit" value="go">
</form>
</body>
</html>

新建一个JSP文件(handle2),实现页面的重定向。

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>response内置对象的使用</title>
</head>
<body>
<%
String opt = request.getParameter("opt");
if(opt.equals("taobao")){
	response.sendRedirect("https://www.taobao.com");
}else if(opt.equals("jingdong")){
	response.sendRedirect("https://www.jd.com");
}else
{
	response.sendRedirect("https://www.pinduoduo.com");
}




%>
</body>
</html>

运行结果:
在这里插入图片描述
在这里插入图片描述

可以看到,当我们选择好后,网页重定向到了我们指定的网站。

新建一个JSP文件(response2.jsp),实现response.setHeader()方法

<%@page import="java.util.Date"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>response内置对象的使用</title>
</head>
<body>
<%
response.setHeader("refresh", "1");
//一秒刷新一次页面
out.println((new Date()).toString());
//打印当前时间
%>
</body>
</html>

运行结果:
在这里插入图片描述
在这里插入图片描述
可以看到这个页面在每秒钟刷新一次。

session

session对象概念

session对象在第一个JSP页面被装载时自动创建,从客户端连到服务器开始,直到客户端与服务器断开连接为止,被称为一个会话。session是javax.Servlet.http.HttpSession接口的实例化对象。

session内置对象的常用方法

方法描述
long getCreation Time()返回session创建时间
public String getId()返回session创建时JSP引擎为它设的唯一ID号
long getLastAccessedTime()返回此session里客户端最近一次请求时间
int getMaxInactiveInterval()返回两次请求间隔多长时间此session被取消
String getValueNames()返回一个包含此session中所有可用属性的数组
void invalidate()取消session,使session不可用
boolcan isNew()返回服务器创建的一个session,客户端是否已经加入
Void remove Value(String name)删除session中指定的属性
void setMaxInactiveInterval()设置两次请求间隔多长时间此session被取消
setAttribute(String key, Object value)使用指定的名称和值来产生一个对象并绑定到session中
getAttribute(String key)返回session对象中与指定名称绑定的对象,如果不存在则返回null

本次学习主要通过session实现登录判断。
新建一个JSP文件(longin)作为登录页面。

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>登录</title>
</head>
<body>
<%
String infoMsg=(String)session.getAttribute("infoMsg");
if(infoMsg!=null)
{
	session.setAttribute("infoMsg",null);
%>
<%=infoMsg %>
<%} %>
<form action="do_login.jsp" method="post">
<input type="text" name="username"><br>
<input type="password" name="password"><br>
<input type="submit" name="登录">
</form>
</body>
</html>

新建一个JSP文件(do_login.jsp)作为登录的业务处理页面

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>登录处理</title>
</head>
<body>
<%
String username=request.getParameter("username");
String password=request.getParameter("password");
//获得用户输入的用户名和密码
if(username!=null&&password!=null)
{
	if(username.equals("star")&&password.equals("star"))
	{
		session.setAttribute("u", username);
		//设置标志位,如果flag的值为ok,说明登录成功
		session.setAttribute("flag", "ok");
		response.sendRedirect("index.jsp");
	}else
	{
		session.setAttribute("infoMsg", "用户名或者密码错误,请重新登录");
		response.sendRedirect("login.jsp");
	}
}
%>
</body>
</html>

新建JSP文件(index.jsp)作为首页,只有登录成功才可以到达首页

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>首页</title>
</head>
<body>
<%
String flag = (String)session.getAttribute("flag");
if(flag!=null)
{
	String username = (String)session.getAttribute("u");
	out.println("欢迎您:"+username+"的到来");
	
}
else
{
	session.setAttribute("infoMsg","你还没有登录,请登录");
	response.sendRedirect("login.jsp");
	//如果没有登录直接进到该页面提示未登录,并跳回login页面
}
%>
</body>
</html>

运行结果:
当我们跳过login,直接进入index页面
在这里插入图片描述

提示未登录,并回到login页面

当我们输入错误的用户名或密码
err
提示密码或用户名错误,并跳转回login

点击刷新
在这里插入图片描述
错误提示消失

输入正确的用户名和密码
在这里插入图片描述
在这里插入图片描述

进入正确的页面,index.jsp

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值