摘要:概述一共两个页面当直接访问产品列表的时候会判断用户是否登录如果用户没有登录则直接秒跳转如果用户登录则不进行跳转登录页面对于登录页面来说直接输入用户名密码和数据库进行对比进行登录并进行密码的本地保存一般是需要对密码加密进行本地保存的代码如下配
概述
一共两个页面
当直接访问产品列表的时候,会判断用户是否登录,如果用户没有登录,则直接3秒跳转.
如果用户登录,则不进行跳转
登录页面:对于登录页面来说,直接输入用户名,密码.和数据库进行对比,进行登录.
并进行密码的本地保存
ps 一般是需要对密码加密进行本地保存的
代码如下
配置文件
Archetype Created Web Application
login
/Login.jsp
driver
com.mysql.cj.jdbc.Driver
url
jdbc:mysql://47.94.95.84:32786/test
user
test
password
**
login
/login.html
登录界面
<%@ page import="java.sql.Connection" %>
<%@ page import="java.sql.PreparedStatement" %>
<%@ page import="java.sql.ResultSet" %>
<%@ page import="java.sql.DriverManager" %><%--
Created by IntelliJ IDEA.
User: ming
Date: 19-3-13
Time: 下午10:02
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
登录页面
<%
String dbdriver = config.getInitParameter("driver");
String dburl = config.getInitParameter("url");
String dbuser = config.getInitParameter("user");
String dbpassword = config.getInitParameter("password");
// 连接对象
Connection connection = null;
// 操作
PreparedStatement preparedStatement = null;
// 结果
ResultSet resultSet = null;
// 用户id
String mid = null;
// 标志位
boolean falge = false;
try{
Class.forName(dbdriver);
// 获得连接
connection = DriverManager.getConnection(dburl, dbuser, dbpassword);
// 编写sql验证ID 密码
String sql = "SELECT mid FROM member WHERE name = ? AND password = ?";
// 实例化操作对象
preparedStatement = connection.prepareStatement(sql);
// 设置查询内容
preparedStatement.setString(1, request.getParameter("username"));
preparedStatement.setString(2, request.getParameter("password"));
// 执行查询
resultSet = preparedStatement.executeQuery();
// 如果可以查询到,表示合法用户
if(resultSet.next()){
mid = resultSet.getString(1);
// 修改标志位
falge = true;
}
}catch (Exception e){
e.printStackTrace();
}finally {
try{
resultSet.close();
preparedStatement.close();
connection.close();
}catch (Exception e){
e.printStackTrace();
}
}
// 判断是否登录成功
if(falge){
// 登录成功
// 保存session 保存cookie
session.setAttribute("mid", mid);
// 保存cookie
Cookie cookieMid = new Cookie("mid", mid);
Cookie cookieUser = new Cookie("user", request.getParameter("username"));
Cookie cookiePassword = new Cookie("password", request.getParameter("password"));
// 增加登录态cookie
Cookie cookieFlage = new Cookie("flage", "true");
// 客户端增加Cookie
response.addCookie(cookieMid);
response.addCookie(cookieUser);
response.addCookie(cookiePassword);
response.addCookie(cookieFlage);
// 设置定时跳转
response.setHeader("refresh", "3;URL=product.jsp");
%>
登录成功即将跳转到首页产品界面
未跳转点击点击此处
<%
}else{
// 查询用户是否已经登录
if(session.getAttribute("mid") == null) {
Cookie cookieFlage = new Cookie("flage", "false");
response.addCookie(cookieFlage);
}
}
%>
产品界面
<%--
Created by IntelliJ IDEA.
User: ming
Date: 19-3-14
Time: 下午2:51
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
Title
此为商品列表
- // 判断当前登录态
- // js脚本,读取客户端的cookie
- let cookie = {};
- let all = document.cookie;
- let list = all.split(";");
- for(let i = 0; i < list.length; i++){
- let p = list[i].indexOf("=");
- let space = list[i].indexOf(" ");
- let name = list[i].substring(space + 1, p);
- let value = list[i].substring(p+1);
- value = decodeURIComponent(value);
- cookie[name]=value;
- }
- // 获取登录状态
- if(cookie["flage"] != "true"){
- // 登录状态
- alert("请您登录 3秒将会跳转");
- }
<%
// 服务器端验证
if(session.getAttribute("mid") == null) {
// 执行页面跳转
response.setHeader("refresh", "2;URL=/login.html");
}
%>
注意
产品界面通过本地cookie和服务器的session进行双向验证.
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/73725.html
摘要:提供了个内置对象该对象会自动进行实例化操作种属性范围只在一个保存属性跳转无效一次请求保存属性跳转依旧有效同一会话有效整个服务器上保存所有用户都可使用属性一个属性设置在本页上跳转后无法获得下午设置属性重中取出属性姓名生日属性服务 jsp提供了9个内置对象,该对象会自动进行实例化操作 4种属性范围 page 只在一个保存属性,跳转无效request 一次请求保存属性,跳转依旧有效sessi...
摘要:的学习与内置对象对象代表服务器对客户端的响应。在增加之前必须先创建对象。一次会话的含义是从客户端浏览器连接服务器开始,到客户端服务与断开为止。范围内的属性可以在多个页面的跳转之间共享。 Java Server Page的学习(resopnse与session) 内置对象 response对象 respone代表服务器对客户端的响应。如果要在JSP页面中动态生成一副位图或者输出一个...
摘要:简而言之,由服务端生成再发给客户端,在客户端运行,相当于本地缓存的作用。在出现之前,基本上所有的网站都采用来跟踪会话。对象存储特定用户会话所需的属性及配置信息。若匹配成功和,说明不是第一次访问,无需再登录 什么是cookie?作用是什么? cookie是小量信息,由网络服务器发送出来以存储在网络浏览器上,从而下次这位独一无二的访客又回到该网络服务器时,可从该浏览器读回...
什么是EL表达式? 表达式语言(Expression Language,EL),EL表达式是用${}括起来的脚本,用来更方便的读取对象! EL表达式主要用来读取数据,进行内容的显示! 为什么要使用EL表达式? 为什么要使用EL表达式,我们先来看一下没有EL表达式是怎么样读取对象数据的吧! 在1.jsp中设置了Session属性 向session设置一个属性 在2...
阅读 2030·2023-04-26 02:46
阅读 2112·2021-11-25 09:43
阅读 1250·2021-09-29 09:35
阅读 2213·2019-08-30 15:56
阅读 3529·2019-08-30 15:54
阅读 2764·2019-08-29 16:35
阅读 3237·2019-08-29 15:25
阅读 3412·2019-08-29 14:01