一、 项目概述
本项目主要实现了以下功能:
- 用户登录验证
- 账号密码信息的保存
- 登录成功后用户信息的保存显示
- 账号或密码错误页面的跳转
应用技术:
Jsp session cookie html
项目特点:
界面清晰简洁,可实现用户登录注销,账号密码信息保存。
实现截图:
二、项目模块说明
1. login.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>登录</title>
<%
//初始化
String username = ""; //定义用户名变量
String password = ""; //定义密码变量
//获取所有的cookie值
Cookie[] cookies = request.getCookies(); //定义cookie数组
for (int i = 0; i < cookies.length; i++){
//将用户名和密码与cookie中所有的值进行比较,如果cookie中有用户信息则分别将用户名和密码赋值
if ("username".equals(cookies[i].getName())){
username = cookies[i].getValue();}
if ("password".equals(cookies[i].getName())){
password = cookies[i].getValue(); }
}
%>
<style type="text/css">
.longinBox{margin-left:500px;margin-top:200px;}
.sub_button{width:100px;height="100%";}
</style>
</head>
<body bgcolor="#d0d0d0">
<div class="longinBox">
<form action="login_deal.jsp">
<table border="0" >
<tr>
<td>账号</td><td><input type="text" class="txt_input txt_input2" name="username" value=<%=username%>></td>
</tr>
<tr>
<td>密码</td><td><input type="password" class="txt_input" name="password" value=<%=password%>></td>
</tr>
<tr><td></td>
<td>
<input type="checkbox" id="save_me" name="flag" value="y"><label for="checkbox">记住密码</label>
</td>
</tr>
<tr><td></td>
<td>
<input type="submit" class="sub_button" name="button" id="button" value="登录" style="opacity: 0.7;">
<a id="iforget" href="del.jsp">删除cookies</a>
</td>
</tr><div></div>
</table>
</div>
</form>
</body>
</html>
2. login_deal.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>登录判断</title>
<style type="text/css">
.body{bgcolor="#d0d0d0";}
.welcome{margin-left:500px;margin-top:200px;}
</style>
</head>
<body bgcolor="#d0d0d0">
<%
String name = request.getParameter("username");
String password = request.getParameter("password");
String flag = request.getParameter("flag");
//判断账号和密码是否合法
if (name.equals("123") && password.equals("123")){
//flag为true则保存cookie,为false则不保存
if (flag != null){
//定义cookie对象
Cookie c1 = new Cookie("username",name);
Cookie c2 = new Cookie("password",password);
response.addCookie(c1);
response.addCookie(c2);
//使用session.setAttribute()将用户名和密码保存在session中 session.setAttribute("username",name);
session.setAttribute("password",password);
//设定访问路径,将页面切换到welcome.jsp
response.sendRedirect("welcome.jsp");
} else {
session.setAttribute("username",name);
response.sendRedirect("welcome.jsp");
}
} else {
response.sendRedirect("fail.jsp");
}
%>
</body>
</html>
3. welcome.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>主页</title>
<style type="text/css">
.body{ bgcolor="#d0d0d0";}
.welcome{margin-left:500px;margin-top:200px;}
.Box{margin-left:500px;margin-top:200px;}
</style>
</head>
<body bgcolor="#d0d0d0">
<div class="Box">
<%
Object user = session.getAttribute("username");
out.print("欢迎回来,"+user);
%>
<br>
<a href="cancel.jsp">注销</a>
</div>
</body>
</html>
登录成功的主页面,显示当前登录的用户名和用户的注销
4. cancel.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>删除cookie</title>
<style type="text/css">
.body{bgcolor="#d0d0d0";}
.welcome{margin-left:500px; margin-top:200px;}
</style>
</head>
<body bgcolor="#d0d0d0">
<%
if(session.getAttribute("username") != null){
//如果用户名不为空,则删除session中的用户信息
session.removeAttribute("username");
}
//设定页面跳转路径
response.sendRedirect("login.jsp");
%>
</body>
</html>
5. del.jsp
清除登录界面保存的账号密码信息。
<%@ page language=*"java"* import=*"java.util.*"* pageEncoding=*"UTF-8"*%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>逻辑处理</title>
</head>
<body bgcolor=*"#d0d0d0"*>
<%
Cookie[] cookies = request.getCookies();
for(int i = 0; i<cookies.length; i++){
if((cookies[i].getName()).equals("username")){
Cookie cookie = new Cookie("username","123");
cookie.setMaxAge(0);
response.addCookie(cookie);
}
if((cookies[i].getName()).equals("password")){
Cookie cookie = new Cookie("password","123");
cookie.setMaxAge(0);//cookie生命周期时长
//添加cookie到浏览器[客户端](https://www.baidu.com/s?wd=%E6%9C%8D%E5%8A%A1%E5%99%A8%E7%AB%AF&tn=SE_PcZhidaonwhc_ngpagmjz&rsv_dl=gh_pc_zhidao)
response.addCookie(cookie); }
}
response.sendRedirect("welcome.jsp");
%>
<br>
</body>
</html>
6. fail.jsp
账号或密码错误时的提示页面。
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>登录失败</title>
<style type="text/css">
.Box{margin-left:500px;margin-top:200px;}
</style>
</head>
<body bgcolor="#d0d0d0">
<div class="Box">
<%
out.print("亲,你的用户名或密码输入有误!请返回重新输入!!!");
%>
<br>
<a href="login.jsp">返回登录界面</a>
</div>
</body>
</html>
三、项目关键技术
1. Cookie机制
Int maxAge()://设置cookie失效时间,单位秒
Cookie cookie=new Cookie(key,value);//创建cookie
response.addCookie(cookie); // 将cookie输出到客户端
Cookie.SetPath();//设置路径
2.Session机制
Session将数据保存在服务器上
session.getAttribute("username").toString()获取session的值。
Session.setAttribute(String attribute, Object value);设置session中的属性值
session.removeAttribute("username");删除session的值
3.其他
request.getParameter获取文本框内输入的内容,
response.sendRedirect实现界面的跳转,
<%=%>jsp表达式
四、项目特点
可以实现用户的登录以及用户信息的保存和删除。
五、项目总结
通过本次项目的练习,对session和cookie有了进一步的认识
cookie数据存放在客户的浏览器上,session数据放在服务器上;
session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能。考虑到减轻服务器性能方面,应当使用Cookie;
单个cookie在客户端的限制是3K,就是说一个站点在客户端存放的CookieE不能超过3K;Cookie和Session的方案虽然分别属于客户端和服务端,但是服务端的session的实现对客户端的cookie有依赖关系的,服务端执行session机制时候会生成session的id值,这个id值会发送给客户端,客户端每次请求都会把这个id值放到http请求的头部发送给服务端,而这个id值在客户端会保存下来,保存的容器就是cookie,因此当我们完全禁掉浏览器的cookie的时候,服务端的session也会不能正常使用。
网友评论