Java?web實(shí)現(xiàn)簡單注冊(cè)功能
今天寫了一個(gè)注冊(cè)功能,沒有用任何框架!發(fā)現(xiàn)不會(huì)寫了,中間查了好幾次百度。不過還是順利的寫完并且跑起來了。在這里記錄一下。我認(rèn)為有時(shí)候?qū)戇@些代碼還是對(duì)我們理解框架很有幫助的,因?yàn)榭蚣芤彩前凑者@些,對(duì)基礎(chǔ)進(jìn)行封裝后得到的。
首先是環(huán)境的搭建
1、環(huán)境的搭建:我用的jdk1.8 tomcat 7.0 eclipse neno 數(shù)據(jù)庫用的是mysql。
2、創(chuàng)建一個(gè)動(dòng)態(tài)的web工程(這個(gè)應(yīng)該都會(huì)的,這里就不再截圖說明了)
3、數(shù)據(jù)庫的創(chuàng)建
我這里創(chuàng)了一個(gè)名為t_t_user 的表,里面的字段也很簡單,就name password age 三個(gè)。
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、前端代碼寫好后就可以寫對(duì)應(yīng)的,上傳的請(qǐng)求的servlet,在這里我只判斷了姓名不能為空,其他的就一樣的寫就好了。還有這里有個(gè)問題,就是我沒有進(jìn)行編碼處理。在這里可能出現(xiàn)中文亂碼的問題,可以直接在servlet中加入處理中文亂碼的語句,或者是寫個(gè)過濾器,這里我就不再贅述了。
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="注冊(cè)成功"; ? ? ? ? ? ?}else if(info ==0){ ? ? ? ? ? ? ? ?message="注冊(cè)失敗"; ? ? ? ? ? ?}else if(info==-2){ ? ? ? ? ? ? ? ?message="sql錯(cuò)誤"; ? ? ? ? ? ?} ? ? ? ? ? ?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 層,處理邏輯,在我們寫代碼的時(shí)候,盡量的把邏輯處理寫到service,最大的好處就是安全,畢竟寫程序不只是實(shí)現(xiàn)功能那么簡單。
接口:
package com.proven.service; /** ?* @author ?曾煒龍 ?E-mail: 1501122784@qq.com ?* @date 創(chuàng)建時(shí)間:2017年6月26日 下午4:39:45? ?* @version 1.0? ?* @parameter ? ?* @since ? ?* @return ? ?*/ public interface UserService { ? ? int register(String name, String password, int age); }
實(shí)現(xiàn)類:這里我忘記判斷數(shù)據(jù)庫中是否已經(jīng)存在賬號(hào),判斷的話很簡單,就是通過賬號(hào)去查數(shù)據(jù)庫中是否有相同的數(shù)據(jù),如果有了就返回給servlet:該賬號(hào)已存在,如果沒有的話就繼續(xù)注冊(cè)。
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)建時(shí)間: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 ? ? ?*/ }
實(shí)現(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ū)動(dòng)類 ?? ? ? ? ? ? ? ? ? Class.forName("com.mysql.jdbc.Driver") ; ?? ? ? ? ? ? ? ? ? }catch(ClassNotFoundException e){ ?? ? ? ? ? ? ? ? ? System.out.println("找不到驅(qū)動(dòng)程序類 ,加載驅(qū)動(dòng)失?。?); ?? ? ? ? ? ? ? ? ? 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)過測試,運(yùn)行良好!
以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- javaweb實(shí)現(xiàn)注冊(cè)登錄頁面
- JavaWeb之Servlet注冊(cè)頁面的實(shí)現(xiàn)示例
- JavaWeb實(shí)現(xiàn)用戶登錄與注冊(cè)功能(服務(wù)器)
- JavaWeb實(shí)現(xiàn)用戶登錄與注冊(cè)功能
- JavaWeb實(shí)戰(zhàn)之用Servlet+JDBC實(shí)現(xiàn)用戶登錄與注冊(cè)
- JavaWeb簡單用戶登錄注冊(cè)實(shí)例代碼(有驗(yàn)證碼)
- JavaWeb 網(wǎng)上書店 注冊(cè)和登陸功能案例詳解
- JavaWeb表單注冊(cè)界面的實(shí)現(xiàn)方法
- JavaWeb實(shí)現(xiàn)用戶登錄注冊(cè)功能實(shí)例代碼(基于Servlet+JSP+JavaBean模式)
- Servlet+JavaBean+JSP打造Java Web注冊(cè)與登錄功能
相關(guān)文章
Ehcache簡介_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
這篇文章主要介紹了Ehcache簡介,使用Spring的AOP進(jìn)行整合,可以靈活的對(duì)方法的返回結(jié)果對(duì)象進(jìn)行緩存2017-07-07spring cloud openfeign 源碼實(shí)例解析
這篇文章主要介紹了spring cloud openfeign 源碼實(shí)例解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-10-10使用java自帶des加密算法實(shí)現(xiàn)文件加密和字符串加密
這篇文章主要介紹了使用java自帶des加密算法實(shí)現(xiàn)文件加密和字符串加密的示例,需要的朋友可以參考下2014-03-03java實(shí)現(xiàn)統(tǒng)計(jì)字符串中大寫字母,小寫字母及數(shù)字出現(xiàn)次數(shù)的方法示例
這篇文章主要介紹了java實(shí)現(xiàn)統(tǒng)計(jì)字符串中大寫字母,小寫字母及數(shù)字出現(xiàn)次數(shù)的方法,涉及java針對(duì)字符串的遍歷、判斷、運(yùn)算相關(guān)操作技巧,需要的朋友可以參考下2019-06-06Idea導(dǎo)入eureka源碼實(shí)現(xiàn)過程解析
這篇文章主要介紹了Idea導(dǎo)入eureka源碼實(shí)現(xiàn)過程解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-08-08