- 通过上一篇文章JSP内置对象 https://blog.csdn.net/weixin_44989801/article/details/112132063的学习,我们了解了request、response、 session、 application等内置对象以及相关的使用方法,接下来,我们用几个小案例来练习使用以上内置对象及内置对象的相关方法。
练习1 实现用户的登录功能(request.getParameter()和request.setAttribute()方法的使用)
- 功能描述: 实现用户的简单登录功能,用户通过用户名和密码登录登录,验证成功后,跳转到相应的界面,如果用户名或密码不正确,则返回用户名或密码错误的提示词,要求用户重新输入用户名或密码。例如,只有用户名为,user 密码为123456 的用户才能登陆成功!
- 登录分析: 用户在登录界面输入用户名和密码,在检查界面判定用户名或密码是否正确,也就是说,需要在检查界面接收登录界面用户输入的用户名和密码,才能够与正确的账号密码相对比,正确则跳转到成功后的界面,失败则返回相应信息到登录界面。
- 登录界面源码 login.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>login</title>
</head>
<body>
<%
/* 使用error1和error接收request.setAttribute 方法保存的内容
此功能是用来接收检查界面判定用户名或密码为空或者不正确后返回的内容(String 类型)
从而实现,用户登录失败后的相应提示。
*/
String error1 = (String)request.getAttribute("error1");
String error = (String)request.getAttribute("error");
%>
<h3>用户登录</h3>
<hr>
/* action 的值指跳转到哪个界面,这里用userinfo.jsp界面作为检查界面*/
<form action = "userinfo.jsp" method = "post">
<div>
用户名: <input type = "text" name = "uname"/>
</div>
<div>
密码:<input type = "password" name = "upwd"/>
</div>
<div>
<input type = "submit" value = "登录">
<input type = "reset" value = "重置">
</div>
</form>
/*
输出错误信息,但同时也判定该error 和error1的值是否为空,如果为空,则不显示,不为空,则显示相应信息,这样
写是为了避免在第一次访问页面时,输出null(第一次访问界面时,error的值是为null的) 。
*/
<%=error1==null?"":error1 %>
<%=error==null?"":error %>
</body>
</html>
- 登录界面源码 userinfo.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<%!
/*首先设定指定的用户名和密码,只有与该方法的用户名密码一致,才能登陆成功!*/
boolean ValidateUser(String name,String pwd){
if(name.equals("user")&& pwd.equals("123456"))
return true ;
else return false ;
}
%>
<%
/*使用request.getParameter("uname");方法获取用户输入的值,此处的uname 与input输入框的name属性的值一致,否则无法成功接收到用户输入的值!*/
String name = request.getParameter("uname");
String pwd = request.getParameter("upwd");
String error = "";
String error1 ="";
/*使用equals("")方法判定用户是否没有输入值,如果没有输入,则提示,不能为空*/
if(name.equals("")|| pwd.equals("")){
error1 = "用户名或密码不能为空";
request.setAttribute("error1", error1);
request.getRequestDispatcher("login.jsp").forward(request, response);
}
/*使用equals("")方法判定用户是否输入正确结果,如果不正确,则提示,用户名密码不正确!*/
else if(!ValidateUser(name,pwd)){
error = "用户名或密码不正确";
request.setAttribute("error", error);
request.getRequestDispatcher("login.jsp").forward(request, response);
}else {
/*成功则进入下一界面*/
out.print("欢迎光临山外书店!");
}
%>
</body>
</html>
-
运行结果如下
-
1.用户名或密码不正确
- 2.用户名或密码为空
- 用户名密码正确,成功进入
练习2 实现一个猜随机数的小游戏(session方法)
-
功能描述: 通过系统自动生成随机数,用户猜测该随机数的值,系统会根据用户输入的大小提示用户是猜大了还是猜小了,用户根据系统提示信息重新进行猜测,最终,系统会记录用户一共猜测了几次猜到了正确结果,并给出该随机数的值。
-
案例分析: 通过功能描述,我们发现,第一个界面是说明游戏规则,让用户输入猜测的值,第二个界面是检查页面,检查用户的值是猜大了还是猜小了,并给出提示信息,然后用户根据信息提示,再次进行猜测,最后一个界面是猜测成功后的界面,打印猜测成功并给出猜测次数的信息。
-
猜随机数的小游戏源码index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
/* 获取随机数并保存在session对象中,(session对象可以在所有界面中进行获取)*/
int n = (int)(Math.random()*100)+1;
session.setAttribute("sn",String.valueOf(n));
session.setAttribute("count","0");
%>
<p>猜数字游戏</p>
<p>随机分给你一个1-100之间的数,请猜!</p>
<form action="result.jsp" method="post">
<input type="text" name="number">
<input type="submit" value="提交">
</form>
</body>
</html>
- 猜随机数的小游戏源码result.jsp(判定页面)
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>head</title>
</head>
<body>
<%
int number = Integer.parseInt(request.getParameter("number"));
int n = Integer.parseInt((String)session.getAttribute("sn"));
int count = Integer.parseInt((String)session.getAttribute("count"));
count++;
session.setAttribute("count",String.valueOf(count));
out.print("我输入的是:"+number);
out.print("随机数是:"+n);
String url ;
if(number>n){
response.sendRedirect("bigger.jsp");
}else if(number<n){
response.sendRedirect("smaller.jsp");
}else{
response.sendRedirect("successful.jsp");
}
%>
</body>
</html>
- 猜随机数的小游戏源码bigger.jsp(猜大了界面)
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>bigger.jsp</title>
</head>
<body>
<p>你猜大了,小一点试一试!</p>
<br/>
<p>随机分给你一个1-100之间的数,请猜!</p>
<form action="result.jsp" method="post">
<input type="text" name="number">
<input type="submit" value="提交">
</form>
</body>
</html>
- 猜随机数的小游戏源码smaller.jsp(猜小了也页面)
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>smaller.jsp</title>
</head>
<body>
<p>你猜小了,大一点试一试!</p>
<br/>
<p>随机分给你一个1-100之间的数,请猜!</p>
<form action="result.jsp" method="post">
<input type="text" name="number">
<input type="submit" value="提交">
</form>
</body>
</html>
- 猜随机数的小游戏源码successful.jsp(成功页面)
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>successful.jsp</title>
</head>
<body>
<p>恭喜你!猜对了!</p>
<%
/*获取session对象保存的值*/
int n = Integer.parseInt((String)session.getAttribute("sn"));
int count = Integer.parseInt((String)session.getAttribute("count"));
%>
<p>该随机数是:<%=n %></p>
<p>次数是:<%=count %></p>
</body>
</html>
-
运行结果如下
-
1.首页
-
2.猜测过程
-
2.成功页面
- 通过以上案例,我们使用了request的常用方法和session的常用方法来完成相关案例练习,希望对大家有所帮助。