java进阶案例下载_登录案例java实现 ---- Java进阶篇
目录
一、环境搭建
二、目录结构
三、代码示例
3.1、fail.html页面
3.2、Login.htm页面
3.3、IndexServlet.java
3.4、LoginServlet.java
3.5、LogoutServlet.java
3.6、总结
一、环境搭建
JDK1.8 + Tomcat1.8
二、目录结构
三、代码示例
3.1、fail.html页面
faill.html
亲, 你的用户名或密码输入有误!请重新输入!
返回登录页面
3.2、Login.htm页面
Login.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 = "欢迎回来," + loginName + ",安全退出";
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进阶案例下载_登录案例java实现 ---- Java进阶篇相关推荐
- WEB自动化_登录案例以及免登录的方式
说明:这是一个WEB自动化_简单的登录案例 登录案例 from selenium import webdriver 1.创建浏览器驱动对象 driver = webdriver.Chrome(&quo ...
- 无忧考吧2017二级java_无忧考吧二级JAVA超级模拟软件下载_无忧考吧二级JAVA超级模拟软件官方下载-太平洋下载中心...
无忧考吧二级JAVA超级模拟软件是一款可以帮助用户朋友来学习计算机二级java语言考试的软件,使用这款二级java模拟考试软件可以帮助用户快速的掌握学习内容和操作逻辑,让你顺利的通过二级java考试. ...
- java ee4.8下载_在WildFly 8.2中修补焊接3 – Java EE 8的第一个实验RI
java ee4.8下载 Java EE 8一直在发展,并且已经提出了几个新的组件JSR. JSR 365将定义CDI 2.0的规范. 红帽已经开始开发Weld 3的实现原型, Alpha3最近发布了 ...
- 我的世界java启动程下载_我的世界JAVA下载 运行必备官方下载地址
我的世界这款游戏的正常运行需要Java的支持,Java 是一门编程语言和一个运行平台.不像其它的如 C++ 的语言,Java 并不是直接运行在硬件上,而是运行在一个叫作 JVM 的虚拟机里.. Min ...
- 我的世界java服核心下载_我的世界java版
我的世界java版手机下载是一款高自由度的沙盒模拟建造游戏,这个版本是Java版本,增加了很多不同的游戏生物,还有超多好玩的游戏内容,感兴趣的玩家们千万不要错过了,快来下载这款我的世界java版1.1 ...
- java 1.3 下载_我的世界Java版1.16.3
我的世界Java版1.16.3是一款经过一系列测试终于在今天与大家见面的正式版哦,这款版本游戏里保证让玩家们感受到最稳定.最流畅的游戏体验,另外玩家们可以与自己的小伙伴一起感受不一样的游戏乐趣,感兴趣 ...
- java护照号码校验_学无止境之小白学java……第001天
学习主题:预科阶段 对应视频: http://www.itbaizhan.cn/course/id/18.html 对应作业: 1. 为什么需要学编程,什么样的人可以做程序员? 编程是现实逻辑的表达, ...
- java 并发编程多线程_多线程(一)java并发编程基础知识
线程的应用 如何应用多线程 在 Java 中,有多种方式来实现多线程.继承 Thread 类.实现 Runnable 接口.使用 ExecutorService.Callable.Future 实现带 ...
- java引用公共类_使用键引用从Java公共类获取值 - java
我们有一个Java公共类, public class Test { public class ob1 { public static final String test = "T1T1&qu ...
- java azure blob 查询_快速入门:适用于 Java 的 Azure Blob 存储客户端库 v8 | Microsoft Docs...
您现在访问的是微软AZURE全球版技术文档网站,若需要访问由世纪互联运营的MICROSOFT AZURE中国区技术文档网站,请访问 https://docs.azure.cn. 快速入门:使用 Jav ...
最新文章
- python线程,进程,协程
- 通过wsdl2java工具生成客户端段代码(wsdl2java -p cn.com.css.misps.graph.webservice.impl -d F:\src -all http://10.)
- 【Alljoyn】 Alljoyn学习笔记六 Alljoyn基本概念
- TCP/IP 网络编程 (三)
- Golang 常见设计模式之装饰模式
- Android开发之非常好用的日志工具类(公司项目挖出来的)
- ES6-1 ES6版本过渡历史
- Summer Training day4上帝与集合的正确用法 欧拉函数+降幂公式
- python实践作业_实践-python实现假设检验
- SimpleFs文件系统初步一(编译并挂载)
- PreferenceScreen修改背景颜色
- CrossApp更新至0.3.3,推出JS体验版
- 【Unity2D】制作游戏主菜单MainMenu
- Linux 服务器配置 ASF 云挂卡
- Windows语言栏不见了,解决办法。任务栏的语言栏没了、不显示了。语言栏异常导致不能输入中文。默认中文输入法设置。
- 怎样选择ADC芯片?
- 互联网摸鱼日报(2022-10-08)
- 用指向指针的指针方法对n个整数排序输出
- 岚图汽车中大型智能电动SUV完成高温高原严苛测试
- c语言编写银行业务模拟程序,C语言数据结构实现银行模拟
热门文章
- 线性空间的向量组与数量矩阵的乘法
- adc分辨率和精度的区别_STM32学习笔记—ADC采集数据常见问题
- 穿越迷宫的函数c语言,数据结构课外实践题库(26页)-原创力文档
- linux系统怎么启动服务器,Linux操作系统的启动步骤详细说明
- 五大特点_皮肤肤质五大分类及其特点
- WPF:将Office文档、任意类型文件嵌入到EXE可执行文件中
- POJ 2393 Yogurt factory
- getBoundingClientRect方法获取元素在页面中的相对位置
- apache+nginx 实现动静分离
- Requirement-Driven Linux Shell Programming