一、前言:

做网站开发,要求有多种搭配方式,前台技术可以使用PHP、ASP、JSP、ASP.NET、CGI等任何一种;

需要用到的基础语言用的最多的就是HTML/CSS、JS、JAVA、XML这些了,HTML/CSS+JS可以实现对界面的描绘渲染,而JAVA则可以做后台数据处理,XML也是可以当作传输数据的介质(思考:XML比HTML强大这么多,为什么它没能替代HTML?);

这篇文章通过简单的JSP文件实现登陆界面,所以只用到了以下技术:

  1. HTML/CSS,简单演示就不做CSS样式了,可自行学习,改进源代码
  2. JavaScript
  3. MYSQL使用(借助可视化窗口即可)
  4. JDBC连接数据库
  5. (前往w3c/菜鸟教程学习吧)

项目中用到多种HTML标签,例如<input>、<form>、<table>等,项目文件均采用.JSP文件,如果有遇到标签属性不理解的状况请自行百度(不需要死记硬背,用的多了自然便可记住);

里面用到的内置对象以及JDBC模块本人也是知之甚少,如有用到(如:response)而且解释有误望朋友批评指正哦!

本项目中所用工具如下:

  1. Myeclipse/eclipse(J2EE版本)
  2. MYSQL5.7+SQLyog
  3. MYSQL的JDBC驱动包(点击下载)
  4. JSTL库(点击下载)
  5. chrome/IE(F12键)
  6. Tomcat9.0
  7. jdk1.8

也可以尝试其他数据库和工具哦!下面进入项目

二、配置Tomcat服务器

需要先配置jdk环境变量并且安装Tomcat,可能需要制定jre目录,这里一般都是自动检测出来的,前往不要当作tomcat安装目录给更改了,保持默认下一步才是选择安装目录,安装完毕之后的Tomcat目录是不能随便移动或更名的,否则严重影响Tomcat服务开启失败。

打开eclipse,根据下面链接配置server项即可,注意选择Tomcat版本的时候请根据自己的版本适当调整,我总是会看到有人装的是Tomcat9.0却当低版本用,让人无语的很,有时eclipse版本不同可能界面有所区别,请自行甄别。

百度经验:【查看】

三、创建项目firstproject

打开eclipse,创建动态web项目【Dynamic Web Project】,输入名称后点击【完成】,项目目录结构大概是这个样子的:

目录WebRoot是网站的根目录,我们创建的页面文件都要放在这个目录下面才能正确被Tomcat加载并显示出来,WEB-INF目录中的lib目录用来存放此项目中用到的jar包,在这里用到了三个jar文件,就是上面下载的JDBC驱动包和jstl包,复制到lib中,并且添加到build path:右键jar包-build path-add to build path。

四、登陆页面login.jsp

文件内容如下:

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<fmt:requestEncoding value="UTF-8"/>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>用户登陆</title>
</head>
<body> <h2 align="center">快速登录</h2>
<form name="form1" action="login_validate.jsp" method="post"> <table align="center">
<tr>
<td>用户名:</td>
<td><input type="text" name="username1" value="${param.username1}"></td>
</tr>
<tr>
<td>密码:</td>
<td><input type="password" name="password1"></td>
</tr>
<tr>
<td><input type="submit" value="登陆"></td>
<td><input type="reset" value="取消"></td>
</tr>
</table>
</form>
</body>
</html>

第1行:<%@ page%>指令作用于整个jsp页面,指定jsp页面脚本语言用的是"java",文本类型为“富文本”,编码方式为“UTF-8”;

第2行:引用了标准标签库JSTL,并设置前缀为fmt;

第3行:<fmt:requestEncoding>标签用来指定返回给Web应用程序的表单编码类型,如果不这么做的话很有可能让我们提交的数据传到下一个页面的时候就变成了乱码,具体请参见【菜鸟教程】;

第4行:加入HTML4的DTD约束,这么做将会使一些HTML5的东西出现警告!可以删掉,这是自动生成的;

第8行:设置页面标题“登陆界面”;

