Java组件javabean用户登录实例详解

网友投稿 321 2023-07-16


Java组件javabean用户登录实例详解

本文简单讲述使用javabean实现用户登录,包括用户登录,注册和退出等。

1.关于javabean

JavaBean 是一种JAVA语言写成的可重用组件。为写成JavaBean,类必须是具体的和公共的,并且具有无参数的构造器。JavaBean 通过提供符合一致性设计模式的公共方法将内部域暴露成员属性,set和get方法获取。众所周知,属性名称符合这种模式,其他Java 类可以通过自省机制发现和操作这些JavaBean 的属性。

2.系统架构

2.1登录用例图

2.2页面流程图

2.3系统架构图

2.4数据库设计

本例使用oracle数据库

用户表包括id,用户名,密码,email,共4个字段

-- Create table

create table P_USER

(

id VARCHAR2(50) not null,

username VARCHAR2(20),

password VARCHAR2(20),

email VARCHAR2(50)

)

tablespace USERS

pctfree 10

initrans 1

maxtrans 255

storage

(

initial 64

minextents 1

maxextents unlimited

);

-- Add comments to the table

comment on table P_USER

is '用户表';

-- Add comments to the columns

comment on column P_USER.id

is 'id';

comment on column P_USER.username

is '用户名';

comment on column P_USER.password

is '密码';

comment on column P_USER.email

is 'email';

3.javabean编写

3.1开发数据库底层处理javabean

DBAcess.java

package com.baosight.bean;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Statement;

/**数据库操作类

*

Title:DBAcess

*

Description:TODO

*

Company:

* @author yuan

* @date 2016-5-22 下午12:40:24*/

