JSP实现简单的登录和注册_jsp登录注册页面-程序员宅基地

技术标签: java  servlet  数据库  

JSP实现登录和注册(Map集合模拟数据库)

1、login.jsp

在这里插入图片描述

  • login.jsp中usernamepassword在LoginSelect.jsp验证是否一致
  • 使用session.setAttribute("login_msg","用户名或密码为空")设置login_msg的值
  • 使用session.getAttribute("login_msg")获取对象的值,判断输入框是否为空,如果为空,则提示用户名或密码为空。
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>登录界面</title>
</head>
<body>

<div align="center">
    <h1>欢迎登录</h1>
    <form action="LoginSelect.jsp" method="post" id="form">
        <p>用户名:&nbsp<input id="username" name="username" type="text">&nbsp&nbsp</p>
        <p>密码:&nbsp<input id="password" name="password" type="password"></p>
            <input type="submit" class="button" value="登录" onclick="">
            <button><a href="register.jsp">注册</a></button>
    </form>
    <div id="errorMsg" value="null"><%=session.getAttribute("login_msg")%></div>
</div>

<script>
    if(document.getElementById("errorMsg").innerText==="null"||document.getElementById("errorMsg").innerText===""){
      
        document.getElementById("errorMsg").setAttribute('style',"display:none")

    } else {
      
        document.getElementById("errorMsg").setAttribute('style',"display:block")
    }
</script>

</body>
</html>

2、 loginSelect.jsp

  • 利用Map集合存储账户和密码信息,模拟数据库
  • map.put("20201234","123456")设置初始数据
  • map.put(username,session.getAttribute(username).toString())这里是将注册的账户和密码添加到数据库中,username为键,session.getAttribute(username).toString()为值,两者都为字符串类型
<%@ page import="java.util.*" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>判断登录界面</title>
</head>
<body>

<%!
     Map<String,String> map = new HashMap<String,String>();
     public boolean compare(String username,String password){
         String pwd = map.get(username);
         if(pwd!=null&&password.equals(pwd)){
             return true;
         }
         else{
             return false;
         }
     }
%>
<%
    String username = request.getParameter("username");
    String password = request.getParameter("password");
    //设置初始值
    map.put("20201234","123456");
    //注册后的值存入map集合
    if (session.getAttribute(username)!=null){
        map.put(username,session.getAttribute(username).toString());
    }

    System.out.println(map);
    //判断输入内容是否正确,给出提示信息
    if (username==null||username =="" || password==null || password==""){
        session.setAttribute("login_msg","用户名或密码为空");
        response.sendRedirect("login.jsp");
        return;
    }
    boolean compare = compare(username, password);
    if (compare){
        session.setAttribute("username",username);
        session.setAttribute("password",password);
        response.sendRedirect("index.jsp");
    }
    else {
        session.setAttribute("login_msg","用户名或密码错误或用户名不存在");
        response.sendRedirect("login.jsp");
    }
%>
</body>
</html>

3、register.jsp

在这里插入图片描述

  • register.jsp中usernamepassword在RegisterSelect.jsp验证是否一致
  • 使用session.setAttribute("register_msg","用户名或密码为空")设置register_msg的值
  • 使用session.getAttribute("register_msg")获取对象的值,判断输入框是否为空,如果为空,则提示用户名或密码为空。
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
  <title>注册界面</title>
</head>

  <div align="center">
    <h1>欢迎注册</h1>
  <form action="RegisterSelect.jsp" method="post">
    <table>
      <tr>
        <td>用户名</td>
        <td>
          <input name="username" type="text" id="username">
          <br>
        </td>
      </tr>
      <tr>
        <td>密码</td>
        <td>
          <input name="password" type="password" id="password">
          <br>
        </td>
      </tr>
    </table>
      <input value="注 册" type="submit" id="reg_btn"><br>
    <span>已有帐号?</span> <a href="login.jsp">登录</a>
  </form>
    <span id="register_msg" class="err_msg" ><%=session.getAttribute("register_msg")%></span>
  </div>
