利用servlet,jsp实现用户的登录,并且登录后显示用户名(连接数据库)

显示用户名这里是通过session传递数据,登陆成功后点击退出时要清除页面session。
使用软件:tomcat-8.5.34,mysql,java
我们一共需要写:

  • 位于src下的服务器端用于登录的LoginServlet,登陆成功后用于退出的SuccessServlet
  • 位于web下的前端登录页面login.html,登陆成功后的页面success.jsp,登录失败的页面error.html;
首先我们来写登录的服务器端LoginServlet
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;@WebServlet(urlPatterns = "/loginServlet")//此处为标记,让前端代码执行的时候走这个服务器
public class loginServlet extends HttpServlet {@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {try {System.out.println("进入方法");//获取页面请求的参数String name = req.getParameter("uname");String password = req.getParameter("upass");//获取数据库的连接(连接数据库)Class.forName("com.mysql.cj.jdbc.Driver");String url = "jdbc:mysql://localhost:3306/(这里写具体连接那个数据库,不带括号,直接写库名)?serverTimezone=UTC";String username = "这里写数据库的用户名";String passwd = "这里写数据库的密码";Connection con = DriverManager.getConnection(url, username, passwd);String sql = "select * from users";Statement sta = con.createStatement();ResultSet res = sta.executeQuery(sql);int t = 0;//登陆成功//数据库里记得要提前存好用户名和密码,否则无法登陆!while (res.next()) {//获取数据库表中每一列的值String user1 = res.getString("username");String pass1 = res.getString("password");if (name.equals(user1) && password.equals(pass1)) {t = 1;break;} else {t = 0;}}if (t == 1) {HttpSession session=null;//清除页面滞留的session,这样点击退出以后,下次登录确保重新获取新的用户名session = req.getSession();//获取sessionsession.setAttribute("uname",name);//将用户名传递给sessionreq.getRequestDispatcher("/success.jsp").forward(req, resp);//request.getRequestDispatcher()是请求转发,前后页面共享一个request ; 这个是在服务端运行的,对浏览器来说是透明的。这里能够实现页面的跳转} else if (t == 0) {req.getRequestDispatcher("/error.html").forward(req, resp);//跳转到登录失败的界面}} catch (Exception e) {e.printStackTrace();}}
}

下面是登陆成功后用于退出的SuccessServlet,点击退出按钮回到登录页面

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;@WebServlet(urlPatterns = "/SuccessServlet")
public class SuccessServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doPost(req, resp);}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {try {req.getRequestDispatcher("/login.html").forward(req, resp);HttpSession session=null;session = req.getSession();session.removeAttribute("uname");} catch (Exception e) {e.printStackTrace();}}
}
接下来我们来写登录的页面login.html
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>login</title>
</head>
<body>
<h1>登录</h1><form action="loginServlet" method="post">username:<input type="text" name="uname"><br>password:<input type="password" name="upass"><br><input type="submit" value="登录"/>
</form>
</body>
</html>
最后我们来写登录候的页面success.jsp及error.html
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>success</title><script>function jump(){window.location.href="/SuccessServlet";}</script>
</head>
<body>
<h1>欢迎你,${ sessionScope.uname}</h1>
<button onclick=javascript:jump()>退出</button>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>登录失败</title>
</head>
<body>
<h1>登录失败!!!!</h1>
</body>
</html>

到这里代码的部分就完成了,在部署Tomcat的时候,有一个index.jsp,这是Tomcat运行的首页,我们可以将login.html作为超链接写在index.jsp中,也可以将login.html的内容全部写在index.jsp中,就不需要login.html了,下面讲解怎么部署Tomcat:

首先点击idea右上角的edit configurations…

之后我们点击加号

向下翻,找到Tomcat server—local
选择好安装路径后,点击fix,然后点击应用,确定。

下面是我们的运行结果:



点击退出之后回到登录页面
登录失败:

