Java 使用 JSP + JDBC,实现一个简单的登陆程序

本贴最后更新于 2106 天前,其中的信息可能已经时异事殊

本次将不使用 ide,目录结构如下:
imagepng

我们需要编写 4 个页面,分别是:登陆窗口页面,信息校验页面,登陆成功页面,登陆失败页面

登陆窗口页面:

<html>

<head>
    <title>登录测试title>
    <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
head>

<body>
<center>
    <h1>欢迎登录
  <h1>

            <hr>
            <form action="login_check.jsp" method="post">
                <table border="1">
                    <tr>
                        <td colspan="2">
                            用户登录
  td>
                    tr>
                    <tr>
                        <td>
                            用户名:
                        td>
                        <td><input type="text" name="username">td>
                    tr>
                    <tr>
                        <td>密码:td>
                        <td><input type="password" name="password">td>
                    tr>
                    <tr>
                        <td colspan="2">
                            <input type="submit" value="登录">
                            <input type="reset" value="重置">
                        td>
                    tr>
                table>
            form>
center>
body>
html>

信息校验页面:

<%@page contentType="text/html"%>
<%@page pageEncoding="GBK"%>
<%@page import="java.sql.*"%>

 html>
<html>

<head>
    <title>登录验证title>

<body>
<center>
    <hl>登录操作hl>
    <hr>
    <%!//定义若干个数据库常量
  public static final String DBDRIVER = "org.gjt.mm.mysql.Driver";
    public static final String DBURL = "jdbc:mysql://127.0.0.1:3306/test";
    public static final String DBUSER="root";
    public static final String DBPASS="123456";
    %>

    <%
    Connection conn = null; //数据库连接
  PreparedStatement pstmt=null; // 数据库预处理操作
  ResultSet rs = null ;//查询要处理结杲集
  boolean flag = false ;//保存标记
  String name = null ;//保存真实姓名
  %>
    <% try{
    %>
    <%
    Class.forName(DBDRIVER);
    conn = DriverManager.getConnection(DBURL,DBUSER,DBPASS);
    String sql = "SELECT username FROM user WHERE username=? AND password=?";
    pstmt = conn.prepareStatement(sql);
    pstmt.setString(1,request.getParameter("username"));
    pstmt.setString(2,request.getParameter("password"));
    rs = pstmt.executeQuery(); // 查询
  if(rs.next()){ //如杲有数据,则可以执行
  flag = true ; //表示登陆成功
  name = rs.getString(1);
    out.println("test");
    }
    %>

    <%
    }catch(Exception e) {
    e.printStackTrace();
    }
    finally{
    try{
    rs.close();
    pstmt.close();
    conn.close();
    } catch(Exception e){}
    }
    %>
    <%
    if(flag)
    { // 登陆成功
  out.println("success");
    %>
    <jsp:forward page="login_success.jsp">
        <jsp:param name="uname" value="<%=name%>"/>
    jsp:forward>
    <%
    } else { //登陆失败
  %>
    <jsp:forward page="login_fail.html"/>
    <%
    }
    %>
center>
body>

html>

登陆成功页面:

<%@page contentType="text/html"%>
<%@page pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>登录成功,欢迎!</title>
        
    </head>
    <body>
    	<center>
<hl>登录操作</hl>
<h2>登录成功</h2>
<h2>欢迎<font color="red"><%=request.getParameter("uname")%></font>光临! </h2>
</center>

 	</body>
</html>

登陆失败页面:

<%@page contentType="text/html"%>
<%@page pageEncoding="GBK"%>
<html>
	<head>
		<meta>
		<title>登录失败</title>
	</head>
	<body>
		 <center>
<h1>登录操作</h1>
<h2>登录失败,请重新<a href="login.html">登录</a></h2>
</center>

	</body>
</html>

数据库使用 mysql,示例的 sql 语句,创建数据库:

SET FOREIGN_KEY_CHECKS=0;

