app登录界面背景 css_计算机毕业设计中Java web实现简登录页面(MyBatis+jsp+servlet+html+css+javascript)...

2db59bde6c5135ebab81ef9b1a605035.png点击上方“蓝字”,关注我们.

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

d226943cd03145284205cf9e1105c6a9.png

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

8e97e55fcca9a43bc0fdd32db9f3b80f.png

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

12968ae2762c4b0bbef3fd376b563680.png

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

428cd0f28d725c4c396bd19043a97485.png

(一)安装配置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/,可见欢迎页面如图:

af21a2d6c18724bd58be8eb73c9ee95c.png

(二)eclipse配置tomcat 8.0

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

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

27479522c3f792c35eb1a9e405e834ca.png115e8b4065eb70e9467c032979122b6b.png

(三)eclipse创建Dynamic Web project 

先给出工程视图如下:

97d821bc1c2832eecc6ed205035ce549.png

具体步骤如下:

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

1eb6c588d3fd41c4600101c6f3c24d43.png

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

7becb4cb36a5645dde058b2f2d615c65.png

(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:

"java" contentType="text/html; charset=utf-8"

pageEncoding="UTF-8"%>

span style="box-sizing: border-box;outline: 0px;color: rgb(80, 161, 79);overflow-wrap: break-word;">"-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

"Content-Type" content="text/html; charset=utf-8">

登录界面

"stylesheet" href="css/inti.css" type="text/css" />

"stylesheet" href="css/login.css" type="text/css" />

"bg">
class='div_logo'>

用户登录

class='div_form'>'login' action='Login' onsubmit='return validation()' method='post'>
class='div_login_input' id='user'>
'icon_user'>

class='login' id='username' type='text' name='username' placeholder='用户名'>

class='hint' id='hint_user'>

class='div_login_input' id='pwd' >
'icon_pwd'>

class='login' id='password' type='password' name='password' placeholder='请输入密码'>

class='hint' id='hint_pwd'>

class='div_btn'>

'login_submit' type='submit' value='登录'>

(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("");

pw.println("");

if(usrdao.verify(username, password, session)==true)

{

pw.println("Login success.");

}

else

{

pw.println("Login failed. Wrong username or password");

}

pw.println("");

pw.println("");

pw.close();

} catch (IOException e) {

e.printStackTrace();

}

}

}

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

(4)配置web.xml

<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>testdisplay-name>

<welcome-file-list>

<welcome-file>index.jspwelcome-file>

welcome-file-list>

<servlet>

<servlet-name>LoginServletservlet-name>

<servlet-class>com.test.servlet.LoginServletservlet-class>

servlet>

<servlet-mapping>

<servlet-name>LoginServletservlet-name>

<url-pattern>/Loginurl-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:

span style="box-sizing: border-box;outline: 0px;overflow-wrap: break-word;">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)运行测试:

c318e306213e3ee9fb588239627430d2.png

结果如下:

ccb779d6a55555cc72be201a958b91e8.png

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

2791c35c2a77d6690586f53211b8f9c3.gif

更多请关注小编继续了解,免费赠送网页设计作业源代码哦!

如需要精品网页设计作业和毕业设计作品

联系QQ:2656895362进行咨询

6edc2668f0a4a4d5655deebd9934a723.pngac0aca1d483a650a470495b49b31a2bf.png网站地址:http://www.85work.com/扫码关注最新动态更多精彩,点击下方“

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/336234.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

android strm,Android 关于so文件的随记

1.背景&#xff1a;项目中要集成商汤的活体检测sdk&#xff0c;2.遇到的问题&#xff1a;商汤提供的demo 可以正常运行&#xff0c;但是将sdk集成至项目中时一直报错&#xff0c;但是商汤侧却没办法提供具体的报错原因3.解决问题&#xff1a;反编译商汤的源码发现&#xff0c;报…

工业互联网二级节点建设_建设者还是二传手?

工业互联网二级节点建设不用说&#xff0c;每个对象都需要先创建才能使用。 无论我们是在谈论域&#xff0c;框架&#xff0c;库还是任何其他类型的类&#xff0c;都没有关系。 当您的代码是面向对象的时&#xff0c;这些类仅是对象的定义。 创建对象之前&#xff0c;不能使用它…

android 指针是什么意思,Android系统的智能指针(轻量级指针、强指针和弱指针)的实现原理分析(3)...

提供引用计数器的类RefBase我们就暂时介绍到这里&#xff0c;后面我们再结合智能指针类一起分析&#xff0c;现在先来看看强指针类和弱指针类的定义。强指针类的定义我们在前面介绍轻量级指针的时候已经见到了&#xff0c;就是sp类了&#xff0c;这里就不再把它的代码列出来了。…

【WebRTC---入门篇】(十五)WebRTC信令服务器实现

如何使用socket.io发送消息 io代表整个节点

气味识别应用_代码气味–第二部分

气味识别应用在上一篇文章《代码气味–第一部分》中 &#xff0c;我谈到了膨胀器&#xff1a;它们是代码气味&#xff0c;可以识别为长方法&#xff0c;大型类&#xff0c;原始痴迷&#xff0c;长参数列表和数据块。 在这一篇中&#xff0c;我想深入研究面向对象的滥用者和变更…

