基于jsp+servlet完成的用戶注冊

?思考 : 需要創建實體類嗎? 需要創建表嗎

    |----User? 存在、不需要創建了!表同理、也不需要了

?

1.設計dao接口

package cn.javabs.usermanager.dao;import cn.javabs.usermanager.entity.User;/*** 用戶的dao接口的設計* @author Mryang**/
public interface UserDao {/*** 用戶登錄功能* @param username 參數  為用戶名* @param password 參數 為密碼* @return  user*/User login(String username , String password);/*** 用戶注冊* @param user 參數是  用戶對象!!!!!!!* @return  記錄條數  受影響的行數*/int register(User user);}

 2.UserDaoImpl 實現類

package cn.javabs.usermanager.dao.impl;import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;import cn.javabs.usermanager.dao.UserDao;
import cn.javabs.usermanager.entity.User;
import cn.javabs.usermanager.exception.UserLoginException;
import cn.javabs.usermanager.exception.UserRegisterException;
import cn.javabs.usermanager.util.JdbcUtil;
/*** userdao的實現類* @author Mryang*	調用 jdbc**靜態方法優于構造方法先執行**/
public class UserDaoImpl implements UserDao {@Overridepublic User login(String username, String password) {try {Connection con = JdbcUtil.getConnection();// 通過con 鏈接創建一個執行SQL語句的對象StatementStatement st = con.createStatement();ResultSet rs = st.executeQuery("select * from  user  where username = '"+username+"'  and password = '"+password+"';");if(rs.next()){// 有數據才執行以下// 類型   對象  = 。。。User user =  new User();//				rs.getString();//columnIndex  數據庫中表的列號  從0計數
//				rs.getString(columnLabel)//columnLabel 數據庫中表的列名//				String name = rs.getString("username");//name  admin
//				String pwd = rs.getString("password");//name  admin
//				System.out.println("name:"+name);
//				System.out.println("pwd:"+pwd);
//				user.setUsername(name);// 封裝。注入user.setUsername(rs.getString("username"));user.setPassword(rs.getString("password"));System.out.println("userDao中的user的內容是"+ user);return user;// 已經有了 username和password}else{//沒數據才執行以下return null;}} catch (SQLException e) {throw  new UserLoginException();}}@Overridepublic int register(User user) {try {// 獲取鏈接Connection conn = JdbcUtil.getConnection();// 創建執行SQL語句的對象Statement st = conn.createStatement();int row = st.executeUpdate("insert into user(username,password,sex) values ('"+user.getUsername()+"','"+user.getPassword()+"','"+user.getSex()+"')");return row;} catch (SQLException e) {throw  new UserRegisterException();}}}