</body>
</div>
<script>
  if(document.getElementById("register_msg").innerText==="null"||document.getElementById("register_msg").innerText===""){
      
    document.getElementById("register_msg").setAttribute('style',"display:none")

  } else {
      
    document.getElementById("register_msg").setAttribute('style',"display:block")
  }
</script>
</html>

4、 RegisterSelect.jsp

  • if else语句,if 判断账户或密码为空则提示"用户或密码为空"else 使用session.setAttribute(username,password) 创建对象存储新的账户和密码信息。
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%
    String username = request.getParameter("username");
    String password = request.getParameter("password");
    session.setAttribute("register_msg","null");

    if (username==null||username =="" || password==null || password==""){
        session.setAttribute("register_msg","用户名或密码为空");
        response.sendRedirect("register.jsp");
        return;
    }
    else {
        session.setAttribute(username,password);
        response.sendRedirect("login.jsp");
    }
%>
<html>
<head>
    <title>Title</title>
</head>
<body>

</body>
</html>

5、 index.jsp

在这里插入图片描述

  • session.getAttribute("username")动态获取账户名称
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>登录成功</title>
</head>
<body>
<div align="center">
    <h1>JSP管理系统</h1>
<h1><%=session.getAttribute("username")%> 欢迎您!</h1>
<a href="login.jsp">退出登录</a>
</div>
</body>
</html>
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_61370021/article/details/129653341

智能推荐

Docker搭建MySQL集群环境_容器版mysql集群搭建-程序员宅基地

文章浏览阅读1.1k次,点赞2次,收藏4次。文章目录安装Docker使Docker容器和Windows10建立局域网连接Docker创建一个局域网在Windows10中将这个子网添加到路由表中简单Mysql持久化预先准备启动mysql搭建MySQL集群预习准备修改配置文件修改my.cnf修改mysql-cluster.cnf启动5个节点参考资料安装Docker由于我用的是Windows10,所以我打开了Hyper-V,然后在Dcoker..._容器版mysql集群搭建

Niagara内容示例 4.3 Mesh Orientation vs. Rotational Force_ue5 的niagara 的drag是什么?-程序员宅基地

文章浏览阅读2.1k次,点赞3次,收藏6次。粒子效果有三竖列的粒子,都在绕某个轴进行旋转。根据下面的文本提示来看,应该是每堆粒子的旋转操作的赋予方式不同,分别是直接操作网格体朝向(Mesh Orientation),操作旋转的速度(Rotational Velocity),操作发起旋转的力(Rotational Force)。(理科生可能会比较好懂,其实就是分别操作位置,速度以及加速度,如果你脑中有公式的话,其实这三者做的是同一件事,。)Niagara蓝图部分蓝图中包含了三个发射器(对应三种模式),并配文做出相应的解释。左上角是操作Mesh朝._ue5 的niagara 的drag是什么?

机器学习复习——pLSA、LDA_plsa机器学习-程序员宅基地

文章浏览阅读563次。pLSA:pLSA由LSA发展过来,而早期LSA的实现主要是通过SVD分解。pLSA的模型图如下:公式中的意义如下:具体可以参考2010龙星计划:机器学习中对应的主题模型那一讲 LDA:主题模型,概率图如下:和pLSA不同的是LDA中假设了很多先验分布,且一般参数的先验分布都假设为Dirichlet_plsa机器学习

java 实现文件下载功能(浏览器提示保存位置)_java文件下载时如何可以弹出下载框选择路径-程序员宅基地