第12行:二级标题“快速登陆”,对齐方式“居中”,一共有6级标题(h1-h6);

第13行:form表单,名称为“form1”,提交表单后执行的动作是跳转到“login_validate.jsp”且将数据提交给这个页面做验证处理,以“post”方式提交;

第15行:写一个table表,tr构建一行,td构建一列;包含了文本框、密码框、提交按钮以及重置按钮;

第18行:文本框“username1”,用来输入用户名,他的值取上一个页面提交到此页面的“username1”元素。如果用户登录不成功会提示你重新登陆,此时点击重新登录的话,回到此页面的时候是记忆了上次输入的用户名;

五、登陆验证页面login_validate.jsp

文件内容如下:

<%@page import="java.net.URLEncoder"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="java.sql.*" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<fmt:requestEncoding value="UTF-8"/>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>验证页面</title>
</head>
<body>
<% //获取登录时提交的用户名密码,web
String id = request.getParameter("username1");
String pwd = request.getParameter("password1");
request.setAttribute("username1",id);
/* 解决问题,先要研究问题,URL传中文参数为什么会出现乱码? 原因:Http请求传输时将url以ISO-8859-1编码,服务器收到字节流后默认会以ISO-8859-1编码来解码成字符流(造成中文乱码) 解决办法:我们需要把request.getParameter(“参数名”)获取到的字符串先用ISO-8859-1编码成字节流,然后再将其用utf-8解码成字符流 */ String driver = "com.mysql.jdbc.Driver"; //URL指向要访问的数据库名test1 String url = "jdbc:mysql://127.0.0.1:3306/javaweb?characterEncoding=utf8&useSSL=false"; //MySQL配置时的用户名 String user = "root"; //Java连接MySQL配置时的密码 String password = "root"; try { //1 加载驱动程序 Class.forName(driver); //2 连接数据库 Connection conn = DriverManager.getConnection(url, user, password); //3 用来执行SQL语句 Statement statement = conn.createStatement(); //要执行的SQL语句 String sql = "select * from login"; ResultSet rs = statement.executeQuery(sql);
String u = null;
String p = null;
while(rs.next()) {
u = rs.getString("userName");
p = rs.getString("passWord");
if(u.equals(id) && p.equals(pwd)) {
String index="index.jsp?username1="+URLEncoder.encode(id,"utf-8");
out.println("登陆成功!5s后跳转跳转到<a href="+index+">首页</a>");
response.addHeader ("refresh", "5;URL=index.jsp?username1="+URLEncoder.encode(id,"utf-8"));
//response.sendRedirect("index.jsp?username1="+URLEncoder.encode(id,"utf-8"));
rs.close();
conn.close();
return;
}
}
rs.close();
conn.close();
out.println("用户名或密码错误!");
} catch (ClassNotFoundException e) {
System.out.println("Sorry,can`t find the Driver!");
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
%>
<form>
<input type="hidden" name="username1" value="${param.username1}">
<input type="button" value="重新登陆" onclick="this.form.action='login.jsp';this.form.submit();">
</form>
</body>
</html>

说明:

  1. 这里用到了JDBC驱动包记得导入;
  2. user和password适当地更改为自己地MYSQL系统地用户名密码;
  3. 字符串url中地”javaweb“是我新建的数据库名称,编码方式为UTF-8,“useSSL=false”不加的话可能会导致连接数据库的时候提示需要ssl认证而连接失败。
  4. 字符串sql中的login是javaweb中的一个表名,里面存放了两个属性userName和passWord,根据自己的实际适当更改。
  5. 我用的while循环来判断此用户是否在login表中,也可以直接用“select * from login where userName=id and passWord=pwd”语句直接查找能与id和pwd同时匹配的条目。
  6. request是jsp的内置对象,使用它的getParameter()函数可以获得提交页面提交上来的信息,“username1”和“password1”是login.jsp中form表单中text和password框的对应的id号,点击submit按钮可以提交给action属性指定的页面处理。
  7. 86-89行写了一个form表单属性,$(param.username1)也可以获取username1的值,为了在重新登录的时候保留用户名,将它存在input里面,type="hidden"可以使它隐藏。按钮button的onclick属性指定点击按钮执行的动作。
  8. 如果登陆成功,会有一个等待时间来跳转到主页,
    response.addHeader ("refresh", "5;URL=index.jsp?username1="+URLEncoder.encode(id,"utf-8"));
    

    使用此方法可以设置页面定时刷新以及重定向,URL后面直到问号即为重定向位置,?之后将id编码后赋值给username1传递到index.jsp页面,编码是必须的,否则会遇到中文乱码。(相关内容1|相关内容2)

  9. 数据库使用完之后记得断开连接;

六、主页index.jsp

还是直接上代码:

<%@page import="java.net.URLDecoder"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<fmt:requestEncoding value="UTF-8"/>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>首页</title>
</head>
<body>
<center>
<font size=14 style="font-weight:bold">
亲爱的 <% out.println(URLDecoder.decode(request.getParameter("username1"), "utf-8")); %> ,你好!
</font>
</center>
</body>
</html>

内容简单的很,就一个显示用户名的效果,<%%>中间可以嵌入java代码,对上一页面传来的参数username1进行解码输出。

到此为止,所有代码已经输入完毕!

选择在Tomcat中运行login.jsp即可在浏览器中显示效果。在这里我再附上我的数据库结构:

使用SQLlog连接数据库后可以查看自己的数据库详细信息。

七、学习时间安排

由于课程紧张,时间不是很充裕,不过我想关于“软件工程”的作业我会积极去做,平均每日一个小时写代码是少不了的,偷偷的看了一下前端工程师面试的标准,发现自己差得很多,所以不多说,干吧!

公告:可能是由于博客发表转换成html的问题,文章中的</body></html>标签不可显示,请复制代码的童鞋自动加上;而且代码中的<tbody></tbody>标签也是自动出现的,请自行去除!

&amp;#127538;Eclipse通过jdbc连接数据库制作简单登陆界面【新手必看】的更多相关文章

  1. Eclipse通过jdbc连接数据库制作简单登陆界面

    一.前言: 做网站开发,要求有多种搭配方式,前台技术可以使用PHP.ASP.JSP.ASP.NET.CGI等任何一种: 需要用到的基础语言用的最多的就是HTML/CSS.JS.JAVA.XML这些了, ...

  2. 🈲Eclipse通过jdbc连接数据库制作简单登陆界面【新手必看】

    一.前言: 做网站开发,要求有多种搭配方式,前台技术可以使用PHP.ASP.JSP.ASP.NET.CGI等任何一种: 需要用到的基础语言用的最多的就是HTML/CSS.JS.JAVA.XML这些了, ...

  3. 用asp连接Access数据库 制作简单登陆界面

    [题外话:最近做Internet作业,在这写一个适合初学入门的ASP连接ACCESS数据库做登陆界面的简单的例子,以慰藉我一口气把以前做过的系统中的PHP代码全改成ASP代码来临时应付作业的心情... ...

  4. Git 安装与简单使用(新手必看)

    1.安装git,默认下一步下一步等待安装完成 2.设置全局账号 安装之后去快速启动栏点击GitBash git config --global user.name "xiefeng" ...

  5. JSP制作简单登陆

    JSP制作简单登陆界面 运行环境 eclipse+tomcat+MySQL 不知道的可以参考Jsp运行环境--Tomcat 项目列表 这里我先把jsp文件先放在Web-INF外面访问 需要建立的几个文 ...

  6. tkinter如何设置界面消失 当制作一个登陆界面时,登陆成功之后,如何让登陆界面本身消失

    tkinter如何设置界面消失 当制作一个登陆界面时,登陆成功之后,如何让登陆界面本身消失 if querySQL.checkAll():#用户名和密码都输入正确 self.root.withdraw ...

  7. jdbc连接数据库以及简单实现(普通JDBC方法实现和连接池方式实现)

    @ 目录 总结内容 1. 基本概念 jdbc的概念 2. 数据库连接 数据库的连接 DAO层思想 重构设计 3. 事务 概念 事务的ACID属性 事务的操作 4. 连接池 为什么要使用连接池 连接池分 ...

  8. JDBC第一篇--【介绍JDBC、使用JDBC连接数据库、简单的工具类】

    1.什么是JDBC JDBC全称为:Java Data Base Connectivity,它是可以执行SQL语句的Java API 2.为什么我们要用JDBC 市面上有非常多的数据库,本来我们是需要 ...

  9. JDBC【介绍JDBC、使用JDBC连接数据库、简单的工具类】

    1.什么是JDBC JDBC全称为:Java Data Base Connectivity,它是可以执行SQL语句的Java API 2.为什么我们要用JDBC 市面上有非常多的数据库,本来我们是需要 ...

  10. eclipse通过JDBC连接数据库不成功

    配置时出现以下错误: java.lang.ClassNotFoundException:org.gjt.mm.mysql.Driver 则肯定是CLASSPATH设置有问题,也有可能是命令行方式没有重 ...

随机推荐

  1. JS中数值类型的本质

    一.JS中的数值类型 众所JS爱好友周知,JS中只有一个总的数值类型--number,它包含了整型.浮点型等数值类型.其中,浮点数的实现思想有点复杂,它把一个数拆成两部分来存储.第一部分是有效位数,也 ...

  2. Ubuntu安装Docker及镜像加速器

    一.安装Docker sudo apt-get update && sudo apt-get install -y apt-transport-https ca-certificate ...

  3. 所有selenium相关的库

    通过爬虫 获取 官方文档库 如果想获取 相应的库 修改对应配置即可 代码如下 from urllib.parse import urljoin import requests from lxml im ...

  4. 「浙江理工大学ACM入队200题系列」问题 J: 零基础学C/C++83——宁宁的奥数路

    本题是浙江理工大学ACM入队200题第八套中的J题 我们先来看一下这题的题面. 题面 题目描述 宁宁参加奥数班,他遇到的第一个问题是这样的:口口口+口口口=口口口,宁宁需要将1~9 九个数分别填进对应 ...

  5. 孙荣辛|大数据穿针引线进阶必看——Google经典大数据知识

    大数据技术的发展是一个非常典型的技术工程的发展过程,荣辛通过对于谷歌经典论文的盘点,希望可以帮助工程师们看到技术的探索.选择过程,以及最终历史告诉我们什么是正确的选择. 何为大数据   "大 ...

  6. Python学习之实例2

    一.根据输入的各科成绩统计学生成绩是否达标 1 (背景:输入学生数量,以及各个学生语文.数学.英语.历史四科的成绩,如果总成绩小于 240,则成绩不达标,否则成绩合格) 2 3 #coding=utf ...

  7. 如何使用ModelBox快速提升AI应用性能?

    摘要:在开发初期开发者往往聚焦在模型的精度上,性能关注较少,但随着业务量不断增加,AI应用的性能往往成为瓶颈,此时对于没有性能优化经验的开发者来说往往需要耗费大量精力做优化性能,本文为开发者介绍一些常 ...

  8. IOT黑客入门篇之初探Badusb

    什么是Badusb?   BadUSB是一种使用带有恶意软件编程的USB设备的计算机安全攻击.例如,USB 闪存驱动器可以包含可编程的Intel 8051微控制器,该微控制器可以重新编程,将USB闪存 ...

  9. 第2-4-7章 docker安装WorkBench-规则引擎Drools-业务规则管理系统-组件化-中台

    目录 8. WorkBench 8.1 WorkBench简介 8.2 安装方式 8.2.1 传统方式安装 8.2.2 docker安装drools workbench 8.3 使用方式 8.3.1 ...

  10. 【终极解决办法】pyinstaller打包exe没有错误,运行exe提示Failed to execute script 'mainlmageWindows' due tounhandled exception: No module named 'docx'

    一.通过pyinstaller打包exe可执行文件,由于我的py是多个,所以要先生成spec文件,代码如下: pyi-makespec mainImageWindows.py 此时生产了一个mainI ...