  3.service接口設計

package cn.javabs.usermanager.service;import cn.javabs.usermanager.entity.User;public interface UserService {/*** 用戶登錄功能* @param username 參數  為用戶名* @param password 參數 為密碼* @return  user*/User userLogin(String username , String password);/*** 用戶注冊* @param user* @return*/int userRegist(User user);}

  

serviceImpl

package cn.javabs.usermanager.service.impl;import cn.javabs.usermanager.dao.UserDao;
import cn.javabs.usermanager.dao.impl.UserDaoImpl;
import cn.javabs.usermanager.entity.User;
import cn.javabs.usermanager.service.UserService;public class UserServiceImpl implements UserService {// 采用多態的形式進行實例化dao  UserDao dao = new  UserDaoImpl();@Overridepublic User userLogin(String username, String password) {//dao代表的是UserDao 這個接口
//		.login  用這個接口中的用戶登錄功能  并且傳了兩個參數給你return dao.login(username, password);}@Overridepublic int userRegist(User user) {return dao.register(user);}}

UserServlet

package cn.javabs.usermanager.web.servlet;import java.io.IOException;import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import cn.javabs.usermanager.entity.User;
import cn.javabs.usermanager.service.UserService;
import cn.javabs.usermanager.service.impl.UserServiceImpl;public class UserLoginServlet extends HttpServlet {public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {/** 1 set encoding*/response.setContentType("text/html");response.setCharacterEncoding("utf-8");request.setCharacterEncoding("utf-8");/** 2. get 前臺  的  參數*/String username = request.getParameter("username");String password = request.getParameter("password");/** 3. 將獲取到的用戶名和密碼傳遞給 userService!* 所以 得有  userService  沒有  怎么  辦?  實例化  就有了 */UserService userService = new UserServiceImpl();User u = userService.userLogin(username, password);//u可能為前面傳遞過來的user或是nullif(u == null){response.getWriter().write("您的用戶名或密碼有誤,請檢查!");response.setHeader("Refresh", "5;Url="+ request.getContextPath());}else{request.setAttribute("mark", "用戶登錄成功!");request.getRequestDispatcher("/message.jsp").forward(request, response);}}public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {doGet( request,  response);}}  

 register.jsp

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><base href="<%=basePath%>"><title>注冊</title></head><body><center><form action="<%=basePath%>servlet/UserRegistServlet" method="post" ><table border="1px" width="438px"   ><tr align="center"><td colspan="2"><a href="<%=basePath%>login.jsp">如已有用戶,點擊去登錄</a></td></tr><tr align="center"><td>用戶名</td><td><input type="text" name="username" ></td></tr><tr align="center"><td>密碼</td><td><input type="password" name="password" ></td></tr><tr align="center"><td>性別</td><td>男<input type="radio" name="sex" value="男" checked="checked" >女<input type="radio" name="sex" value="女" ></td></tr><tr align="center"><td colspan="2" ><input type="submit" value="免費注冊" ><input type="reset" value="重置內容" ></td></tr></table>   			</form></center></body>
</html>

  

轉載于:https://www.cnblogs.com/xiaoxiao5016/p/10598999.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/249339.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/249339.shtml
英文地址,請注明出處:http://en.pswp.cn/news/249339.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

vue resource then

https://www.cnblogs.com/chenhuichao/p/8308993.html

云開發創建云函數

安裝wx-server-sdk時候&#xff0c;終端報錯如下&#xff1a; 解決方法&#xff1a; 運行&#xff1a;npm cache clean --force即可 轉載于:https://www.cnblogs.com/moguzi12345/p/9758842.html

Java8新特性——函數式接口

目錄 一、介紹 二、示例 &#xff08;一&#xff09;Consumer 源碼解析 測試示例 &#xff08;二&#xff09;Comparator &#xff08;三&#xff09;Predicate 三、應用 四、總結 一、介紹 FunctionalInterface是一種信息注解類型&#xff0c;用于指明接口類型聲明…

CSS3筆記之基礎篇(一)邊框

效果一、圓角效果 border-radius 實心上半圓&#xff1a; 方法&#xff1a;把高度(height)設為寬度&#xff08;width&#xff09;的一半&#xff0c;并且只設置左上角和右上角的半徑與元素的高度一致&#xff08;大于也是可以的&#xff09;。 div {height:50px;/*是width…

JavaSE之Java基礎(1)

1、為什么重寫equals還要重寫hashcode 首先equals與hashcode間的關系是這樣的&#xff1a; 1、如果兩個對象相同&#xff08;即用equals比較返回true&#xff09;&#xff0c;那么它們的hashCode值一定要相同&#xff1b; 2、如果兩個對象的hashCode相同&#xff0c;它們并不一…

bootstarp table

https://www.cnblogs.com/laowangc/p/8875526.html

高級組件——彈出式菜單JPopupMenu

彈出式菜單JPopupMenu&#xff0c;需要用到鼠標事件。MouseListener必須要實現所有接口&#xff0c;MouseAdapter是類&#xff0c;只寫你關心的方法&#xff0c;即MouseAdapter實現了MouseListener中的方法 import javax.swing.*; import java.awt.*; import java.awt.event.Mo…

CSS3筆記之基礎篇(二)顏色和漸變色彩

效果一、顏色之RGBA RGB是一種色彩標準&#xff0c;是由紅(R)、綠(G)、藍(B)的變化以及相互疊加來得到各式各樣的顏色。RGBA是在RGB的基礎上增加了控制alpha透明度的參數。 語法&#xff1a; color&#xff1a;rgba(R,G,B,A) 以上R、G、B三個參數&#xff0c;正整數值的取值…

19_03_26校內訓練[魔法卡片]

題意 有n張有序的卡片&#xff0c;每張卡片上恰有[1,m]中的每一個數&#xff0c;數字寫在正面或反面。每次詢問區間[l,r]&#xff0c;你可以將卡片上下顛倒&#xff0c;問區間中數字在卡片上方的并的平方和最大是多少。q,n*m≤1,000,000。 思考 一個很重要的性質&#xff0c;若…

vue 靜態圖片引入

https://blog.csdn.net/weixin_33862188/article/details/93325502

c:if test=/c:if 使用

1、頁面引用<%taglib uri"http://java.sun.com/jsp/jstl/core" prefix"c"%> 2、整形判斷&#xff1a; <c:if test"${TEST 1}"> </c:if> 3、判斷非空&#xff1a; <c:if test"${empty TEST}"> TEST為空 <…

CSS3筆記之基礎篇(三)文字與字體

要點一、text-overflow與word-wrap text-overflow&#xff1a;設置是否使用一個省略標記&#xff08;...&#xff09;標示對象內文本的溢出。 word-wrap&#xff1a;設置文本行為&#xff0c;當前行超過指定容器的邊界時是否斷開轉行。 語法如下&#xff1a; 注意&#xff1…

XV6操作系統代碼閱讀心得(二):進程

1. 進程的基本概念 從抽象的意義來說&#xff0c;進程是指一個正在運行的程序的實例&#xff0c;而線程是一個CPU指令執行流的最小單位。進程是操作系統資源分配的最小單位&#xff0c;線程是操作系統中調度的最小單位。從實現的角度上講&#xff0c;XV6系統中只實現了進程&…

webservices

https://blog.csdn.net/VitaminZH/article/details/81123571

.Net Core 商城微服務項目系列(十二):使用k8s部署商城服務

一、簡介 本篇我們將會把商城的服務部署到k8s中&#xff0c;同時變化的還有以下兩個地方&#xff1a; 1.不再使用Consul做服務的注冊和發現&#xff0c;轉而使用k8s-dns來實現。 2.不再使用Ocelot作為業務網關&#xff0c;使用Traefik來實現。 正如上面所講&#xff0c;服務發現…

HTML、CSS知識點總結,淺顯易懂。

一&#xff0c;htmlcss基礎 1-1 Html和CSS的關系 學習web前端開發基礎技術需要掌握&#xff1a;HTML、CSS、JavaScript語言。下面我們就來了解下這三門技術都是用來實現什么的&#xff1a; 1. HTML是網頁內容的載體。內容就是網頁制作者放在頁面上想要讓用戶瀏覽的信息&#xf…

Thinking in Java 源代碼 source code 在IDEA上運行

參考我52的文章&#xff1a;https://www.52pojie.cn/thread-912471-1-1.html 轉載于:https://www.cnblogs.com/AI-Cobe/p/10605434.html

CSS知識體系圖譜

轉自&#xff1a;https://blog.csdn.net/A13330069275/article/details/78448415

python2 pip安裝包等出現各種編碼錯誤UnicodeDecodeError: 'ascii'(/或者utf-8) codec can't decode byte 0xd2......

1.問題描述&#xff1a; python2環境&#xff0c;pip安裝包時報錯UnicodeDecodeError: ascii(/或者utf-8) codec cant decode byte 0xd2... 類似如下情況 2.原因分析 一開始依據網上給出的教程修改python安裝路徑下的各種文件&#xff0c;添加各種編碼&#xff0c;始終無法解決…

mybatis自動生成代碼

https://blog.csdn.net/qq_31169429/article/details/89137896