首页 > 其他分享 >2023年2月20日总结

2023年2月20日总结

时间:2023-02-20 22:45:17浏览次数:37  
标签:总结 20 String request session jsp 2023 传值 页面

今天测试主要遇到的问题是jsp之间的传值。HTML界面已全部完成,并测试可以完美显示。数据库表格创建成功,数据可以存储到数据库中。但因为jsp传值的问题,浏览功能无法实现。

所以下课回宿舍后主要学习的事jsp传值的问题。

1、URL传值

url传值主要是静态传递数值。
例如将页面1中的值传给页面2:
1. index1.jsp页面

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>页面1</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
</head>
<body>
<%
String str="123";
int number=Integer.parseInt(str);
%>
该数的和为:<%=number+number %> <hr>
<a href="index2.jsp?number=<%=number %>">传值</a>
</body>
</html>
2. index2.jsp页面

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>页面2</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
</head>
<body>
<%
//获得number
String str=request.getParameter("number");
int number=Integer.parseInt(str);
%>
该数字的三倍为:<%=number*3 %> <hr>
</body>
</html>


2.表单传值

url传值的最大缺点就是传递的值可以被看到,而表单传值正好改正了这一缺点。

例如表单将页面1中的变量传给页面2:
1. index1.jsp:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>页面1</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
</head>
<body>
<%
String str="123";
int number=Integer.parseInt(str);
%>
该数的两倍为:<%=number*2 %> <hr>
<form action="index2.jsp" method="post">
<input type="text" name="number" value="<%=number %>">
<input type="submit" value="到达index2">
</form>
</body>
</html>
2. index2.jsp:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>页面2</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
</head>
<body>
<%
//获得number
String str=request.getParameter("number");
int number=Integer.parseInt(str);
%>
该数字的三倍为:<%=number*3 %> <hr>
</body>
</html>

3.Cookie方法


cookie传值方法保密性比表单传值更强

cookie的含义:
Cookie是一个小的文本数据,由服务器端生成,发送给客户端浏览器,客户端浏览器如果设置为启用 cookie,则会将这个小文本数据保存到其目录下的文本文件内。
客户端下次登录同一网站,浏览器则会自动将 Cookie 读入之后,传给服务器端。服务器端可以对该 Cookie 进行读取并验证(当然也可以不读取)。


cookie传值过程:

在第一个页面中,将要共享的变量值保存在客户端 Cookie 文件内,在客户端访问第二个页面时,由于浏览器自动将 Cookie读入之后,传给服务器端,因此只需要第二个页面中,由服务器端页面读取这个 Cookie 值即可。
1. index1.jsp:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>index1</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">

</head>
<body>
<h3>成功</h3>
<h3>欢迎</h3>
<%
String uri = request.getRequestURI();//返回请求行中的资源名称
String url = request.getRequestURL().toString();//获得客户端发送请求的完整url
String ip = request.getRemoteAddr();//返回发出请求的IP地址
String params = request.getQueryString();//返回请求行中的参数部分
String host=request.getRemoteHost();//返回发出请求的客户机的主机名
int port =request.getRemotePort();//返回发出请求的客户机的端口号。
%>
<%
Cookie c=new Cookie("get_ip",ip);
c.setMaxAge(600);
response.addCookie(c);
%>
</body>
</html>
2. index2.jsp:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>index2</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
</head>
<body>
<h3>获取页面1传来的数据</h3>
<%
String ip=null;
Cookie[] cookies=request.getCookies();
for(int i=0;i<cookies.length;i++) {
if(cookies[i].getName().equals("get_ip")) {
ip=cookies[i].getValue();
break;
}
}
%>
ip:<%=ip %>
</body>
</html>

 

4.Session方法


1、区别:
前几种方法在传递数据时,有一个共同的问题就是内容保存在客户端里。因此,具有泄露的危险性。如果在不考虑服务器负载的情况下,将数据保存在服务端里,是一个比较好的方法,这就是session方法。
通过session.setAttribute("num",str);将str存到session中,通过session.getAttribute("num");从session中获取num
具体的session机制,可以查看该文章。点击查看session机制

2、session的应用:
session 经常用于保存用户登录状态。比如用户登录成功之后要访问好几个页面,但是每个页面都需要知道是哪个用户在登录,此时就可以将用户的用户名保存在 session 内。
login.jsp:

<%@ page language="java" import="java.util.*"%>
登录
<form action="login.jsp" method="post">
账号:<input name="account" type="text">
密码:<input name="password" type="password">
<input type="submit" value="登录">
</form>
<%

String account = request.getParameter("account");//获取账号
String password = request.getParameter("password");//获取密码
if(account!=null)
{
//验证账号密码,比如登录成功的条件是账号和密码相同
if(account.equals(password))
{
//放入 session
session.setAttribute("account",account);
//跳转到下一个页面
response.sendRedirect("loginResult.jsp");
}
else
{
out.println("登录不成功");
}
}
%>
index.jsp:

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
if(session.getAttribute("account")==null)
{
response.sendRedirect("login.jsp");
}
%>
欢迎<%=session.getAttribute("account") %>

————————————————
版权声明:本文为CSDN博主「mzlz」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/mingzi1245/article/details/105976146

标签:总结,20,String,request,session,jsp,2023,传值,页面
From: https://www.cnblogs.com/DREAM2021/p/17139278.html

相关文章

  • 【YBT2023寒假Day10 C】娄居吉勾(点分树)
    娄居吉勾题目链接:YBT2023寒假Day10C题目大意有一个n个点m条边的无向连通图,每个点至多在k个简单环上。然后有q个操作,标记一个没有标记过的点,或者给你一个点求......
  • 今日学习总结-01
    今天创建了软件工程日报分类,从今天开始,每天写一篇博客,记录自己每天的学习历程。今天是第二周的周一,下午王老师为我们上了这半学期第二节软工课。在这节课上,王老师用很长......
  • 每日总结-23.2.20
    今日软件工程课上明确了每日写总结的目标,之后每周一到周五的软件学习进度都要写总结。今日留下了关于android开发app的作业——每日打卡app。课下我在b站找......
  • 2023.3.20总结
    今日软件工程课上,建明老师给我们讲解了很多关于软件工程相关知识,以及什么是“做中学”,以及如何做中学,还有如何学好软件工程布置了完成关于Android下app的制作......
  • 【ZJOI2019】线段树
    【ZJOI2019】线段树Description九条可怜是一个喜欢数据结构的女孩子,在常见的数据结构中,可怜最喜欢的就是线段树。线段树的核心是懒标记,下面是一个带懒标记的线段树的伪......
  • 查看版本日志 git 230220
    查看提交日志简易日志gitlog--oneline完整日志gitlog......
  • 分支与指针 git 230220
    分支与指针多分支走向......
  • 每日总结1
    今天算是本学期严格意义上的第一节课了。在课堂上建民老师以游泳为例,给我们详细的讲解了软件工程的工作前景和未来工作岗位上所需要的能力,在学习方法上做出了一系列的要求......
  • Android数据存储知识总结一(小水一波~~)
    第一种获取共享参数的方式是使用键值对SharedPreferences存储结构是key-value键值对,类似于xml文件SharedPreferenceshared=getSharedPreference("share",MODE_PRIVA......
  • 2023.2.20每日总结
    题目 每日总结打卡:内容包括:日期、每日关键字、每日总结、坚持天数(自动计数,显示上次天数)、连续最长天数。代码如下package每日打卡;publicclassBean{ publicStrin......