-- ----------------------------
-- Table structure for user
-- ----------------------------
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
  `userid` varchar(30) NOT NULL DEFAULT '',
  `username` varchar(30) DEFAULT NULL,
  `password` varchar(20) DEFAULT NULL,
  PRIMARY KEY (`userid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of user
-- ----------------------------
INSERT INTO `user` VALUES ('1', 'test', '123456');
INSERT INTO `user` VALUES ('2', 'admin', '123456');

现在下载 tomcat 解压缩版:拷贝\webapps\ROOT 下的
imagepng
到当前编写的网页目录,这一步是复制原始的 web.xml 文件过来,也可以自己手动编写。

在 tomcat/conf/server.xml 中添加配置:

<Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">
<!--主要是添加这一个-->			
<Context path="/login" docBase="D:\test"/>

        <!-- SingleSignOn valve, share authentication between web applications
             Documentation at: /docs/config/valve.html -->
        <!--
        <Valve className="org.apache.catalina.authenticator.SingleSignOn" />
        -->

        <!-- Access log processes all example.
             Documentation at: /docs/config/valve.html
             Note: The pattern used is equivalent to using pattern="common" -->
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log" suffix=".txt"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />

      </Host>

在 tomcat/lib 下添加 JDBC mysql 连接驱动。
imagepng

完成,现在就启动 tomcat 容器!

访问项目路径:http://127.0.0.1:8080/login/login.html

imagepng

输入用户名和密码:

imagepng

成功登陆!

本文由 xynling 原创,转载请声明转载自 ynlflixin 的个人博客:http://abc.airenti.xin

  • Java

    Java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由 Sun Microsystems 公司于 1995 年 5 月推出的。Java 技术具有卓越的通用性、高效性、平台移植性和安全性。

    3169 引用 • 8208 回帖
  • Web
    115 引用 • 432 回帖 • 8 关注

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...

推荐标签 标签

  • 思源笔记

    思源笔记是一款隐私优先的个人知识管理系统,支持完全离线使用,同时也支持端到端加密同步。

    融合块、大纲和双向链接,重构你的思维。

    20156 引用 • 77717 回帖
  • SpaceVim

    SpaceVim 是一个社区驱动的模块化 vim/neovim 配置集合,以模块的方式组织管理插件以
    及相关配置,为不同的语言开发量身定制了相关的开发模块,该模块提供代码自动补全,
    语法检查、格式化、调试、REPL 等特性。用户仅需载入相关语言的模块即可得到一个开箱
    即用的 Vim-IDE。

    3 引用 • 31 回帖 • 82 关注
  • 又拍云

    又拍云是国内领先的 CDN 服务提供商,国家工信部认证通过的“可信云”,乌云众测平台认证的“安全云”,为移动时代的创业者提供新一代的 CDN 加速服务。

    21 引用 • 37 回帖 • 523 关注
  • WebComponents

    Web Components 是 W3C 定义的标准,它给了前端开发者扩展浏览器标签的能力,可以方便地定制可复用组件,更好的进行模块化开发,解放了前端开发者的生产力。

    1 引用 • 4 关注
  • Caddy

    Caddy 是一款默认自动启用 HTTPS 的 HTTP/2 Web 服务器。

    10 引用 • 54 回帖 • 140 关注
  • 音乐

    你听到信仰的声音了么?

    60 引用 • 510 回帖 • 1 关注
  • Solidity

    Solidity 是一种智能合约高级语言,运行在 [以太坊] 虚拟机(EVM)之上。它的语法接近于 JavaScript,是一种面向对象的语言。

    3 引用 • 18 回帖 • 353 关注
  • JRebel

    JRebel 是一款 Java 虚拟机插件,它使得 Java 程序员能在不进行重部署的情况下,即时看到代码的改变对一个应用程序带来的影响。

    26 引用 • 78 回帖 • 624 关注
  • 学习

    “梦想从学习开始,事业从实践起步” —— 习近平

    163 引用 • 473 回帖
  • Logseq

    Logseq 是一个隐私优先、开源的知识库工具。

    Logseq is a joyful, open-source outliner that works on top of local plain-text Markdown and Org-mode files. Use it to write, organize and share your thoughts, keep your to-do list, and build your own digital garden.

    5 引用 • 62 回帖
  • WebClipper

    Web Clipper 是一款浏览器剪藏扩展,它可以帮助你把网页内容剪藏到本地。

    3 引用 • 9 回帖 • 3 关注
  • IDEA

    IDEA 全称 IntelliJ IDEA,是一款 Java 语言开发的集成环境,在业界被公认为最好的 Java 开发工具之一。IDEA 是 JetBrains 公司的产品,这家公司总部位于捷克共和国的首都布拉格,开发人员以严谨著称的东欧程序员为主。

    180 引用 • 400 回帖
  • 爬虫

    网络爬虫(Spider、Crawler),是一种按照一定的规则,自动地抓取万维网信息的程序。

    106 引用 • 275 回帖
  • Flume

    Flume 是一套分布式的、可靠的,可用于有效地收集、聚合和搬运大量日志数据的服务架构。

    9 引用 • 6 回帖 • 613 关注
  • Gitea

    Gitea 是一个开源社区驱动的轻量级代码托管解决方案,后端采用 Go 编写,采用 MIT 许可证。

    4 引用 • 16 回帖 • 1 关注
  • 周末

    星期六到星期天晚,实行五天工作制后,指每周的最后两天。再过几年可能就是三天了。

    14 引用 • 297 回帖
  • gRpc
    11 引用 • 9 回帖 • 49 关注
  • 创业

    你比 99% 的人都优秀么?

    83 引用 • 1398 回帖
  • PWL

    组织简介

    用爱发电 (Programming With Love) 是一个以开源精神为核心的民间开源爱好者技术组织,“用爱发电”象征开源与贡献精神,加入组织,代表你将遵守组织的“个人开源爱好者”的各项条款。申请加入:用爱发电组织邀请帖
    用爱发电组织官网:https://programmingwithlove.stackoverflow.wiki/

    用爱发电组织的核心驱动力:

    • 遵守开源守则,体现开源&贡献精神:以分享为目的,拒绝非法牟利。
    • 自我保护:使用适当的 License 保护自己的原创作品。
    • 尊重他人:不以各种理由、各种漏洞进行未经允许的抄袭、散播、洩露;以礼相待,尊重所有对社区做出贡献的开发者;通过他人的分享习得知识,要留下足迹,表示感谢。
    • 热爱编程、热爱学习:加入组织,热爱编程是首当其要的。我们欢迎热爱讨论、分享、提问的朋友,也同样欢迎默默成就的朋友。
    • 倾听:正确并恳切对待、处理问题与建议,及时修复开源项目的 Bug ,及时与反馈者沟通。不抬杠、不无视、不辱骂。
    • 平视:不诋毁、轻视、嘲讽其他开发者,主动提出建议、施以帮助,以和谐为本。只要他人肯努力,你也可能会被昔日小看的人所超越,所以请保持谦虚。
    • 乐观且活跃:你的努力决定了你的高度。不要放弃,多年后回头俯瞰,才会发现自己已经成就往日所仰望的水平。积极地将项目开源,帮助他人学习、改进,自己也会获得相应的提升、成就与成就感。
    1 引用 • 487 回帖
  • Eclipse

    Eclipse 是一个开放源代码的、基于 Java 的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。

    75 引用 • 258 回帖 • 632 关注
  • Q&A

    提问之前请先看《提问的智慧》,好的问题比好的答案更有价值。

    7017 引用 • 31714 回帖 • 220 关注
  • H2

    H2 是一个开源的嵌入式数据库引擎,采用 Java 语言编写,不受平台的限制,同时 H2 提供了一个十分方便的 web 控制台用于操作和管理数据库内容。H2 还提供兼容模式,可以兼容一些主流的数据库,因此采用 H2 作为开发期的数据库非常方便。

    11 引用 • 54 回帖 • 648 关注
  • Linux

    Linux 是一套免费使用和自由传播的类 Unix 操作系统,是一个基于 POSIX 和 Unix 的多用户、多任务、支持多线程和多 CPU 的操作系统。它能运行主要的 Unix 工具软件、应用程序和网络协议,并支持 32 位和 64 位硬件。Linux 继承了 Unix 以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。

    923 引用 • 936 回帖
  • Maven

    Maven 是基于项目对象模型(POM)、通过一小段描述信息来管理项目的构建、报告和文档的软件项目管理工具。

    186 引用 • 318 回帖 • 330 关注
  • Mac

    Mac 是苹果公司自 1984 年起以“Macintosh”开始开发的个人消费型计算机,如:iMac、Mac mini、Macbook Air、Macbook Pro、Macbook、Mac Pro 等计算机。

    164 引用 • 594 回帖
  • 阿里巴巴

    阿里巴巴网络技术有限公司(简称:阿里巴巴集团)是以曾担任英语教师的马云为首的 18 人,于 1999 年在中国杭州创立,他们相信互联网能够创造公平的竞争环境,让小企业通过创新与科技扩展业务,并在参与国内或全球市场竞争时处于更有利的位置。

    43 引用 • 221 回帖 • 187 关注
  • HTML

    HTML5 是 HTML 下一个的主要修订版本,现在仍处于发展阶段。广义论及 HTML5 时,实际指的是包括 HTML、CSS 和 JavaScript 在内的一套技术组合。

    103 引用 • 294 回帖 • 1 关注