public class DBAcess {

private String driver = "oracle.jdbc.driver.OracleDriver";

private String url = "jdbc:oracle:" + "thin:@127.0.0.1:1521:orcl";

private String username = "scott";

private String password = "tiger";

private Connection conn;

private Statement stm;

private ResultSet rs;

//创建连接

public boolean createConn() {

boolean b = false;

try {

Class.forName(driver);// 加载Oracle驱动程序

conn = DriverManager.getConnection(url, username, password);

b = true;

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}// 获取连接

catch (ClassNotFoundException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

return b;

}

//修改

public boolean update(String sql){

boolean b = false;

try {

stm = conn.createStatement();

stm.execute(sql);

b = true;

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

return b;

}

//查询

public void query(String sql){

try {

stm = conn.createStatement();

rs = stm.executeQuery(sql);

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

//判断有无数据

public boolean next(){

boolean b = false;

try {

if(rs.next()){

b = true;

}

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

return b;

}

//获取表字段值

public String getValue(String field) {

String value = null;

try {

if (rs != null) {

value = rs.getString(field);

}

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

return value;

}

//关闭连接

public void closeConn() {

try {

if (conn != null) {

conn.close();

}

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

//关闭statement

public void closeStm() {

try {

if (stm != null) {

stm.close();

}

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

//关闭ResultSet

public void closeRs() {

try {

if (rs != null) {

rs.close();

}

} catch (SQLException e) {

http:// // TODO Auto-generated catch block

e.printStackTrace();

}

}

public String getDriver() {

return driver;

}

public void setDriver(String driver) {

this.driver = driver;

}

public String getUrl() {

return url;

}

public void setUrl(String url) {

this.url = url;

}

public String getUsername() {

return username;

}

public void setUsername(String username) {

this.username = username;

}

public String getPassword() {

return password;

}

public void setPassword(String password) {

this.password = password;

}

public Statement getStm() {

return stm;

}

public void setStm(Statement stm) {

this.stm = stm;

}

public ResultSet getRs() {

return rs;

}

public void setRs(ResultSet rs) {

this.rs = rs;

}

public void setConn(Connection conn) {

this.conn = conn;

}

public Connection getConn() {

return conn;

}

}

上述数据库操作类使用JDBC连接数据库,并封装了连接数据库、查询、修改、关闭资源等方法。

3.2开发JavaBean业务逻辑组件

UserBean.java

package com.baosight.bean;

import com.baosight.util.GenerateUUID;

/**

*

Title:UserBean

*

Description:TODO

*

Company:

* @author yuan

* @date 2016-5-22 下午1:05:00*/

public class UserBean {

//登录验证

public boolean valid(String username,String password){

boolean isValid = false;

DBAcess db = new DBAcess();

if(db.createConn()){

String sql = "select * from p_user where username='"+username+"' and password='"+password+"'";

db.query(sql);

if(db.next()){

isValid = true;

}

db.closeRs();

db.closeStm();

db.closeConn();

}

return isValid;

}

//注册验证

public boolean isExist(String username){

boolean isValid = false;

DBAcess db = new DBAcess();

if(db.createConn()){

String sql = "select * from p_user where username='"+username+"'";

db.query(sql);

if(db.next()){

isValid = true;

}

db.closeRs();

db.closeStm();

db.closeConn();

}

return isValid;

}

//注册用户

public boolean add(String username,String password,String email){

boolean isValid = false;

DBAcess db = new DBAcess();

if(db.createConn()){

String sql = "insert into p_user(id,username,password,email) values('"+GenerateUUID.next()+"','"+username+"','"+password+"','"+email+"')";

isValid = db.update(sql);

db.closeStm();

db.closeConn();

}

return isValid;

}

}

上述业务逻辑javabean,定义了登录验证、注册验证和新增用户等方法

3.3关于生成唯一ID

上面在新增用户时需要插入ID,本例使用UUID来生成唯一ID

GenerateUUID.java

package com.baosight.util;

import java.util.Date;

/**

*

Title:GenerateUUIDhttp://

*

Description:TODO

*

Company:

* @author yuan

* @date 2016-5-22 下午1:31:46*/

public class GenerateUUID {

private static Date date = new Date();

// private static StringBuilder buf = new StringBuilder();

private static int seq = 0;

private static final int ROTATION = 99999;

public static synchronized long next(){

if (seq > ROTATION) seq = 0;

// buf.delete(0, buf.length());

date.setTime(System.currentTimeMillis());

String str = String.format("%1$tY%1$tm%1$td%1$tk%1$tM%1$tS%2$05d", date, seq++);

return Long.parseLong(str);

}

public static void main(String[] args) {

for(int i=0;i<100;i++){

System.out.println(next());

}

}

}

4.页面编写

4.1登录页面

login.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

<%

String path = request.getContextPath();

String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

%>

页面效果

4.2登录业务逻辑处理页面

login_action.jsp

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>

<%@ page import="java.sql.*" %>

<%@ page import="com.baosight.bean.*" %>

<%

String path = request.getContextPath();

String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

%>

<%

String username = request.getParameter("username");

String password = request.getParameter("password");

if(username==null||"".equals(username.trim())||password==null||"".equals(password.trim())){

//out.write("用户名或密码不能为空!");

System.out.println("用户名或密码不能为空!");

response.sendRedirect("login.jsp");

return;

//request.getRequestDispatcher("login.jsp").forward(request, response);

}

UserBean userBean = new UserBean();

boolean isValid = userBean.valid(username,password);

if(isValid){

System.out.println("登录成功!");

session.setAttribute("username", username);

response.sendRedirect("welcome.jsp");

return;

}else{

System.out.println("用户名或密码错误,登录失败!");

response.sendRedirect("login.jsp");

return;

}

%>

上面的JSP调用了Javabean进行业务处理

当用户名或密码为空时返回登录页面login.jsp

当登录成功后将用户信息保存到session,跳转到欢迎页面welcome.jsp

当登录失败时返回登录页面login.jsp

4.3登录成功欢迎页面

welcome.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

<%

String path = request.getContextPath();

String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

%>

页面效果

4.4退出登录业务处理页面

loginout.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

<%

String path = request.getContextPath();

String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

%>

<%

session.removeAttribute("username");

response.sendRedirect("login.jsp");

%>

从session中移除用户信息,跳转到登录页面login.jsp

4.5用户注册页面

register.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

<%

String path = request.getContextPath();

String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

%>

运行效果

4.6注册业务处理页面

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

<%@ page import="java.sql.*" %>

<%@ page import="com.baosight.bean.*" %>

<%

String path = request.getContextPath();

String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

%>

<%

String username = request.getParameter("username");

String password1 = request.getParameter("password1");

String password2 = request.getParameter("password2");

String email = request.getParameter("email");

if(username==null||"".equals(username.trim())||password1==null||"".equals(password1.trim())||password2==null||"".equals(password2.trim())||!password1.equals(password2)){

//out.write("用户名或密码不能为空!");

System.out.println("用户名或密码不能为空!");

response.sendRedirect("register.jsp");

return;

//request.getRequestDispatcher("login.jsp").forward(request, response);

}

UserBean userBean = new UserBean();

boolean isExit = userBean.isExist(username);

if(!isExit){

userBean.add(username, password1, email);

System.out.println("注册成功,请登录!");

response.sendRedirect("login.jsp");

return;

}else{

System.out.println("用户名已存在!");

response.sendRedirect("register.jsp");

return;

}

%>

上面的JSP调用了Javabean进行业务处理

当用户名或密码为空时返回注册页面register.jsp

当注册用户名在数据库不存在时,新增用户

新增成功后跳转到登录页面login.jsp

当注册用户名在数据库存在时,返回注册页面register.jsp

5.总结

本例使用javabean对数据库操作和业务逻辑处理进行了封装。

以上即为使用javabean实现用户登录的简单介绍,还需要不断完善,希望大家一起学习进步!


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:全面解析bootstrap格子布局
下一篇:IScroll5 中文API参数说明和调用方法
相关文章

 发表评论

暂时没有评论,来抢沙发吧~