亚洲国产欧美一区二区三区丁香婷,国产精品高潮呻吟久久av免费看 ,欧美无遮挡一区二区三区国产对白,日本一区二区免费不卡中文字幕

我的Java Web之路61 - 實現用戶注冊功能

我們先來考慮User實體類,前面已經提到過用戶提交的注冊信息至少包含用戶名和密碼,所以User實體類也必須有這兩項。。這是因為在此業(yè)務邏輯中我們生成了用戶ID,而此用戶ID有可能被上層組件用到。本篇文章簡單實現了用戶注冊的功能,還有很多可以優(yōu)化改進的地方:...




<meta charset="UTF-8">
租房網 - 登錄?

<body>
	

還沒有注冊?

網上注冊這事兒,可是咱平常用網站時最基本也是最關鍵的功能!今兒就給大伙兒說說我是咋設計并搞定這個注冊系統(tǒng)的,包括網頁怎么顯示,數據怎么存等等。

用戶注冊頁面的設計

首先,咱們來看下注冊頁的設計。雖然看著簡單,其實里面有不少小細節(jié)。用戶得在這兒填個用戶名和密碼,再點下注冊就搞定。這個頁面的設計要注重用戶體驗,比如輸入框的大小,按鈕的位置啥的。而且還要保證在各種設備上都能正常顯示,所以得做點兒響應式設計的活兒。

設計這頁時,我就想到大家很容易出錯,比如說輸錯密碼格式或用戶名已經有人用過了。所以,我就在頁面里加上一些驗證功能一旦你填入不對的信息注冊機出現success,馬上就能提醒你糾正哦~這種設計能讓大家省去不少麻煩,提高咱們賬號注冊的成功率

注冊請求的處理

當你點下那個注冊按鈕時,系統(tǒng)就會接收你的注冊請求!這東西先要傳送到控制器那塊去弄一弄。控制器的活兒就是收這么個請求,然后再把它交給服務層繼續(xù)處理。當中,控制器得確保請求沒問題,比如看看安全措施啊之類的。




<meta charset="UTF-8">
租房網 - 注冊成功!

<body>
	

注冊成功!請登錄!

看這兒!服務層是注冊系統(tǒng)的中心,專門處理所有的生意邏輯。這里,我們得看看用戶提交的東西合不合適,比如說密碼要一樣,用戶名不能已用等等。這些都過關后,它就會給新用戶編號,然后把他們的信息存進資料庫里。這一步可得小心點兒,一點點小錯都會讓注冊泡湯。

用戶ID的生成

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>



<meta charset="UTF-8">
租房網 - 注冊失敗!

<body>

注冊失?。≌堉匦?a href="register.html">注冊!

失敗原因:${errorMessage}

在用戶注冊這事兒上,咱們得慎重對待用戶ID的生成。這個ID可是用戶的獨一無二的身份象征,說不定以后啥時候就能用到。為了保證它的唯一性和安全性,我們的系統(tǒng)會自動生成用戶ID,這樣就不用擔心用戶手輸出錯。

選用戶ID的時候,要考慮到它能帶多少其他屬性。所以,我們選了字符串類型,能多放點東西!不過,有長處就有短板,用得爽了也可能遇到麻煩,像字符串過長,速度變慢之類的。所以,在挑數據類型的時候,咱們得多想想,找個最適合自己系統(tǒng)的辦法才行。

數據庫的設計與實現

在用戶注冊系統(tǒng)里,數據庫的搭建很重要!得給每個注冊用戶建個檔案,把他們的資料都放進去。至于這里面的門道,就涉及到怎么保證數據安全不被偷,還有同時來很多請求怎么辦等等這些問題了。

那咱們這兒就是用嵌入的方式來搞用戶列表,也就是得自己動手寫代碼來搞定它。雖然有點麻煩,但這樣能保證數據的一致性和安全!