实现用户的登录,并且登录后显示用户名相关推荐

  1. TS:解决Linux无法登录,输入密码后显示module is unknown报错(已解决)-2021.1.5

    TS:解决Linux无法登录,输入密码后显示module is unknown报错(已解决)-2021.1.5 1.报错现象 解决Linux无法登录,输入密码后显示module is unknown报 ...

  2. php怎么登录后显示用户名和密码错误,首页登录后怎么在首页显示用户名以及隐藏登录框?...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 index.php: 登录页面 用户名: 密码: 没有账号?立即注册 -------------------------- doaction.php: h ...

  3. 登录centos虚拟机后显示-bash-4.1

    http://zhidao.baidu.com/link?url=KwpGOdwFw1oxnL71pvPlfRgbRL_IuQeYRzIYJjiDb2SnX0dQye5yUXqHAGSyuD6u2nD ...

  4. SAP Spartacus 因为 refresh token 刷新令牌过期后显示用户重新登录页面的逻辑

    在 auth.interceptor.ts 里判断,token 是否过期: isExpiredToken: 通过服务器端返回的错误类型判断. 如果确实过期了,首先调用 handleExpiredTok ...

  5. PHP中select框不同用户登录,首页登录后怎么在首页显示用户名以及隐藏登录框?...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 index.php: 登录页面 用户名: 密码: 没有账号?立即注册 -------------------------- doaction.php: h ...

  6. 计算机登陆用户显示黑屏,win7系统电脑开机输入登录账号密码后出现黑屏的原因分析及两种解决方法...

    一位用户说win7开机输入登录账号密码后出现黑屏,这是怎么回事呢?这种情况怎么解决呢?下面脚本之家的小编就带来win7系统电脑开机输入登录账号密码后出现黑屏的原因分析及解决方法,一起来看看吧. 故障原 ...

  7. php登陆后显示昵称,php登录后怎么显示名字

    PHP session 变量用于存储关于用户会话(session)的信息,或者更改用户会话(session)的设置.Session 变量存储单一用户的信息,并且对于应用程序中的所有页面都是可用的. 我 ...

  8. 小程序登录问题--登录函数getUserInfo()写在app.js中,首次加载无法获取后台处理过的用户的信息,刷新一次后就可以获取的解决

    遇到这个问题,是因为自己需要写个登录的功能.需要用户自己点击登录后,才登录. 登录的功能函数写在app.js中,现在需要在user.js中使用这个全局的函数,来登录并获取用户信息.但是出现的问题就是, ...

  9. 流放之路进去后显示无法连接登入服务器,流放之路此账号目前无法登录游戏

    游戏流放之路玩不了怎么办_? 找了之前的功能补丁打上去,还是不行最后去官网下载了最近两个版本的补丁包.发现直接安装补丁没办法,游戏会一直要求装上一个版本.方法如下:1.到下官网载更新包(http:// ...

最新文章

  1. [深入理解Android卷一全文-第九章]深入理解Vold和Rild
  2. HDU 5001 概率DP || 记忆化搜索
  3. MySQL创建用户(CREATE USER)
  4. sql server 2008学习11 UDF用户自定义函数
  5. android ndk 读短信,Android NDK之发送短信
  6. python怎么创建一个二维数组_python 创建二维数组的方法
  7. 深入理解Linux守护进程
  8. 如何使用Kotlin构建具有在线状态的Android Messenger应用
  9. Objective-C的self.用法的一些总结
  10. 根据自己平时的经验写的针对SQLSERVER操作的通用类库
  11. Linux下使用GDB进行调试
  12. 剑指offer面试题[34]丑数
  13. MyBaties入门
  14. JAVA实现QQ登录、注册、修改密码等功能(美化版)
  15. 思考像微信QQ视频通话最小化后悬浮展现实现思路
  16. i7 10700k和i9 9900k对比哪个好
  17. 抽奖系统小程序,多方式真实展示抽奖功能
  18. html滚轮下拉动画,html5+css3齿轮滚动动画代码
  19. python格式jpg转换png(批量处理,深度24,尺寸不变)
  20. 大象转身 | 沃尔玛搅局社区团购

热门文章

  1. 《A Novel Approach to 3-D Gaze Tracking Using Stereo Cameras》论文阅读
  2. r720支持多少频率的内存吗_高频内存对游戏帧数影响大吗?2400MHz和3200MHz频率内存对比实测...
  3. 升级扩散模型!一步成图,1秒18张,OpenAI开源
  4. Python 笑脸抓拍
  5. 关于阿里云主机万网虚拟主机建立多个网站教程,很实用!
  6. 代码故障检测列表(持续更新)
  7. 融入城市路网的乡村道路问题及对策
  8. 实验五 java gui
  9. 易创索讯:SEM竞价推广建立账户麻烦吗?
  10. python实践——时间序列分析建模理论及代码实现