Java web实现简登录页面(MyBatis+jsp+servlet+html+css+javascript)附源码「建议收藏」

Java web实现简登录页面(MyBatis+jsp+servlet+html+css+javascript)附源码「建议收藏」本文利用MyBatis+jsp+servlet+html+css+javascript实现了一个简单的登录页面。对用户输入的用户名和密码就行校验,校验通过则登录成功,密码和用户信息保存在mysql表中,通过MyBatis访问(MyBatis相关知识可参考先前的文章MyBatis测试)。先给出最终的效果图:登录成功则进入如下页面:登录失败,则进入如下页面:如果输入的密码或者用…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

本文利用MyBatis+jsp+servlet+html+css+javascript实现了一个简单的登录页面。对用户输入的用户名和密码就行校验,校验通过则登录成功,密码和用户信息保存在mysql表中,通过MyBatis访问(MyBatis相关知识可参考先前的文章MyBatis测试)。先给出最终的效果图:

Java web实现简登录页面(MyBatis+jsp+servlet+html+css+javascript)附源码「建议收藏」

登录成功则进入如下页面:

Java web实现简登录页面(MyBatis+jsp+servlet+html+css+javascript)附源码「建议收藏」

登录失败,则进入如下页面:

Java web实现简登录页面(MyBatis+jsp+servlet+html+css+javascript)附源码「建议收藏」

如果输入的密码或者用户名为空或者不合法,则页面上提示:

Java web实现简登录页面(MyBatis+jsp+servlet+html+css+javascript)附源码「建议收藏」

(一)安装配置tomcat

这里使用的是tomcat 8.0,直接官网下载压缩包解压,然后添加环境变量TOMCAT_HOME(值为D:\apache-tomcat-8.0.52)并修改CLASSPATH环境变量(末尾添加%TOMCAT_HOME%\BIN),然后在D:\apache-tomcat-8.0.52\bin下双击startup.bat运行tomcat,运行成功,在浏览器中输入http://localhost:8080/,可见欢迎页面如图:

Java web实现简登录页面(MyBatis+jsp+servlet+html+css+javascript)附源码「建议收藏」

(二)eclipse配置tomcat 8.0

window–>preferences–>Server–>runtime environments,添加tomcat 8.0,然后apply即可。

双击server视图中的tomcat 8.0,需要如下配置,否则运行时可能会报错。

Java web实现简登录页面(MyBatis+jsp+servlet+html+css+javascript)附源码「建议收藏」Java web实现简登录页面(MyBatis+jsp+servlet+html+css+javascript)附源码「建议收藏」

(三)eclipse创建Dynamic Web project 

先给出工程视图如下:

Java web实现简登录页面(MyBatis+jsp+servlet+html+css+javascript)附源码「建议收藏」

具体步骤如下:

(1)创建Dynamic Web project工程,命名为LoginTest

Java web实现简登录页面(MyBatis+jsp+servlet+html+css+javascript)附源码「建议收藏」

注意选中下图中的单选框,这样自动创建一个web.xml文件

Java web实现简登录页面(MyBatis+jsp+servlet+html+css+javascript)附源码「建议收藏」

(2) 编写 index.jsp(这里只使用了index.jsp作为登录页面,注册查询等可以类似实现),先给出最终的index.jsp。实际上对于最简单的java web程序,只有一个web.xml和index.jsp即可运行,index.jsp的body中只写hello world,然后再tomcat上运行,就可实现java web的hello world。最终版本的index.jsp用到了模板css/init.css(用于初始化css的一些基本配置,以便屏蔽一些浏览器差异),css/login.css则是自定义的登录界面的样式;index.jsp还用到了js/login.js,利用javascript对输入框信息做一些校验并给出提示。最终的源码包中给出相应文件。

index.jsp:

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="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>
		<link rel="stylesheet" href="css/inti.css" type="text/css" />
		<link rel="stylesheet" href="css/login.css" type="text/css" />
		
		
	</head>
    
	<body>
	    
		
	    <!--absolute 绝对定位相对于父元素 不占空间 z-index属性-->
		<div id="bg">  
			<div class='div_logo'>
				<p >用户登录</p>
			</div>
			
			<div class='div_form'>
				 
				<form name='login' action='Login' onsubmit='return validation()' method='post'>
						<div class='div_login_input' id='user'>
							<div id='icon_user'></div>
							<input class='login' id='username' type='text' name='username' placeholder='用户名'></input>
							<span class='hint' id='hint_user'></span>
						</div>
					
						<div class='div_login_input' id='pwd' >
							<div id='icon_pwd'></div>
							<input class='login' id='password' type='password' name='password' placeholder='请输入密码'></input>
							<span class='hint' id='hint_pwd'></span>
						</div>
						
						<div class='div_btn'>
							<input id='login_submit'  type='submit'  value='登录'></input>
						</div>
				</form>
			
		</div>

		<script src='js/login.js'></script>
		
	</body>

