1. 程式人生 > >JSP+Servlet+JavaBean寫使用者登入註冊

JSP+Servlet+JavaBean寫使用者登入註冊

Conn.java

package cn.cheen.utils;

import java.sql.*;
public class Conn {

	public static Connection getConnection(){
		Connection conn=null;
		try{
			Class.forName("com.mysql.jdbc.Driver");
			String url="jdbc:mysql://localhost:3306/toyfun?useUnicode=true&characterEncoding=UTF-8";
			String user="root";
			String password="x5";
			conn=DriverManager.getConnection(url,user,password);
			
		}catch(Exception e){
			e.printStackTrace();
		}
		return conn;
	}
	public static void release(Connection conn){
		if(conn!=null)
		try{
			conn.close();
		}catch(SQLException e){
			e.printStackTrace();
		}
	}
	public static void release(PreparedStatement pstmt){
		if(pstmt!=null)
		try{
			pstmt.close();
		}catch(SQLException e){
			e.printStackTrace();
		}
	}
	public static void release(ResultSet rs){
		if(rs!=null)
		try{
			rs.close();
		}catch(SQLException e){
			e.printStackTrace();
		}
	}
}



JSP頁面

    使用JSTL需要JSP頁面頭部寫入

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
    form部分 login.jsp
                               <form action="Login" method="post">
					<div class="form-group col-md-4 col-md-offset-4">
						<input class="form-control" type="text" name="username" value="" placeholder="使用者名稱">
					</div>
					<div class="form-group col-md-4 col-md-offset-4">
						<input class="form-control" type="password" name="password" value="" placeholder="密碼">
					</div>
					<div class="col-md-4 col-md-offset-4" style="text-align: center;">
						<input class="btn btn-primary" type="submit" value="登入">
					</div>
					<div class="col-md-12" style="text-align: center;">
						<span><font color="red">${loginms }</font></span>
						<h3></h3>
					</div>
					<div class="col-md-12" style="text-align: center; margin-top: 10px;">
						<a href="index.jsp">忘記密碼?</a> <a href="register.jsp">前去註冊</a>
					</div>
				</form>

                    register.jsp

<form action="Register" method="post">
					<div class="form-group col-md-4 col-md-offset-4">
						<input class="form-control" type="text" name="username" value="" placeholder="使用者名稱">
					</div>
					<div class="form-group col-md-4 col-md-offset-4">
						<input class="form-control" type="password" name="password" value="" placeholder="密碼">
					</div>
					<div class="form-group col-md-4 col-md-offset-4">
						<input class="form-control" type="password" name="repassword" value="" placeholder="確認密碼">
					</div>
					<div class="form-group col-md-4 col-md-offset-4">
						<input class="form-control" type="text" name="email" value="" placeholder="郵箱">
					</div>
					<div class="col-md-4 col-md-offset-4" style="text-align: center;">
						<input class="btn btn-default" type="reset" value="重置"> <input class="btn btn-primary" type="submit" value="提交">
					</div>
					<div class="col-md-12">
						<h3></h3>
					</div>
					<div class="col-md-12" style="text-align: center; margin-top: 10px;">
						<a href="index.jsp">返回主頁</a> <a href="login.jsp">前去登入</a>
					</div>
				</form>

Servlet:Login.java:dopost()

request.setCharacterEncoding("utf-8");  
        response.setContentType("text/html;charset=utf-8");  
        String username = request.getParameter("username");  
        String password = request.getParameter("password");  
        UserDaoImpl userDaoImpl = new UserDaoImpl();
        User user=userDaoImpl.Login(username, password);  
        if(user!=null){  
        	request.getSession().setAttribute("user", user);
//            request.getRequestDispatcher("index.jsp").forward(request, response);
        	response.sendRedirect("/Index.jsp");
        }else{
        	request.setAttribute("loginms", "帳號或密碼錯誤");
            request.getRequestDispatcher("login.jsp").forward(request, response);  
        }  

     Register.java:dopost()

request.setCharacterEncoding("utf-8");  
        response.setContentType("text/html;charset=utf-8");  
		String username = request.getParameter("username");
		String password = request.getParameter("password");
		String email = request.getParameter("email");
		User user = new User();
		user.setUsername(username);
		user.setPassword(password);
		user.setEmail(email);
		
		UserDaoImpl userDaoImpl = new UserDaoImpl();
		boolean succeed = userDaoImpl.AddUser(user);
		if(succeed) {
			System.out.println("註冊成功");
			request.getRequestDispatcher("login.jsp").forward(request, response);
		} else {
			System.out.println("註冊失敗");
			request.getRequestDispatcher("register.jsp").forward(request, response);
		}

Daomain:User.java

package cn.cheen.daomain;

public class User {
	private int id;
	private String username;
	private String password;
	private String name;
	private String email;
	private String phone;
	private String address;
	private String city;
	private String poscode;
	private String img;
	public String getUsername() {
		return username;
	}
	public User(int id, String username, String password, String name, String email, String phone, String address,
			String city, String poscode, String img) {
		super();
		this.id = id;
		this.username = username;
		this.password = password;
		this.name = name;
		this.email = email;
		this.phone = phone;
		this.address = address;
		this.city = city;
		this.poscode = poscode;
		this.img = img;
	}
	public User() {
		// TODO Auto-generated constructor stub
	}
	public void setUsername(String username) {
		this.username = username;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getEmail() {
		return email;
	}
	public void setEmail(String email) {
		this.email = email;
	}
	public String getPhone() {
		return phone;
	}
	public void setPhone(String phone) {
		this.phone = phone;
	}
	public String getAddress() {
		return address;
	}
	public void setAddress(String address) {
		this.address = address;
	}
	public String getCity() {
		return city;
	}
	public void setCity(String city) {
		this.city = city;
	}
	public String getPoscode() {
		return poscode;
	}
	public void setPoscode(String poscode) {
		this.poscode = poscode;
	}
	public String getImg() {
		return img;
	}
	public void setImg(String img) {
		this.img = img;
	}
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	
}

Dao:UserDao.java 此檔案為interface檔案為一個介面

package cn.cheen.dao;

import cn.cheen.daomain.User;

public interface UserDao {
	public User Login(String username, String password);
	public User FindUserByUsername(String username);
	public boolean DeleteUserByUsername(String username);
	public boolean UpdateUserByUsername(String username);
	public boolean AddUser(User user);
	
}

DaoImplement:UserDaoImpl.java 這裡在建立class的時候需要在下方框中新增前面建立的UserDao介面。

package cn.cheen.daoimpl;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import cn.cheen.dao.UserDao;
import cn.cheen.daomain.User;
import cn.cheen.utils.Conn;

import java.util.Collection;

public class UserDaoImpl implements UserDao {

	Connection conn = null;
	PreparedStatement pstmt = null;
	ResultSet rs = null;
	User user = null;

	@Override
	public User Login(String username, String password) {

		// 賦值
		try {
			conn = Conn.getConnection();
			// 靜態sql語句
			String sql = "select * from user where username=? and password=?";
			pstmt = (PreparedStatement) conn.prepareStatement(sql);
			pstmt.setString(1, username);
			pstmt.setString(2, password);
			rs = pstmt.executeQuery();
			if (rs.next()) {
				user = new User();
				user.setId(rs.getInt("u_id"));
				user.setUsername(rs.getString("username"));
				user.setPassword(rs.getString("password"));
				user.setName(rs.getString("u_name"));
				user.setEmail(rs.getString("u_email"));
				user.setPhone(rs.getString("u_phone"));
				user.setAddress(rs.getString("u_address"));
				user.setCity(rs.getString("u_city"));
				user.setPoscode(rs.getString("u_poscode"));
				user.setImg(rs.getString("u_img"));
				System.out.println("使用者:"+user.getUsername()+" 登入成功!");
			} else {
				System.out.println("使用者名稱或者密碼錯誤!");
			}
		} catch (SQLException e) {
			e.printStackTrace();
			System.out.println(e.getMessage().toString());
		} finally {
			Conn.release(conn);
			Conn.release(pstmt);
			Conn.release(rs);
		}
		return user;
	}

	@Override
	public User FindUserByUsername(String username) {

		// 賦值
		try {
			conn = Conn.getConnection();
			// 靜態sql語句
			String sql = "select * from user where username=?";
			pstmt = (PreparedStatement) conn.prepareStatement(sql);
			pstmt.setString(1, username);
			rs = pstmt.executeQuery();
			if (rs.next()) {
				user = new User();

				user.setUsername(rs.getString("username"));
				user.setName(rs.getString("u_name"));
				user.setEmail(rs.getString("u_email"));
				user.setPhone(rs.getString("u_phone"));
				user.setAddress(rs.getString("u_address"));
				user.setCity(rs.getString("u_city"));
				user.setPoscode(rs.getString("u_poscode"));
				user.setImg(rs.getString("u_img"));
				System.out.println("查詢成功!");
			} else {
				System.out.println("查詢失敗!");
			}
		} catch (SQLException e) {
			e.printStackTrace();
			System.out.println(e.getMessage().toString());
		} finally {
			Conn.release(conn);
			Conn.release(pstmt);
			Conn.release(rs);
		}
		return user;
	}

	@Override
	public boolean DeleteUserByUsername(String username) {
		int i = 0;
		boolean succeed = false;
		// 賦值
		try {
			conn = Conn.getConnection();
			// 靜態sql語句
			String sql = "delete * from user where username=?";
			pstmt = conn.prepareStatement(sql);
			pstmt.setString(1, username);
			i = pstmt.executeUpdate();
			if (i > 0) {
				succeed = true;
				System.out.println("刪除成功");
			}
		} catch (SQLException e) {
			e.printStackTrace();
			System.out.println(e.getMessage().toString());
		} finally {
			Conn.release(conn);
			Conn.release(pstmt);
			Conn.release(rs);
		}
		return succeed;

	}

	@Override
	public boolean UpdateUserByUsername(String username) {
		int i = 0;
		boolean succeed = false;
		// TODO Auto-generated method stub
		return succeed;
	}

	@Override
	public boolean AddUser(User user) {
		int i = 0;
		boolean succeed = false;
		String sql = "insert into user(username,password,u_email)values(?,?,?)";
		try {
			conn = Conn.getConnection();
			pstmt = conn.prepareStatement(sql);

			pstmt.setString(1, user.getUsername());
			pstmt.setString(2, user.getPassword());
			pstmt.setString(3, user.getEmail());
			i = pstmt.executeUpdate();
			if (i > 0) {
				succeed = true;
				System.out.println("插入成功");
			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			System.out.println(e.getMessage().toString());
		} finally {
			Conn.release(conn);
			Conn.release(pstmt);
		}
		return succeed;
	}

}

如果要使用JSTL和EL表示式,見此處