package houserenter.entity;
public class User {
	private String id;
	private String name;
	private String password;
	public String getId() {
		return id;
	}
	public void setId(String id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	@Override
	public String toString() {
		return "User [name=" + name + ", password=" + password + "]";
	}
	
}

業(yè)務邏輯的實現

在服務層,搞業(yè)務邏輯最關鍵!咱們得寫代碼處理用戶注冊這樣的事情,每個步驟都要保證順利進行,對?當然想得周全點兒,比如用戶輸錯信息,或者數據庫出毛病啥的,這些都得考慮進去。

咱們這兒有個簡易的業(yè)務邏輯來應對注冊申請,主要是關注兩次輸入的密碼對不對得上,還有用戶名是不是已經有人用過了??粗@玩意兒挺簡單的,但其實里面有些小秘密,比如密碼要多長多復雜,再比如說碰到用戶名被占用該咋辦?

package houserenter.mapper;
import houserenter.entity.User;
public interface UserMapper {
	int cteateTable();
	
	int insert(User user);
	
	User selectByName(String name);
}

異常處理

要寫好程序,處理異??刹荒苌伲「鞣N可能出現的意外都得想清楚并寫代碼去應對。我們用Java里的異常機制來搞定各種問題,比如密碼不對,用戶名已存在之類的。

<?xml version="1.0" encoding="UTF-8" ?>


	
		create table if not exists user(id varchar(36) primary key, name varchar(32), password varchar(16))
	
	
		insert into user(id, name, password) values(#{id}, #{name}, #{password})
	
	
	

處理異常不光是讓系統(tǒng)更穩(wěn)重,還能幫咱們搞清楚到底哪里出了狀況。就像抓小偷那樣,快速抓住異常,修好它。這樣一來,咱們在編程序的時候就要特別留心,對各種各樣可能出現的毛病都得小心翼翼地搞定。

注冊機出現success

并發(fā)請求的處理

在真實的生產環(huán)境里,系統(tǒng)常常要對付好多人同時來注冊的情況。這些人要是同時用數據庫做事兒,那就得注意并發(fā)的事兒了。比如說,假如兩個人同時想注冊同一個名字,那數據庫可就容易出錯。

為了防止這種情況發(fā)生,我們得想點辦法。比如注冊機出現success,咱們可以在數據庫或者應用程序層上找解決方案。我們這邊就選了在數據庫層面給user表的name列加了個唯一性的規(guī)定。這樣就能保證同樣的名字不能重復注冊了。當然,你也可以考慮把相關操作都放在一起組成一個大事務,讓數據保持一致性。

總結與展望

package houserenter.service;
import java.util.UUID;
import javax.annotation.PostConstruct;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import houserenter.entity.User;
import houserenter.mapper.UserMapper;
@Service
public class UserService {
	@Autowired
	private UserMapper userMapper;
	
	@PostConstruct
	public void init() {
		userMapper.cteateTable();
	}
	
	public User register(String userName, String password, String passwordConfirmed) throws Exception {
		
		if (!passwordConfirmed.equals(password)) {
			throw new Exception("兩次輸入的密碼不一致,請重新輸入!");
		}
		
		User user = userMapper.selectByName(userName);
		if (user != null) {
			throw new Exception("用戶名 " + userName + " 已經注冊過,請選擇其他用戶名!");
		}
		
		user = new User();
		user.setId(UUID.randomUUID().toString());
		user.setName(userName);
		user.setPassword(password);
		userMapper.insert(user);
		
		return user;
	}
}

搞定!我們終于設計并實施了用戶注冊系統(tǒng)。從網頁設計到數據庫操作,每個環(huán)節(jié)我們都仔仔細細地考慮過咯。盡管,這個系統(tǒng)還能更好,但是已經足夠應付最基礎的用戶注冊要求。

未來咱們還能給這玩意兒優(yōu)化升級,比如加些安全驗證啥的,讓它更靠譜點兒。當然了注冊機出現success,也別忘了把它推廣到別的地方去,好讓更多人用得上。

最后,我想要問問你們:咱們做一個用戶注冊系統(tǒng)的話,哪步最關鍵?快來評論區(qū)說說看,順便給文章點個贊轉發(fā)一下!

發(fā)表評論