前期准备:

  1. tomcat的安装与配置(略)
  2. jdk的安装与配置(略)
  3. eclipse软件安装与配置(略)
  4. webstrom软件或IDEA的安装与配置(大概用了IDEA就不需要eclipse了,但是怎么都没办法调试jsp所以还是放弃了,哈哈哈,tomcat部署https://segmentfault.com/a/1190000006130006)
  5. postgresql+QGIS+uDig+GeoServe安装与配置(略)
  6. tomcat配置postgresql(略)
  7. 土方计算的算法整理(见随笔)
  8. 构建项目测试数据库(用户表users如下所示)注意事项:数据库名、表名、字段名等尽量使用英文字符

登录界面-详细过程

1登录界面,jsp连接postgresql数据库

Html中使用表单提交用户名、登录密码等数据,<from>标签中的action表示数据提交给LoadFile.jsp,因为注册按钮需要另外提交给Lodin.jsp,所以注册按钮应在<from>标签之外。

(界面做的比较丑,还没进行美化,此处只附登录<div>代码,至于样式自己设置就好啦,不再上传了)

Html  登录 代码:

     <!-- -3.1-登录-->
<div id="load" align="center">
<br><p align="center"><strong>用户登录 </strong></p>
<form name="form" action="../jsp/LoadFile.jsp" method="post">
<br><p><strong>工号:</strong><input class="inputText" name="num" type="text" placeholder="请输入您的工号!"/></p>
<br><p><strong>密码:</strong><input class="inputText" name="userpassword" type="password" placeholder="请输入您的密码!"/></p>
<br><p><input type="submit" class="log" name="submit" value="登录"></p>
</form>
<br>
<p><input class="log" name="login" type="button" value="注册" onclick=login();></p>
<br>
</div>
LoadFile.jsp中主要定义了登录行为。
首先连接数据库,url为 jdbc:postgresql://localhost:5432(接口)/EC System (数据库名称);username为数据库所有者(下图为数据库属性页面);password为数据库登录密码。

其次,用户登录。先检测用户输入的用户名是否正确,使用sql语句在数据库表中查询用户名字段,如果用户名正确再检查密码,否则,就输出用户名错误。检查密码时应为逻辑与,即用户名密码同时存在才可以。

本表工号为主键,因此登录时用户名为工号。

LoadFile.jsp 登录 代码
 <%@ page contentType = "text/html; charset=utf-8"%>
<%@ page import="java.sql.*"%>
<html>
<head>
</head>
<body>
<div style=text-align:center>
<%
Class.forName("org.postgresql.Driver");
Connection connect = DriverManager.getConnection("jdbc:postgresql://localhost:5432/EC System","postgres","123569");
/* //登录JDBC链接数据库 */ /* load */
String num = request.getParameter("num");
session.setAttribute("username",num);
String userpassword = request.getParameter("userpassword"); Statement pme = connect.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
/* //createStatement()创建一个 Statement对象来将 SQL语句发送到数据库。从数据库里面取东西对比 */
String rs = "select * from users where workid = '"+num+"'";
ResultSet s = pme.executeQuery(rs);
if(s.next()){
Statement stmt = connect.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
String sql = "select * from users where workid='"+num+"'and password='"+userpassword+"'";
ResultSet i = stmt.executeQuery(sql);
/* //查询返回的结果集 */
if(i.next()){
out.println("<script language = 'javaScript'> alert('登录成功!');</script>");
response.setHeader("refresh","1;url = ../html/NewFile1.html");/* //刷新,一秒跳到其他页面 */
}/* 登录 */
else{
out.println("ERROR");
out.println("<script language = 'javaScript'> alert('密码错误,请重新登录!');</script>");
response.setHeader("refresh","1;url = ../html/EC-Home.html");
}
stmt.close();
}else{
out.println("ERROR");
out.println("<script language = 'javaScript'> alert('用户名不存在,请重新输入!');</script>");
response.setHeader("refresh","1;url = ../html/EC-Home.html");
} pme.close();
connect.close();
%>
</div>
</body>
<html>

注册界面Html代码

   <!-- -3.1-登录-->
<div id="login" align="center">
<p align="center"><strong>用户注册 </strong></p>
<form action="../jsp/Login.jsp" method="post" onsubmit = "return validate();">
<table frame=void width=800px border="1" align="center">
<tr>
<td class="td1"><strong>姓名:</strong></td>
<td class="td2"><input id="name" name="name" type="text" class="inputText" placeholder="请输入您的真实姓名!" onfocus="YHMonfocu()" onblur="YHMonblus()" required/><span id="YHMerror"></span></td>
</tr>
<tr>
<td class="td1"><strong>工号:</strong></td>
<td class="td2"><input id="workid" name="workid" type="text" class="inputText" placeholder="请输入您的工号!" onfocus="GHMonfocu()" onblur="GHMonblus()" required/><span id="GHMerror"></span></td>
</tr>
<tr>
<td class="td1"><strong>职务:</strong></td>
<td class="td2">
<select id="position" name="position" onfocus="ZWMonfocu()" onblur="ZWMonblus()" required>
<option value="" style="display: none;color: #555">请选择您的职务!</option>
<option value="VIP" >负责人</option>
<option value="GIP" >普通成员</option>
</select>
<span id="ZWMerror"></span>
</td>
</tr>
<tr>
<td class="td1"><strong>密码:</strong></td>
<td class="td2"><input id="password" name="password" type="password" class="inputText" placeholder="请输入您的密码!" onfocus="MMonfocu()" onblur="MMonblus()" required/><span id="MMerror"></span></td>
</tr>
<tr>
<td class="td1"><strong>再次输入密码:</strong></td>
<td class="td2"><input id="confirmPassword" name="confirmPassword" type="password" class="inputText" placeholder="请确认您的密码!" onfocus="QRMMonfocu()" onblur="QRMMonblus()" required/><span id="QRMMerror"></span></td>
<!-- //建立表格显示登录界面 -->
</tr>
<tr>
<td class="td1"> </td>
<td class="td2">
<input type="submit" name="submit" class="submitBtn" value="注册" >
</td>
<!-- //设置登录的按钮跳转界面 -->
</tr>
</table>
</form>
</div>

loadsql.js注册信息校检代码

 /* JavaScript校验要求:
1.每一项都必须填写内容或者做出选择,不能存在空项;+++++++++
2.姓名:不为空+++++++
3.职业:GIP/VIP
3.工号:只能包含英文字母大小写和数字,长度为8个字符;++++++++
3.密码:必须包含英文字母大小写和数字,长度为8个字符;++++++
4.确认密码:必须与密码相同;
5.如果用户没有按照以上要求输入信息,则当光标离开该项时,在该项的右侧用红色字体给出相应的提示信息。++++++*/
// 姓名name
var registerbtn = document.getElementById("submit");
var Name_state = false;
var workid_state = false;
var position_state = false;
var password_state = false;
var confirmPassword_state = false; function YHMonblus(){
var name = document.getElementById("name");
if(name.value.length==0){
console.log(name.value);
document.getElementById('YHMerror').innerText="请输入您的真实姓名!";
Name_state = false;
}
else {
document.getElementById('YHMerror').innerText ="";
Name_state = true;
}
checkform();
}
function YHMonfocu(){
document.getElementById('YHMerror').innerText ="";
}
/*工号workid*/
function GHMonblus(){
var workid=document.getElementById("workid");
// var reN =/^\d{6,18}$/;
var re = /^(?=.*\d)(?=.*[a-zA-Z])[\da-zA-Z]{8}$/;
if(workid.value==""){
document.getElementById('GHMerror').innerText="请输入您的工号!";
workid_state = false;
}
else if(workid.value.length != 8){
console.log(workid.value);
document.getElementById('GHMerror').innerText="格式错误,长度应为8个字符!";
workid_state = false;
}
else if(!re.test(workid.value)){
document.getElementById('GHMerror').innerText="格式错误,必须包含英文字母和数字!";
workid_state = false;
}
else {
document.getElementById('GHMerror').innerText ="";
workid_state = true;
}
checkform();
}
function GHMonfocu(){
document.getElementById('GHMerror').innerText ="";
}
// 职务position
function ZWMonblus(){
var position = document.getElementById("position");
console.log(position.value);
if(position.value==""){
document.getElementById('ZWMerror').innerText="请选择您的职务!";
position_state = false;
}
else {
document.getElementById('ZWMerror').innerText ="";
position_state = true;
}
checkform();
}
function ZWMonfocu(){
document.getElementById('ZWMerror').innerText ="";
}
//密码password
function MMonblus(){
var password=document.getElementById("password");
var re = /^(?=.*\d)(?=.*[a-zA-Z])[\da-zA-Z]{8}$/;
// var reg=/[A-Za-z].*[0-9]|[0-9].*[A-Za-z]/;
if(password.value==""){
document.getElementById('MMerror').innerText="请输入密码!";
password_state = false;
}
else if(password.value.length != 8){
document.getElementById('MMerror').innerText="格式错误,密码长度为8位!";
password_state = false;
} else if(!re.test(password.value)){
document.getElementById('MMerror').innerText="格式错误,必须包含英文字母和数字!";
password_state = false;
}
else {
document.getElementById('MMerror').innerText ="";
password_state = true;
}
checkform();
}
function MMonfocu(){
document.getElementById('MMerror').innerText ="";
} // 确认密码confirmPassword
function QRMMonblus(){
var password=document.getElementById("password");
var confirmPassword=document.getElementById("confirmPassword");
if(confirmPassword.value==""){
document.getElementById('QRMMerror').innerText="请输入确认密码!";
confirmPassword_state = false;
}
else if(password.value != confirmPassword.value){
document.getElementById('QRMMerror').innerText="两次密码输入不一致!";
confirmPassword_state = false;
}
else {
document.getElementById('QRMMerror').innerText ="";
confirmPassword_state = true;
}
checkform();
}
function QRMMonfocu(){
document.getElementById('QRMMerror').innerText ="";
} function checkform() {
if (!(Name_state && workid_state && position_state && password_state && confirmPassword_state)) {
registerbtn.setAttribute("disabled", "");
$("#submit").removeClass("readySubmit");
} else {
registerbtn.removeAttribute("disabled");
$("#submit").addClass("readySubmit");
}
}
function validate() {
return confirm("确定提交注册信息?");
}

Login.jsp 注册 代码

原理,将注册信息在js中检查,符合标准后,传入jsp,插入数据库,检索成功即可注册成功,否则返回重新注册。

调试多次,发现,插入数据时与查询数据代码并不类似。

 <%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="java.sql.*"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
/* //createStatement()创建一个 Statement对象来将 SQL语句发送到数据库。从数据库里面取东西对比 */
/* login */ Class.forName("org.postgresql.Driver");
Connection connect = DriverManager.getConnection("jdbc:postgresql://localhost:5432/EC System","postgres","123569");
/* load */
String sql = "insert into users (name,password,workid,position) values (?,?,?,?)";
PreparedStatement stmt=connect.prepareStatement(sql);
request.setCharacterEncoding("UTF-8");
String name = request.getParameter("name");/* 使用 request.getParameter() 方法来获取表单参数的值 */
String password = request.getParameter("fipassword");
String workid = request.getParameter("workid");
String position = request.getParameter("position");
stmt.setString(1,name);
stmt.setString(2,password);
stmt.setString(3,workid);
stmt.setString(4,position);
int n=stmt.executeUpdate();
if(n==1){
out.println("TRUE");
out.println("<script language = 'javaScript'> alert('注册成功,请重新登录!');</script>");
response.setHeader("refresh","1;url = ../html/EC-Home.html");
}else{
out.println("ERROR");
out.println("<script language = 'javaScript'> alert('注册失败,请按要求填写信息,重新注册!');</script>");
response.setHeader("refresh","1;url = ../html/Login.html");
}
stmt.close();
connect.close();
%>
</body>
</html>

jsp+postgresql学习笔记(1)用户登录与注册的更多相关文章

  1. PostgreSQL学习笔记(九) 用户、角色、权限管理

    PostgreSQL是一个多用户数据库,可以为不同用户指定允许的权限. 角色PostgreSQL使用角色的概念管理数据库访问权限. 根据角色自身的设置不同,一个角色可以看做是一个数据库用户,或者一组数 ...

  2. mysql颠覆实战笔记(三)-- 用户登录(二):保存用户操作日志的方法

    版权声明:笔记整理者亡命小卒热爱自由,崇尚分享.但是本笔记源自www.jtthink.com(程序员在囧途)沈逸老师的<web级mysql颠覆实战课程 >.如需转载请尊重老师劳动,保留沈逸 ...

  3. mysql颠覆实战笔记(二)-- 用户登录(一):唯一索引的妙用

    版权声明:笔记整理者亡命小卒热爱自由,崇尚分享.但是本笔记源自www.jtthink.com(程序员在囧途)沈逸老师的<web级mysql颠覆实战课程 >.如需转载请尊重老师劳动,保留沈逸 ...

  4. Django:学习笔记(9)——用户身份认证

    Django:学习笔记(9)——用户身份认证 User

  5. Django实战(一)-----用户登录与注册系统5(图片验证码)

    为了防止机器人频繁登录网站或者破坏分子恶意登录,很多用户登录和注册系统都提供了图形验证码功能. 验证码(CAPTCHA)是一种区分用户是计算机还是人的公共全自动程序. 可以防止恶意破解密码.刷票.论坛 ...

  6. 使用PHP实现用户登录和注册的功能

    登陆界面 login.php <form action="logincheck.php" method="post"> 用户名:<input ...

  7. Django用户登录与注册系统

    一.创建项目 1.1.创建项目和app python manage.py startproject mysite_login python manage.py startapp login 1.2.设 ...

  8. Django实战(一)-----用户登录与注册系统2(数据模型、admin后台、路由视图)

    使用Django开发Web应用的过程中,很多人都是急急忙忙地写视图,写前端页面,把最根本的模型设计给忽略了. 模型中定义了数据如何在数据库内保存,再直白点说就是数据表的定义.这部分工作体现在Djang ...

  9. Java入门:用户登录与注册模块1(实践项目)——分析

    任务描述:用户登录与注册是大多数软件都拥有的一个模块.请编写一个控制台程序,实现用户的登录与注册功能,并且用户能够修改自己信息. [需求分析]由于本程序是一个演示程序,用户的信息我们做简化处理,仅包括 ...

随机推荐

  1. 对Vuex的初步了解

    文章转载于:http://www.cnblogs.com/wisewrong/p/6344390.html 在 Vue.js 的项目中,如果项目结构简单, 父子组件之间的数据传递可以使用  props ...

  2. APICloud · 跨越2018,技术改变世界

    在APICloud发展轨迹中, 2018注定是疾速的一年, 更多的风口趋势和现象级应用背后, 是技术在推动着世界的加速转动. APICloud所提供的技术服务,在混合之力的驱动下不断完善升级,“让你的 ...

  3. 判断为false的情况

    console.log(''==false)  //true console.log('0' == false)  //true console.log(null == false) //false, ...

  4. VMware虚拟机共享宿主机硬盘步骤

    1.打开设置 2. 进去设置后,选择选项选项卡,启用文件夹共享,添加文件夹即可 注:虚拟机安装完成后我先装了 VMwareTools,然后进行的共享操作,貌似不安装时无法启用第三步,即 总是启用 按钮 ...

  5. 解决git冲突造成的Please move or remove them before you can merge

    git clean -d -fx “” 其中x —–删除忽略文件已经对git来说不识别的文件d —–删除未被添加到git的路径中的文件f —–强制运行如果你确定这货已经没用了,并且git status ...

  6. 做一个有产品思维的研发:Scrapy安装

    每天10分钟,解决一个研发问题. 如果你想了解我在做什么,请看<做一个有产品思维的研发:课程大纲>传送门:https://www.cnblogs.com/hunttown/p/104909 ...

  7. js优化 前端小白适用

    注意啦,前端初学者适合看的js优化,当你看我的优化认为太low,那么恭喜,你已经脱离初学者了. 首先这边我觉得分享的还是以js为主,前端性能优化,我认为最重要的还是js,因为js是一门解释型的语言,相 ...

  8. MATLAB GUI设计(线性卷积和循环卷积的比较--笔记)

    原创循环卷积代码,转载需注明出处 线性卷积与循环卷积的比较 实验目的和要求 掌握循环卷积和线性卷积的原理,与理论分析结果比较,加深理解循环卷积与线性卷积之间的关系. 实验内容和步骤 1) 已知两序列X ...

  9. Sublime 个人配置

    Sublime 个人配置 用的faltland主题,之后还加了一些自己喜欢的东西. 效果图如下: { "always_show_minimap_viewport": true, & ...

  10. asp.net 去掉小数点后面多余的0,本身为0则不显示

    很多时候,比如gridview内,不想现实从数据库带出的多余小数 ,比如 4.01000 ,可显示为 4.01 如果是 0.00000, 则显示为空白 /// <summary> /// ...