java实现登录案例

 更新时间:2019年08月22日 14:26:52   作者:以何问心  
这篇文章主要为大家详细介绍了java实现登录案例的相关代码,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了java实现登录案例的具体代码,供大家参考,具体内容如下

一、环境搭建

JDK1.8  + Tomcat1.8

二、目录结构

三、代码示例

3.1、fail.html页面

<!DOCTYPE html>
<html>
<head>
<title>faill.html</title>
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="this is my page">
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
 
<!--<link rel="stylesheet" type="text/css" href="./styles.css" rel="external nofollow" rel="external nofollow" >-->
 
</head>
 
<body>
 <font color='red' size='3'>亲, 你的用户名或密码输入有误!请重新输入!</font>
 <br />
 <a href="/project03/login.html" >返回登录页面</a>
</body>
</html>

3.2、Login.htm页面

<!DOCTYPE html>
<html>
<head>
<title>Login.html</title>
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="this is my page">
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<!--<link rel="stylesheet" type="text/css" href="./styles.css" >-->
</head>
<body>
 <form action="/project03/LoginServlet" method="post">
 用户名:<input type="text" name="UserName" /><br />
 密&nbsp;&nbsp;&nbsp;&nbsp;码:<input type="password" name="UserPwd" /><br />
 <input type="submit" value="登录" />
 </form>
</body>
</html>

3.3、IndexServlet.java

package cn.itcase.servlet;
 
import java.io.IOException;
import java.io.PrintWriter;
 
import javax.servlet.ServletException;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
 
/**
 * 用户主页逻辑
 * */
public class IndexServlet extends HttpServlet {
 
 public void doGet(HttpServletRequest request, HttpServletResponse response)
 throws ServletException, IOException {
 
 // 设置编码格式 
 response.setContentType("text/html;charset=utf-8");// setContentType设置浏览器的编码格式
 
 // 1.信息输出至浏览器
 PrintWriter writer = response.getWriter();
 String html = "";
 
 /**
 * 接收request域对象的数据 String loginName =
 * (String)request.getAttribute("loginName",userName);
 * 
 */
 
 /**
 * 在用户主页,判断session对象不为空且存在指定的属性则登录成功 才能访问资源。从session域对象中取出会话数据
 * 
 * 
 * */
 // 2.得到session对象
 HttpSession session = request.getSession(false);
 // 2.1如果不存在session对象,登录不成功,跳转到登录页面
 if (session == null) {
 response.sendRedirect(request.getContextPath()
 + "/Login.html");
 return;
 }
 // 2.2没有在session对象域中找到相应 session唯一标识ID 则登录不成功,跳转到登录页面
 String loginName = (String) session.getAttribute("loginName");
 if (loginName == null) {
 response.sendRedirect(request.getContextPath() + "/Login.html");
 return;
 }
 html = "<html><body>欢迎回来," + loginName + ",<a href='"
 + request.getContextPath()
 + "/LogoutServlet'>安全退出</a></body></html>";
 writer.write(html);
 }
 
 public void doPost(HttpServletRequest request, HttpServletResponse response)
 throws ServletException, IOException {
 
 doGet(request, response);
 }
 
}

3.4、LoginServlet.java

package cn.itcase.servlet;
 
import java.io.IOException;
 
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
/**
 * 登录的逻辑
 * 设置编码格式
 * 根据参数名获取参数值
 * 判断逻辑(使用session域对象)
 * 
 * 
 */
public class LoginServlet extends HttpServlet {
 protected void doGet(HttpServletRequest request,
 HttpServletResponse response) throws ServletException, IOException {
 // 设置编码格式
 request.setCharacterEncoding("utf-8");// setCharacterEncoding设置服务器的编码格式
 
 // 1.根据参数名获取参数值
 String userName = request.getParameter("UserName");
 String userPwd = request.getParameter("UserPwd");
 
 // 2.登录是否的逻辑判断
 if("eric".equals(userName) && "123456".equals(userPwd)){
 /**分析使用技术:
 * context域对象:不合适,可能会覆盖数据
 * request.setAttribute("loginName",userName);
 * 
 * request域对象:不合适,整个网站必须得使用转发技术来跳转
 * request.getRequestDispatcher("/IndexServlet").forward(request,response);
 * 
 * session域对象:合适
 * response.sendRedirect(request.getContextPath()+"/IndexServlet")
 * */
 //2.1 登录成功
 // 2.1.1创建session对象 用于保存数据
 HttpSession session = request.getSession();
 
 // 2.1.1把数据保存到session域中
 session.setAttribute("loginName", userName); // session对象的唯一标识"loginName" 唯一标识名称 userName
 //session.setMaxInactiveInterval(1*60*60*24*30); // session对象的有效时长 可以配置全局的有效时长
 
 //2.1.3跳转到用户主页
 response.sendRedirect(request.getContextPath() + "/IndexServlet"); //sendRedirect()重定向 getContextPath()请求路径
 }else{
 //2.2登录失败 请求重定向
 response.sendRedirect(request.getContextPath() + "/fail.html");
 }
 }
 
