验证通过,这是宝藏开箱的开始。每次在登录页面都会见到诸如此类的话,学一下jsp通过内置对象跳转验证页面。
request获取
request隐含对象的使用(request.jsp),利用request对象获取当前的IP地址,主机名和服务器端口号。
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page import="java.net.InetAddress" %>
<html>
<head>
<title>获取IP地址和端口信息</title>
</head>
<body>
<% String ip=request.getRemoteAddr();
// String hostname=request.getRemoteHost();
if(ip != null ) {
ip=ip.equals("0:0:0:0:0:0:0:1")?"127.0.0.1":ip;//ip转换
} else {
ip = "Unknown";
}
String hostname= InetAddress.getLocalHost().getHostName();//获取主机名
%>
<p>你的IP地址为: <%= ip %></p>
<p>你的主机名为: <%= hostname %></p>
<p>服务器的端口号为: <%= request.getServerPort() %></p>
</body>
</html>
点击跳转页面
在JSP页面上显示1-9共9个链接,单击每个链接。在当前页面打印该数字的平方。
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Number Squares</title>
</head>
<body>
<% for (int i = 1; i <= 9; i++) { %>
<a href="sqe.jsp?num=<%= i %>"><%= i %></a> 
<% } %>
<%
String numParam = request.getParameter("num");
if (numParam != null) {
int num = Integer.parseInt(numParam);
int square = num * num;
%>
<span>该数字的平方为:<%= square %></span>
<%
}
%>
</body>
</html>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Number Squares</title>
</head>
<body>
<% for (int i = 1; i <= 9; i++) { %>
<a href="javascript:void(0);" onclick="handleClick(<%= i %>);" > <%= i %></a> 
<% } %>
<span id="squareans"></span>
<script>
function handleClick(num) {
var url = "squ.jsp?num=" + num; // 构建带参数的URL
window.location.href = url; // 跳转到带参数的URL
}
function printSquare(num) {
var square = num * num;
document.getElementById("squareans").innerHTML = "该数字的平方为:" + square;
}
const urlParams = new URLSearchParams(window.location.search);
const num = parseInt(urlParams.get('num'));
printSquare(num);
</script>
</body>
</html>
session与respond提交
//login.jsp 登录页面
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<%
int cnt=0;
Object timesObj = session.getAttribute("times");
if (timesObj instanceof Integer) {
cnt = (Integer) timesObj;
}
session.setAttribute("times",cnt);
%>
<form action="sy5-3.jsp" method="post">
<p>Username:<input type="text" name="usn"></p>
<p>Password:<input type="password" name="pwd"></p>
<p><input type="submit" value="login"></p>
</form>
</body>
</html>
// 验证跳转页面
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>validate</title>
</head>
<body>
<%
String usn=request.getParameter("usn");
String pwd=request.getParameter("pwd");
session.setAttribute("usn",usn);
session.setAttribute("pwd",pwd);
int times=(Integer)session.getAttribute("times");
times++;
session.setAttribute("times",times);
if (usn.equals("sa") && pwd.equals("123")) {
response.sendRedirect("savict.jsp");
} else {
response.sendRedirect("safai.jsp");
}
%>
</body>
</html>
//登录成功页面
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<%
String usn=(String)session.getAttribute("usn");
%>
<h1>欢迎<%=usn%>,你已成功登录!</h1>
</body>
</html>
//登录失败页面
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<%
String usn=(String)session.getAttribute("usn");
int times=(Integer)session.getAttribute("times");
if(times<3){
%>
<h1>登录失败,<%= usn%>,输入密码有误</h1>
<h2>你还有<%=(3-times)%>次机会</h2>
<a href="login.jsp">返回登录页面</a>
<%
}else {
%>
<h1>错误超过3次,<%= usn%>已被锁定<h1>
<%
}
%>
</body>
</html>
实验心得
谁又在做着架构大师的梦。