</html>

(3)编写LoginServlet.java

package com.test.servlet;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.ibatis.session.SqlSession;

import com.test.dao.*;
import com.test.util.GetSqlSession;

public class LoginServlet extends HttpServlet{
	public void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException{
		UserDaoImplement usrdao = new UserDaoImplement();
		SqlSession session = GetSqlSession.createSqlSession();
		
		String username = req.getParameter("username");
        String password = req.getParameter("password");
        resp.setContentType("text/html;charset=UTF-8");

        
        try {
			PrintWriter pw = resp.getWriter();
			pw.println("<html>");
			pw.println("<body>");
			if(usrdao.verify(username, password, session)==true)
			{
				pw.println("Login success.");
			}
			else
			{
				pw.println("Login failed. Wrong username or password");
			}
			pw.println("</body>");
			pw.println("</html>");
			pw.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}

LoginServlet.java获取提交的用户名和密码信息,调用验证方法进行验证,并根据验证结果写验证成功或者失败的界面。这里没有主方法,因为tomcat运行时存在一个主方法。

(4)配置web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
  <display-name>test</display-name>
  
  <welcome-file-list>
  	<welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
  
  <servlet>
    <servlet-name>LoginServlet</servlet-name>
    <servlet-class>com.test.servlet.LoginServlet</servlet-class>
  </servlet>
  
  <servlet-mapping>
     <servlet-name>LoginServlet</servlet-name>
     <url-pattern>/Login</url-pattern>
   </servlet-mapping>
</web-app>

web.xml功能页面使用的类以以及类与url-pattern之间的关系。web.xml和index.jsp以及LoginServlet.java可构成一个web service,其中inde.jsp定义了页面,LoginServlet.java是提供服务的程序,而web.xml指定了页面与servlet类之间的映射关系,即某个功能页面使用哪个类在后台进行处理。

(5)配置MyBatis访问数据库中的用户表

首先建立用户表,插入两条数据:

create database  test;
use test;

create table tbl_user(
   username       varchar(32)    NOT NULL,
   password   varchar(32)            ,
   PRIMARY KEY ( username )
)ENGINE=InnoDB DEFAULT CHARSET=utf8;

insert into tbl_user values("admin", "admin");
insert into tbl_user values("testname", "123456");

然后参考先前的文章MyBatis测试配置MyBatis使用的config/Configure.xml ,mysql.properties以及UserMapper.xml,文章最后在源码中给出。这里先给出表对应的实体类User.java和UserMapper.xml:

User.java:

package com.test.entity;

public class User {
	private String username;
	private String password;
	
	//无参构造方法
	public User(){
		
	}
	
	//有参构造方法
	public User(String username, String password){
		this.username = username;
		this.password = password;
	}
	
	public void setUsername(String username){
		this.username = username;
	}
	
	public void setPassword(String password){
		this.password = password;
	}
	
	public String getUsername(){
		return this.username;
	}
	
	public String getPassword(){
		return this.password;
	}
}

UserMapper.xml:

<?xml version="1.0" encoding="UTF-8" ?>  
<!DOCTYPE mapper  
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"  
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">  

<mapper namespace="UserMapper">
	<select id="getUserByName" parameterType="String" resultType="User">
		select * from tbl_user where username = #{username}
    </select>
</mapper>

访问数据库使用GetSqlSession类,该类利用Configure.xml文件获取sqlSessionFactory实例,并返回一个用于操作数据库的SqlSession实例。GetSqlSession.java如下:

package com.test.util;

import java.io.IOException;
import java.io.InputStream;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

public class GetSqlSession {
	
	public static SqlSession createSqlSession(){
		SqlSessionFactory sqlSessionFactory = null;
		InputStream input = null;
		SqlSession session = null;
			
		//创建sqlSessionFactory
	    try {
	    	input = Resources.getResourceAsStream("config/Configure.xml");
			sqlSessionFactory = new SqlSessionFactoryBuilder().build(input);
			session  = sqlSessionFactory.openSession();
			return session;
		} catch (IOException e) {
			e.printStackTrace();
			return null;
		}

	}
	
	
}

 

(6) dao层定义接口并实现接口中的方法

 

编写接口UserDao.java并由UserDaoImplement.java实现该接口,使用接口的目的是统一规范。实现接口的类,访问数据库中的tbl_user表,查找用户名和密码,与用户提交的用户名和密码进行比对,并返回校验结果。

UserDao.java:

package com.test.dao;

import org.apache.ibatis.session.SqlSession;

public interface UserDao {
	public boolean verify(String username, String password, SqlSession session);//verify username and passwd
}

UserDaoImplement.java:

package com.test.dao;

import org.apache.ibatis.session.SqlSession;

import com.test.entity.*;


public class UserDaoImplement implements UserDao {
	public boolean verify(String username, String password, SqlSession session){
		User user = (User) session.selectOne("UserMapper.getUserByName", username);
			
	    if(user == null){
	    	session.close();
	    	return false;
	    }
	    else if(user.getUsername().equals(username) && user.getPassword().equals(password))
		{
	    	session.close();
	    	return true;
		}
		else
		{
			session.close();
			return false;
		}
		
	    
	} 
}

(7)运行测试:

Java web实现简登录页面(MyBatis+jsp+servlet+html+css+javascript)附源码「建议收藏」

结果如下:

Java web实现简登录页面(MyBatis+jsp+servlet+html+css+javascript)附源码「建议收藏」

用户名只能是英文,输入用户名/密码为admin/admin或者testname/123456时候登录成功,否则登录失败。

(8)源码:https://github.com/poetteaes/git/tree/master/project/login

 

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/157817.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 购物程序「建议收藏」

    购物程序「建议收藏」#-*-coding:utf-8-*-"""CreatedonTueSep1116:35:292018@author:车路历程"&

    2022年8月3日
    6
  • GiD 自定义 简介

    GiD 自定义 简介目录BlogLinks一、前言二、GiD的程序架构六、参考文献BlogLinksDalNur|博客总目录GiD实用教程GiD前处理实例GiD自定义简介GiD后处理实例一、前言  随着计算机技术的发展,有限元法已成为非常强大的数值模拟工具,广泛应用于各个领域。目前,比较常用的大型商用有限元程序有ANSYS,ABAQUS,MARC,ADINA等,由于它们是通用有限元程序,在某些领域的特殊方面(如对于应力场、渗流场、温度场的耦合问

    2025年8月10日
    3
  • idea社区版连接mysql数据库[通俗易懂]

    idea社区版连接mysql数据库[通俗易懂]社区版默认不支持数据库连接,需要下载一个插件下载之后打开,如下新建一个连接,设置mysql的用户,密码之类另外,需要设置一下时区,不然可能会报错如下之后就可以使用了!

    2022年9月22日
    3
  • 浅谈单调队列

    浅谈单调队列单调队列是指:队列中元素之间的关系具有单调性,而且,队首和队尾都可以进行出队操作,只有队尾可以进行入队操作。队列是一种先进先出(FIFOFirstInFirstOut)的数据结构,它类似于下面这幅图:队列的进出方式类似于平时我们排队打饭,来排队的人从队尾进入,打完饭的人从队头弹出。队列的在程序中储存的方式有很多,OI中最为常用的是使用头指针head和尾指针tail进行存储头指针指…

    2022年6月25日
    31
  • kali漏扫软件_kali渗透web网站

    kali漏扫软件_kali渗透web网站一、漏洞扫描器漏洞扫描器通常由两个部分组成①进行扫描的引擎部分 ②包含了世界上大多数系统和软件漏洞特征的特征库比较优秀的漏洞扫描器:Rapid7Nexpose:(商用软件)适合较大的网络 TenableNessus:(商用软件)价格相当更经济一些 OpenVas:免费使用的工具,更适合个人使用商用软件使用起来比较容易,只要给出一个IP地址就能完成所有的扫描任务,但…

    2022年9月13日
    4
  • Mybatis-plus操作json字段实战

    Mybatis-plus操作json字段实战后端动态列设计与实现三部曲,这是最后一步,使用java语言,结合mybatis-plus神技操作json字段。简单介绍下mybatis-plus,大厂中mybatis使用的非常多,而mybatis-plus是基于mybatis做了扩展,进一步增强,在不影响数据存储的情况下,简化操作方式。有兴趣的朋友可以去官网了解:https://www.baomidou.com/1、架构图2、功能3、表结构DROPTABLEIFEXISTSuser;CREATETABLEuser(……

    2025年6月22日
    1

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号