登录注册的实现流程

本节课,讲的是如何用jfinal实现简单的登录注册模块。先说一下,我这里的bug,同一个用户同密码可以注册多次,就是数据库会出现多条主键userid不同,但账号密码相同的记录;正常的数据库不是这样的,而且前端是会显示该用户已注册的。由于时间关系,我就没有把demo完善。
我的登录注册的逻辑如下:
页面分为三种:
A:登录页面;B:登录以后跳转到固定的页面;C:非A和B的其他页面。
实现这个项目的步骤:
1、想清楚自己实现什么功能,我的前端页面是什么样的,需要建立什么表,需要写什么方法。前端–>数据库–>Java后台。
2、有了思路后,先建表,再建立maven项目,进行基本的配置。
3、想清楚后台需要给前端哪些接口?把后台的接口写完。
4、写前端页面。(小编这里的前端页面是抄的,可能有点丑。)

建表,再建立maven项目,进行基本的配置

数据库配置文件:jdbc.properties

jdbc_driverClassName=com.mysql.jdbc.Driver
jdbc_url=jdbc:mysql://localhost:3306/hello?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull
jdbc_username=root
jdbc_password=
devMode=true

建立hello数据库,打开Navicat for MySQL的命令行,使用这个数据库,然后建表。

DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (`userid` int(11) NOT NULL AUTO_INCREMENT,`username` varchar(255) NOT NULL,`password` varchar(255) NOT NULL,PRIMARY KEY (`userid`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;

建立maven项目及所需要的包、Java文件

配置之前的jdbc.properties
配置configuration.java

package com.hello.config;import com.hello.Interceptor.ExceptionIntoLogInterceptor;
import com.hello.Model._MappingKit;
import com.hello.Route.WebRoute;
import com.jfinal.config.Constants;
import com.jfinal.config.Handlers;
import com.jfinal.config.Interceptors;
import com.jfinal.config.JFinalConfig;
import com.jfinal.config.Plugins;
import com.jfinal.config.Routes;
import com.jfinal.json.JacksonFactory;
import com.jfinal.kit.PathKit;
import com.jfinal.kit.PropKit;
import com.jfinal.log.Log4jLogFactory;
import com.jfinal.plugin.activerecord.ActiveRecordPlugin;
import com.jfinal.plugin.druid.DruidPlugin;
import com.jfinal.template.Engine;public class configuration extends JFinalConfig {@Overridepublic void configConstant(Constants me) {// PropKit 读取工具,use方法可以获取到指定文件PropKit.use("com/hello/config/jdbc.properties");// 是否开启开发者模式me.setDevMode(PropKit.getBoolean("devMode"));// 设置字符集me.setEncoding("UTF-8");// 设置Json格式me.setJsonFactory(new JacksonFactory());me.setJsonDatePattern("yyyy-MM-dd");// 设置上传下载的默认路径me.setBaseUploadPath(PathKit.getWebRootPath() + "/upload");// 这个是设置日志工厂me.setLogFactory(new Log4jLogFactory());}// 路由分包public void configRoute(Routes me) {me.add(new WebRoute());}// 配置前端模板引擎public void configEngine(Engine me) {me.addSharedFunction("/common/_layout.html");}// 启动数据库插件public static DruidPlugin createDruidPlugin() {return new DruidPlugin(PropKit.get("jdbc_url"), PropKit.get("jdbc_username"),PropKit.get("jdbc_password").trim());}// 配置数据库插件 启动Model和DB+Recordpublic void configPlugin(Plugins me) {DruidPlugin druidPlugin = new DruidPlugin(PropKit.get("jdbc_url"), PropKit.get("jdbc_username"),PropKit.get("jdbc_password").trim());me.add(druidPlugin);ActiveRecordPlugin arp = new ActiveRecordPlugin(druidPlugin);arp.setBaseSqlTemplatePath(PathKit.getRootClassPath());// arp.addSqlTemplate("hello.sql");// 在控制台打印所有的数据库操作语句arp.setShowSql(true);// 所有映射在 MappingKit 中自动化搞定_MappingKit.mapping(arp);me.add(arp);}@Overridepublic void configInterceptor(Interceptors interceptors) {interceptors.addGlobalActionInterceptor(new ExceptionIntoLogInterceptor());}public void configHandler(Handlers me) {}public void afterJFinalStart() {}public void beforeJFinalStop() {}}

配置pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.zcm</groupId><artifactId>hello</artifactId><packaging>war</packaging><version>0.0.1-SNAPSHOT</version><name>hello Maven Webapp</name><url>http://maven.apache.org</url><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><maven.compiler.encoding>UTF-8</maven.compiler.encoding><!-- log4j日志文件管理包版本 --> <slf4j.version>1.7.0</slf4j.version><log4j.version>1.2.14</log4j.version></properties><!-- 使用阿里 maven 库 --><repositories><repository><id>ali-maven</id><url>http://maven.aliyun.com/nexus/content/groups/public</url><releases><enabled>true</enabled></releases><snapshots><enabled>true</enabled><updatePolicy>always</updatePolicy><checksumPolicy>fail</checksumPolicy></snapshots></repository></repositories><dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>3.8.1</version><scope>test</scope></dependency><dependency><groupId>com.jfinal</groupId><artifactId>jetty-server</artifactId><version>8.1.8</version><!-- 此处的 scope 值为 compile 仅为支持 IDEA 下启动项目 打 war 包时需要改成 provided,以免将一些无用的 jar 打进去 --><scope>compile</scope></dependency><dependency><groupId>com.jfinal</groupId><artifactId>jfinal-java8</artifactId><version>3.3</version></dependency><dependency><groupId>com.jfinal</groupId><artifactId>jfinal</artifactId><version>3.3</version></dependency><dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>1.2.16</version></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.44</version></dependency><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.0.29</version></dependency><dependency><groupId>com.jfinal</groupId><artifactId>cos</artifactId><version>2017.5</version></dependency><!-- json --><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.24</version></dependency><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-core</artifactId><version>2.5.0</version></dependency><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-annotations</artifactId><version>2.5.0</version></dependency><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><version>2.5.0</version></dependency><dependency><groupId>org.json</groupId><artifactId>json</artifactId><version>20160810</version></dependency><dependency><groupId>net.sf.json-lib</groupId><artifactId>json-lib</artifactId><version>2.4</version><classifier>jdk15</classifier></dependency><!-- 日志文件管理包 --><dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>${log4j.version}</version></dependency><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-api</artifactId><version>${slf4j.version}</version></dependency><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-log4j12</artifactId><version>${slf4j.version}</version></dependency><dependency><groupId>commons-logging</groupId><artifactId>commons-logging</artifactId><version>1.2</version></dependency></dependencies><build><finalName>hello</finalName><plugins><plugin><groupId>org.mortbay.jetty</groupId><artifactId>jetty-maven-plugin</artifactId><version>8.1.8.v20121106</version><configuration><stopKey>stop</stopKey><stopPort>5599</stopPort><webAppConfig><contextPath>/</contextPath></webAppConfig><scanIntervalSeconds>5</scanIntervalSeconds><connectors><connector implementation="org.eclipse.jetty.server.nio.SelectChannelConnector"><port>80</port><maxIdleTime>60000</maxIdleTime></connector></connectors></configuration></plugin></plugins></build>
</project>

配置web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5"><filter><filter-name>jfinal</filter-name><filter-class>com.jfinal.core.JFinalFilter</filter-class><init-param><param-name>configClass</param-name><param-value>com.hello.config.configuration</param-value></init-param></filter><filter-mapping><filter-name>jfinal</filter-name><url-pattern>/*</url-pattern></filter-mapping></web-app>

配置_JFinalDemoGenerator.java生成器

package com.hello.tool;import javax.sql.DataSource;import com.hello.config.configuration;
import com.jfinal.kit.PathKit;
import com.jfinal.kit.PropKit;
import com.jfinal.plugin.activerecord.generator.Generator;
import com.jfinal.plugin.druid.DruidPlugin;public class _JFinalDemoGenerator {public static DataSource getDataSource() {PropKit.use("com/hello/config/jdbc.properties");DruidPlugin druidPlugin = configuration.createDruidPlugin();druidPlugin.start();return druidPlugin.getDataSource();}public static void main(String[] args) {// base model 所使用的包名String baseModelPackageName = "com.hello.Model.base";// base model 文件保存路径String baseModelOutputDir = PathKit.getWebRootPath() + "/src/main/java/com/hello/Model/base";// model 所使用的包名 (MappingKit 默认使用的包名)String modelPackageName = "com.hello.Model";// model 文件保存路径 (MappingKit 与 DataDictionary 文件默认保存路径)String modelOutputDir = baseModelOutputDir + "/..";// 创建生成器Generator generator = new Generator(getDataSource(), baseModelPackageName, baseModelOutputDir, modelPackageName, modelOutputDir);// 设置是否生成链式 setter 方法generator.setGenerateChainSetter(false);// 添加不需要生成的表名generator.addExcludedTable("nutrition","ingredient_map","disease_store_discard");// 设置是否在 Model 中生成 dao 对象generator.setGenerateDaoInModel(true);// 设置是否生成链式 setter 方法generator.setGenerateChainSetter(true);// 设置是否生成字典文件generator.setGenerateDataDictionary(false);// 设置需要被移除的表名前缀用于生成modelName。例如表名 "osc_user",移除前缀 "osc_"后生成的model名为 "User"而非 OscUsergenerator.setRemovedTableNamePrefixes("t_");// 生成generator.generate();}
}

写start.java ,对于有些人的电脑,即使是eclipse运行jfinal,也只能使用 IDEA 的启动方式,不能进行热加载。

点_JFinalDemoGenerator,右键,Run As,Java Application 。使用生成器,生成com.hello.Model和com.hello.Model.base包中的Java文件。你运行之后,要刷新一下整个项目。

剩下的网盘见了,我的代码旁边都有注释。

https://download.csdn.net/download/qq_37905259/10458617

jfinal框架之登录注册相关推荐

  1. 基于Springboot框架的登录注册页面

    今天正式开始第一篇文章创作,很高兴大家能够见证我的成长,也祝愿大家早日升职加薪哈. 首先声明,本人是技术小白,我只做我自己学习的总结.如果有技术上的错误,误导了大家,希望大家能及时做出补充指正. 下面 ...

  2. SSM框架实现登录注册功能

    刚刚写出来的SSM登录注册案例,网上随便翻一下都有 ,本篇直接上手,使用Maven工程搭建一个简单的SSM框架实现简单的登录注册,验证重名功能. 目录 项目结构图 持久层相关配置文件 applicat ...

  3. python flask框架下登录注册界面_Python-用户登录 Flask-Login

    用户登录功能是 Web 系统一个基本功能,是为用户提供更好服务的基础,在 Flask 框架中怎么做用户登录功能呢?今天学习一下 Flask 的用户登录组件 Flask-Login Python 之所以 ...

  4. python flask框架下登录注册界面_Python的Flask框架中实现简单的登录功能的教程

    Python 的 Flask 框架中实现简单的登录功能的教程 , 登录是各个 web 框架中的基础功能 , 需要的朋友可以参考下 回顾 在前面的系列章节中, 我们创建了一个数据库并且学着用用户和邮件来 ...

  5. MVC框架实现用户的登录注册功能

    MVC是什么? MVC,全称model view controller-模型,视图,控制器 model是将数据库中的表到Java中变成实体类 view是编写JSP页面 controller是用来业务逻 ...

  6. SpringBoot实现登录注册(ajax)

    SpringBoot框架实现登录注册ajax 日期 1.项目分析,首先规划开发流程 2.创建数据表 3.先把application.properties配置写全 4.首先第一步,进行持久层开发 5.持 ...

  7. java实现用户登录注册功能(用集合框架来实现)

    需求:实现用户登录注册功能(用集合框架来实现) 分析: A:需求的类和接口 1.用户类 UserBean 2.用户操作方法接口和实现类 UserDao UserDaoImpl 3.测试类 UserTe ...

  8. MVC框架实现用户登录注册功能(连接数据库)

    目录 一.简单理解MVC框架 二.项目结构 三.项目源码 3.1 User 3.2 UserDao 3.3 RegisterDao 3.4 servletControll 3.5 servletCon ...

  9. [golang gin框架] 29.Gin 商城项目-用户登录,注册操作

    一.用户登录,注册界面展示说明 先看登录,注册界面以及相关流程,再根据流程写代码,一般网站的登录,注册功能都会在一个页面进行操作,还有的是在几个页面进行操作,这里讲解在几个页面进行注册的操作,步骤如下 ...

最新文章

  1. Java没有panel_java panel 问题
  2. hdu3786 找出直系亲属 水题
  3. 基于 EventBridge 构建 SaaS 应用集成方案
  4. jQuery EasyUI使用教程之创建标签页
  5. Kinect开发资源汇总
  6. python中的装饰器-(重复阅读)
  7. Apollo进阶课程㉝丨Apollo ROS原理—2
  8. Python中lambda表达式的语法与应用
  9. WDS部署服务所用的PXE引导文件
  10. Win10设置mac
  11. 前景检测算法(十二)--基于模糊Choquet积分
  12. 管理员后台爆破扫描器-WebCrack
  13. C#根据银行卡号获取银行
  14. C# 打印PDF文件
  15. 新大陆云平台的.jar .sdk打包
  16. wifi连接上不能上网怎么办服务器无响应,​wifi连接上不能上网是怎么回事,看完你就恍然大悟了...
  17. IntelliJ IDEA 如何设置author头注解
  18. close 和 shutdown
  19. android的数据存储(3)(LitePal)
  20. springboot向word文档插入内容和图片

热门文章

  1. nodejs 工作线程的基本使用(worker_threads)
  2. 【Node.js】制作Steam自动发货机器人(一)
  3. [软件教程]专业屏幕捕捉软件 HyperSnap-DX 使用教程
  4. 实训总结-3g-王帅
  5. 如何将wma转换成mp3格式?
  6. 【Proteus仿真】【51单片机】基于电阻应变片电子秤设计
  7. 零基础学习CANoe Panel(10)—— 组合框(ComboBox)
  8. c语言螺旋数组拼题a,生物信息学_复习题及答案(打印) (1)
  9. 源码安装MySQL-5.7.38的脚本
  10. R6220关于breed刷机,breed-2022-07-24 r1416