activiti高亮显示图片_如今透明LED显示屏成为广告橱窗,它们之间有什么关联?...

如今我们在街道行走时&#xff0c;我们就会看到各种玻璃橱窗&#xff0c;这是商家想利用橱窗进行不同产品宣传角度。其实无论是海报、灯箱或是实物展示&#xff0c;这些都是商家通过橱窗广告进行来吸引消费者&#xff0c;而现在是5G时代到来使橱窗数字化营销成为了一种新的趋势…

theme editor android,谷歌宣布将于下月停用 Material Theme Editor

使用 Material Theme Editor&#xff0c;开发人员可创建和自定义 Material 主题&#xff0c;包括颜色、形状、版式等等。在 Material Theme Editor 中&#xff0c;可根据不同部分依次选择颜色&#xff0c;并应用于所有组件&#xff0c;还可调整对比度&#xff0c;根据单一颜色自…

【WebRTC---入门篇】(十六)端对端1V1传输基本流程

RTCPeerConnection 媒体协商 setLocalDescription方法 ,收集所有候选者。 setRemoteDescription方法, 放到远端的描述槽中。 协商状态变化

pytorch dataset_【小白学PyTorch】16.TF2读取图片的方法

<>扩展之tensorflow2.0 | 15 TF2实现一个简单的服装分类任务小白学PyTorch | 14 tensorboardX可视化教程小白学PyTorch | 13 EfficientNet详解及PyTorch实现小白学PyTorch | 12 SENet详解及PyTorch实现小白学PyTorch | 11 MobileNet详解及PyTorch实现小白学PyTorch | 10 …

android 硬件对接,Android 对接硬件串口篇

private DispQueueThread DispQueue;private AssistBean AssistData;private SerialControl ComA;Overridepublic void initView() {ComA new SerialControl();//开启串口DispQueue new DispQueueThread();//开启线程实时获取数据DispQueue.start();//线程启动AssistData ge…

【WebRTC---入门篇】(十七)实现1V1音视频实时互动直播系统

STUN/TURN服务器搭建 详细搭建过程 RTCPeerConnection

junit5和junit4_JUnit 5 –架构

junit5和junit4现在我们知道如何设置JUnit 5并使用它编写一些测试 &#xff0c;下面让我们看一下。 在本文中&#xff0c;我们将讨论JUnit 5架构以及采用这种方式的原因。 总览 这篇文章是有关JUnit 5的系列文章的一部分&#xff1a; 建立 基本 建筑 条件 注射 … JUni…

pytorch load state dict_PyTorch 学习笔记(五):Finetune和各层定制学习率

本文截取自《PyTorch 模型训练实用教程》&#xff0c;获取全文pdf请点击&#xff1a;https://github.com/tensor-yu/PyTorch_Tutorial [toc]我们知道一个良好的权值初始化&#xff0c;可以使收敛速度加快&#xff0c;甚至可以获得更好的精度。而在实际应用中&#xff0c;我们通…

华为配备鸿蒙系统的手机,华为P50/新平板双双来袭!全球首发鸿蒙系统:配置都非常强悍...

【12月12日讯】相信大家都知道&#xff0c;华为方面已经正式官宣&#xff0c;将会在12月16日正式推出鸿蒙系统首个手机Bate版本&#xff0c;但也有很多网友们担忧&#xff0c;华为手机在脱离了Android系统以后&#xff0c;鸿蒙OS系统是否真的可以击败Android系统&#xff0c;第…

【WebRTC---入门篇】(十八)WebRTC非音视频数据传输

WebRTC传输非音视频重要API createDataChannel options ordered 在传输非音视频的时候是否是按序到达的。 maxPacketLifeTime/maxRetransmits 最大包存活时间;最大传输次数。两者二选一 negotiated ID 唯一标识 DataChannel事件

ios 静音模式_静音设计模式

ios 静音模式您最近是否遵循Mute-Design-Pattern™编写了大量代码&#xff1f; 例如 try {complex();logic();here(); } catch (Exception ignore) {// Will never happen heheSystem.exit(-1); }Java 8有一个更简单的方法&#xff01; 只需将这个非常有用的工具添加到您的Ut…

datatable使用_使用Streamlit从简单的Python脚本创建交互式WebApp

如果有人告诉您可以使用150-200行代码创建交互式Web应用程序&#xff0c;该怎么办&#xff1f; 有趣的权利。 Streamlit为您提供了使用简单的python脚本和一些streamlit调用来创建漂亮的Web应用程序的相同机会。Streamlit是一个开放源代码框架&#xff0c;用于以最快的方式创建…

和谐 平等_平等还是认同?

和谐 平等将对象存储在集合中时&#xff0c;同一对象永远不能添加两次很重要。 这是集合的核心定义。 在Java中&#xff0c;使用两种方法来确定两个引用的对象是否相同&#xff0c;或者它们都可以存在于同一Set中。 equals&#xff08;&#xff09;和hashCode&#xff08;&…