 protected void doPost(HttpServletRequest request, HttpServletResponse response)
 throws ServletException, IOException {
 response.setCharacterEncoding("utf-8");
 doGet(request,response);
 }
 
}

3.5、LogoutServlet.java

package cn.itcase.servlet;
 
import java.io.IOException;
 
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
 /**
 * 退出逻辑
 * */
public class LogoutServlet extends HttpServlet {
 
 
 public void doGet(HttpServletRequest request, HttpServletResponse response)
 throws ServletException, IOException {
 /**
 * 安全退出
 * 删除session对象中指定的loginName属性即可
 * 
 */
 HttpSession session = request.getSession(false);
 if(session != null){
 session.removeAttribute("loginName");
 }
 //返回登录页面
 response.sendRedirect(request.getContextPath() + "/Login.html");
 }
 
 
 public void doPost(HttpServletRequest request, HttpServletResponse response)
 throws ServletException, IOException {
 doGet(request,response);
 
 
 }
 
}

3.6、总结

知道了如何实现前端页面与后端的数据交互

疑惑:如果有多个用户难道还一个一个的去判断他存不存在么?

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Java FutureTask类使用案例解析

    Java FutureTask类使用案例解析

    这篇文章主要介绍了Java FutureTask类使用案例解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值析,需要的朋友可以参考下
    2020-04-04
  • SpringBoot基于RabbitMQ实现消息可靠性的方法

    SpringBoot基于RabbitMQ实现消息可靠性的方法

    RabbitMQ 提供了 publisher confirm 机制来避免消息发送到 MQ 过程中丢失,这种机制必须给每个消息指定一个唯一ID,消息发送到MQ以后,会返回一个结果给发送者,表示消息是否处理成功,本文给大家介绍了SpringBoot基于RabbitMQ实现消息可靠性的方法,需要的朋友可以参考下
    2024-04-04
  • Java中的ReentrantLock原理解析

    Java中的ReentrantLock原理解析

    这篇文章主要介绍了Java中的ReentrantLock原理解析,ReentrantLock是Java中的一个线程同步工具,它提供了比synchronized更灵活和强大的功能。它是一个可重入的互斥锁,意味着同一个线程可以多次获取该锁,而不会发生死锁,需要的朋友可以参考下
    2023-11-11
  • Java常用数字工具类 数字转汉字(1)

    Java常用数字工具类 数字转汉字(1)

    这篇文章主要为大家详细介绍了Java常用数字工具类,数字转汉字,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-05-05
  • Java程序中Doc文档注释示例教程

    Java程序中Doc文档注释示例教程

    这篇文章主要为大家介绍了Java程序中Doc文档注释的示例教程,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步
    2021-10-10
  • java数据结构与算法之插入算法实现数值排序示例

    java数据结构与算法之插入算法实现数值排序示例

    这篇文章主要介绍了java数据结构与算法之插入算法实现数值排序的方法,结合简单实例形式分析了插入算法的节点操作与排序相关实现技巧,需要的朋友可以参考下
    2016-08-08
  • Java编程将汉字转Unicode码代码示例

    Java编程将汉字转Unicode码代码示例

    偶然看到Unicode编码,觉得挺有意思,于是搜索了相关资料,准备学习学习,本文主要是一个Unicode编码的简单Java实现,需要的朋友可以了解下。
    2017-10-10
  • JavaWeb组件Servlet使用实例解析

    JavaWeb组件Servlet使用实例解析

    这篇文章主要介绍了JavaWeb组件Servlet使用实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-11-11
  • JAVA 实现磁盘文件加解密操作的示例代码

    JAVA 实现磁盘文件加解密操作的示例代码

    这篇文章主要介绍了JAVA 实现磁盘文件加解密操作的示例代码,帮助大家利用Java实现文件的加解密,感兴趣的朋友可以了解下
    2020-09-09
  • JAVA Swing实现窗口添加课程信息过程解析

    JAVA Swing实现窗口添加课程信息过程解析

    这篇文章主要介绍了JAVA Swing实现窗口添加课程信息过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-10-10

最新评论