基於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 {

	
	@Override
	public User login(String username, String password) {
		
		
		try {
			
			Connection con = JdbcUtil.getConnection();
			
			// 通過con 鏈接創建一個執行SQL語句的對象Statement
			Statement 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();
		}
		
		
		
	}

	@Override
	public 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();
	
	@Override
	public User userLogin(String username, String password) {
		//dao代表的是UserDao 這個接口
//		.login  用這個接口中的用戶登錄功能  並且傳了兩個參數給你
		return dao.login(username, password);
	}

	@Override
	public 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或是null
		
		if(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>

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM