Java?web實現(xiàn)簡單注冊功能
今天寫了一個注冊功能,沒有用任何框架!發(fā)現(xiàn)不會寫了,中間查了好幾次百度。不過還是順利的寫完并且跑起來了。在這里記錄一下。我認為有時候?qū)戇@些代碼還是對我們理解框架很有幫助的,因為框架也是按照這些,對基礎(chǔ)進行封裝后得到的。
首先是環(huán)境的搭建
1、環(huán)境的搭建:我用的jdk1.8 tomcat 7.0 eclipse neno 數(shù)據(jù)庫用的是mysql。
2、創(chuàng)建一個動態(tài)的web工程(這個應(yīng)該都會的,這里就不再截圖說明了)
3、數(shù)據(jù)庫的創(chuàng)建
我這里創(chuàng)了一個名為t_t_user 的表,里面的字段也很簡單,就name password age 三個。

4、數(shù)據(jù)庫創(chuàng)建好之后就開始寫前端代碼
前端寫的很簡單
<%@ 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>
</head>
<body>
?<p style="color:red;">${message}</p>
?<form action="${pageContext.request.contextPath }/login" method="post">
? ?姓名 <input ?type="text" name="name"/><br>
? ? 年齡 <input type="text" name="age"/><br>
? ? 密碼<input ?type="password" name="password"/><br>
? ? <input type="submit" value="提交">
?</form>
</body>
</html>5、前端代碼寫好后就可以寫對應(yīng)的,上傳的請求的servlet,在這里我只判斷了姓名不能為空,其他的就一樣的寫就好了。還有這里有個問題,就是我沒有進行編碼處理。在這里可能出現(xiàn)中文亂碼的問題,可以直接在servlet中加入處理中文亂碼的語句,或者是寫個過濾器,這里我就不再贅述了。
package com.proven.controller;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.proven.service.UserService;
import com.proven.service.impl.UserServiceImpl;
/**
?* Servlet implementation class login
?*/
@WebServlet("/login")
public class login extends HttpServlet {
? ? private static final long serialVersionUID = 1L;
? ? protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
? ? ? ?String name=request.getParameter("name");
? ? ? ?String password = request.getParameter("password");
? ? ? ?String ages = request.getParameter("age");
? ? ? ?int age = Integer.parseInt(ages);
? ? ? ?String message="";
? ? ? ?if(name.equals("")){
? ? ? ? ? ?message="用戶名不能為空";
? ? ? ? ? ?request.setAttribute("message", message);
? ? ? ? ? ?request.getRequestDispatcher("/index.jsp").forward(request, response);
? ? ? ?}else{
? ? ? ? ? ?UserService userService = new UserServiceImpl();
? ? ? ? ? ?int info = userService.register(name,password,age);
? ? ? ? ? ?if(info==1){
? ? ? ? ? ? ? ?message="注冊成功";
? ? ? ? ? ?}else if(info ==0){
? ? ? ? ? ? ? ?message="注冊失敗";
? ? ? ? ? ?}else if(info==-2){
? ? ? ? ? ? ? ?message="sql錯誤";
? ? ? ? ? ?}
? ? ? ? ? ?request.setAttribute("message", message);
? ? ? ? ? ?request.getRequestDispatcher("/index.jsp").forward(request, response);
? ? ? ?}
? ? }
? ? protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
? ? ? ? doGet(request, response);
? ? }
}6、service 層,處理邏輯,在我們寫代碼的時候,盡量的把邏輯處理寫到service,最大的好處就是安全,畢竟寫程序不只是實現(xiàn)功能那么簡單。
接口:
package com.proven.service;
/**
?* @author ?曾煒龍 ?E-mail: 1501122784@qq.com
?* @date 創(chuàng)建時間:2017年6月26日 下午4:39:45?
?* @version 1.0?
?* @parameter ?
?* @since ?
?* @return ?
?*/
public interface UserService {
? ? int register(String name, String password, int age);
}實現(xiàn)類:這里我忘記判斷數(shù)據(jù)庫中是否已經(jīng)存在賬號,判斷的話很簡單,就是通過賬號去查數(shù)據(jù)庫中是否有相同的數(shù)據(jù),如果有了就返回給servlet:該賬號已存在,如果沒有的話就繼續(xù)注冊。
package com.proven.service.impl;
import com.proven.dao.UserDao;
import com.proven.dao.impl.UserDaoImpl;
import com.proven.model.User;
import com.proven.service.UserService;
/**
?* @author ?曾煒龍 ?E-mail: 1501122784@qq.com
?* @date 創(chuàng)建時間:2017年6月26日 下午4:40:01?
?* @version 1.0?
?* @parameter ?
?* @since ?
?* @return ?
?*/
public class UserServiceImpl implements UserService{
? ? @Override
? ? public int register(String name, String password, int age) {
? ? ? ? UserDao userDao = new UserDaoImpl();
? ? ? ? User user = new User();
? ? ? ? user.setName(name);
? ? ? ? user.setPassword(password);
? ? ? ? user.setAge(age);
? ? ? ? int info= userDao.register(user);
? ? ? ? return info;
? ? }
}持久層:dao
接口:
package com.proven.dao;
import com.proven.model.User;
public interface UserDao {
? ? int register(User user);
? ? /**
? ? ?* @param username
? ? ?* @return
? ? ?*/
? ? //int findUserByName(String username);
? ? /**
? ? ?* @param user
? ? ?* @return
? ? ?*/
? ? //int register(User user);
? ? /**
? ? ?* 登錄方法
? ? ?* @param username
? ? ?* @param password
? ? ?* @return
? ? ?*/
}實現(xiàn)類:
package com.proven.dao.impl;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import com.proven.dao.UserDao;
import com.proven.model.User;
public class UserDaoImpl implements UserDao {
? ? @Override
? ? public int register(User user) {
? ? ? ? PreparedStatement pstmt=null;
? ? ? ? Connection conn =null;
? ? ? ? ? try{ ??
? ? ? ? ? ? ? ? //加載MySql的驅(qū)動類 ??
? ? ? ? ? ? ? ? Class.forName("com.mysql.jdbc.Driver") ; ??
? ? ? ? ? ? ? ? }catch(ClassNotFoundException e){ ??
? ? ? ? ? ? ? ? System.out.println("找不到驅(qū)動程序類 ,加載驅(qū)動失??!"); ??
? ? ? ? ? ? ? ? e.printStackTrace() ; ??
? ? ? ? ? ? ? ? } ??
? ? ? ? ? String url = "jdbc:mysql://localhost:3306/nokuangjia" ; ? ?
? ? ? ? ? ? ?String username = "root" ; ??
? ? ? ? ? ? ?String password = "" ;?
? ? ? ? ? ? ?String sql = "insert into t_t_user values(null,?,?,?)";
? ? ? ? ? ? ?try {
? ? ? ? ? ? ? ? ?conn = DriverManager.getConnection(url,username,password);
? ? ? ? ? ? ? ? ? pstmt = conn.prepareStatement(sql) ; ?
? ? ? ? ? ? ? ? ?pstmt.setString(1,user.getName() );
? ? ? ? ? ? ? ? ?pstmt.setString(2, user.getPassword());
? ? ? ? ? ? ? ? ?pstmt.setInt(3, user.getAge());
? ? ? ? ? ? ? ? ?int info = pstmt.executeUpdate();
? ? ? ? ? ? ? ? ?return info;
? ? ? ? ? ? } catch (SQLException e) {
? ? ? ? ? ? ? ? ?System.out.println("數(shù)據(jù)庫連接失??!"); ?
? ? ? ? ? ? ? ? e.printStackTrace();
? ? ? ? ? ? ? ? return -2;
? ? ? ? ? ? }finally {
? ? ? ? ? ? ? ? try {
? ? ? ? ? ? ? ? ? ? pstmt.close();
? ? ? ? ? ? ? ? } catch (SQLException e) {
? ? ? ? ? ? ? ? ? ? // TODO Auto-generated catch block
? ? ? ? ? ? ? ? ? ? e.printStackTrace();
? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? try {
? ? ? ? ? ? ? ? ? ? conn.close();
? ? ? ? ? ? ? ? } catch (SQLException e) {
? ? ? ? ? ? ? ? ? ? // TODO Auto-generated catch block
? ? ? ? ? ? ? ? ? ? e.printStackTrace();
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }
? ? }
/*
? ? public int findUserByName(String username) {
? ? ? ? QueryRunner qr = new QueryRunner(DBUtils.getDataSource());
? ? ? ? String sql = "select * from user where username = ?";
? ? ? ? try {
? ? ? ? ? ? User user = qr.query(sql, new BeanHandler<User>(User.class),
? ? ? ? ? ? ? ? ? ? username);
? ? ? ? ? ? if (user == null) {
? ? ? ? ? ? ? ? return 1;
? ? ? ? ? ? } else {
? ? ? ? ? ? ? ? return -1;
? ? ? ? ? ? }
? ? ? ? } catch (SQLException e) {
? ? ? ? ? ? e.printStackTrace();
? ? ? ? ? ? return -2;
? ? ? ? }
? ? }
? ? public int register(User user) {
? ? ? ? return 0;
? ? }*/
/* ?public int register(User user) {
? ? ? ? // 浣跨敤DBUtils灝唘ser瀵硅薄鍏ュ簱
? ? ? ? QueryRunner qr = new QueryRunner(DBUtils.getDataSource());
? ? ? ? String sql = "insert into t_t_user values(null,?,?,?)";
? ? ? ? try {
? ? ? ? ? ? return qr.update(sql, user.getName(), user.getPassword(),
? ? ? ? ? ? ? ? ? ? user.getAge());
? ? ? ? } catch (SQLException e) {
? ? ? ? ? ? e.printStackTrace();
? ? ? ? ? ? return -2;
? ? ? ? }
? ? }
? ? */
}在這里代碼就全部寫好。經(jīng)過測試,運行良好!
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- javaweb實現(xiàn)注冊登錄頁面
- JavaWeb之Servlet注冊頁面的實現(xiàn)示例
- JavaWeb實現(xiàn)用戶登錄與注冊功能(服務(wù)器)
- JavaWeb實現(xiàn)用戶登錄與注冊功能
- JavaWeb實戰(zhàn)之用Servlet+JDBC實現(xiàn)用戶登錄與注冊
- JavaWeb簡單用戶登錄注冊實例代碼(有驗證碼)
- JavaWeb 網(wǎng)上書店 注冊和登陸功能案例詳解
- JavaWeb表單注冊界面的實現(xiàn)方法
- JavaWeb實現(xiàn)用戶登錄注冊功能實例代碼(基于Servlet+JSP+JavaBean模式)
- Servlet+JavaBean+JSP打造Java Web注冊與登錄功能
相關(guān)文章
Ehcache簡介_動力節(jié)點Java學(xué)院整理
這篇文章主要介紹了Ehcache簡介,使用Spring的AOP進行整合,可以靈活的對方法的返回結(jié)果對象進行緩存2017-07-07
使用java自帶des加密算法實現(xiàn)文件加密和字符串加密
這篇文章主要介紹了使用java自帶des加密算法實現(xiàn)文件加密和字符串加密的示例,需要的朋友可以參考下2014-03-03
java實現(xiàn)統(tǒng)計字符串中大寫字母,小寫字母及數(shù)字出現(xiàn)次數(shù)的方法示例
這篇文章主要介紹了java實現(xiàn)統(tǒng)計字符串中大寫字母,小寫字母及數(shù)字出現(xiàn)次數(shù)的方法,涉及java針對字符串的遍歷、判斷、運算相關(guān)操作技巧,需要的朋友可以參考下2019-06-06
Idea導(dǎo)入eureka源碼實現(xiàn)過程解析
這篇文章主要介紹了Idea導(dǎo)入eureka源碼實現(xiàn)過程解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-08-08