文章浏览阅读2.5k次。@RequestMapping(params = "down") public void down(HttpServletResponse response,@RequestParam("file") String file) { try { String filePath = "E:\\saveWenJian\\"+file; InputStream is = new FileInputStream(filePath); response.reset(); // 必要地清除res._java文件下载时如何可以弹出下载框选择路径

java中实现类似C#的TrimEnd函数_java trimend-程序员宅基地

文章浏览阅读2.6k次,点赞4次,收藏2次。话不多说,直接上代码/* * 删除末尾字符串 */public static String trimend(String inStr, String suffix) { while(inStr.endsWith(suffix)){ inStr = inStr.substring(0,inStr.length()-suffix.length()); } return inStr;}public static void main(String[] ar._java trimend

Java 中HashMap 详解_java hashmap-程序员宅基地

文章浏览阅读2.2w次,点赞13次,收藏53次。举一个简单的例子,假设我们在目前的平台有键值对 key1-value1,计算出key1的hash为1, 计算后存在table数组中下标为1的地方,假设table被序列化了,并传输到了另外的平台,并反序列化为了原来的HashMap,key1-value1仍然存在下标1的位置,当在这个平台运行get("key1")的时候,可能计算出key1的hash为2,就有可能到下标为2的地方去找该元素,这样就出错了。创建新的Node数组,将原来数组中的元素重新映射到新的数组中。2. 数组的默认长度是16。_java hashmap

随便推点

【git问题处理】SSL routines:ssl3_get_record:wrong version number问题解决小记-程序员宅基地

文章浏览阅读1.4k次。本文整理了git clone时遇到SSL routines:ssl3_get_record:wrong version number问题的解决方法。_ssl routines:ssl3_get_record:wrong version number

PathVariable注解的使用,必须技巧_getmapper注解一定要设置pathvariable才能取到值吗-程序员宅基地

文章浏览阅读51次。PathVariable注解一般都是,将Mapping中的路径值赋值给方法形参如下。假设:@GetMapping("/{id}") 中id为 8。而如果没有PathVariable注解输出结果将是null。所以最后输出结果为 8。即形参id的值也是8。_getmapper注解一定要设置pathvariable才能取到值吗

优雅的数据结构---并查集_数据结构菊花图-程序员宅基地

文章浏览阅读64次。数据结构,算法,并查集_数据结构菊花图

/usr/include/glib-2.0/glib/gtypes.h:32:10: fatal error: glibconfig.h: No such file or directory-程序员宅基地

文章浏览阅读3.2k次,点赞2次,收藏4次。  具体错误:/usr/include/glib-2.0/glib/gtypes.h:32:10: fatal error: glibconfig.h: No such file or directory #include <glibconfig.h>这个文件是有的:cd /usrfind -name glibconfig.h./lib/sw_64-linux-gnu/glib-2.0/include/glibconfig.h解决办法:在编译选项中,加上-I/u_/usr/include/glib-2.0/glib/gtypes.h:32:10: fatal error: glibconfig.h: no suc

echarts柱状图刻度_echarts中柱状图的刻度问题-程序员宅基地

文章浏览阅读2.1k次。想实现一个柱状图,表示范围的数值以下是option的代码option = {color: ['#3398DB'],tooltip : {trigger: 'axis',axisPointer : { // 坐标轴指示器,坐标轴触发有效type : 'shadow' // 默认为直线,可选为:'line' | 'shadow'}},grid: {left: '3%..._echarts柱状图 控制刻度

oracle备份或还原数据库(expdp、impdp)_oracle更改expdp数据备份逻辑目录路径-程序员宅基地

文章浏览阅读1.2k次。1.首先新建或更改虚拟目录因为数据泵方式——expdp(导出)和impdp(导入)需要虚拟目录路径。-- 语法create or replace directory 虚拟目录名 as '虚拟目录绝对路径';-- 例子:创建或修改data_backup逻辑目录create or replace directory data_backup as 'D:\app\Administrator\admin\bysjdb\dbdump\20210709';如果是第一次新建data_backup这个逻辑目录_oracle更改expdp数据备份逻辑目录路径

推荐文章

热门文章

相关标签