JavaWeb登录注册注销

1.1 创建数据库操作类:net.csdn.Dao,增删改查等功能

1.1.1 在net.csdn.Dao下创建class:UserDao.java

UserDao.java代码如下:

package net.csdn.Dao;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import net.csdn.Javabean.User;

public class UserDao {
	private static String url="jdbc:mysql:///user?useSSL=false&serverTimezone=UTC";//mysql8.0的参数设置
	private static String user="root";//root为数据库用户名
	private static String password="pwd";//pwd为数据库密码
	private static Connection conn = null;
	private PreparedStatement ps = null;
	private ResultSet rs = null;
	static{
		try {
			Class.forName("com.mysql.cj.jdbc.Driver"); //加载MySQL驱动程序
			//设置连接参数,获得数据库连接
			conn=DriverManager.getConnection(url, user, password);
			System.out.println("数据库连接成功!");
		} catch (Exception e){
			e.printStackTrace();//抛出运行时异常
		} 
	}
	/*
	 * 添加用户
	 */
	public void addUser(User user){
		String sql = "insert into User(username,password) values(?,?)";
		try {
			ps = conn.prepareStatement(sql);
			ps.setString(1, user.getUsername());
			ps.setString(2, user.getPassword());
			ps.executeUpdate();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	/*
	 * 根据用户名,查询用户
	 */
	public User searchUser(String username){
		String sql = "select username,password from User where username=?";
		User user =new User();
		try {
			ps = conn.prepareStatement(sql);
			ps.setString(1,username);
			rs=ps.executeQuery();
			while (rs.next()) {
				user.setUsername(rs.getString("username"));
				user.setPassword(rs.getString("password"));
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return user;
	}
	/*
	 * 根据用户名和密码,查询用户
	 */
	public User searchUser(String username,String password){
		String sql = "select username,password from User where username=? and password=?";
		User user =new User();
			try {
				ps = conn.prepareStatement(sql);
				ps.setString(1,username);
				ps.setString(2,password);
				rs=ps.executeQuery();
				while (rs.next()) {
					user.setUsername(rs.getString("username"));
					user.setPassword(rs.getString("password"));
				}
			} catch (SQLException e) {
				e.printStackTrace();
			}
		return user;
	}
	public User selectUser(String username, String password) {
		String sql = "select username, password from User where username=? and password=?";
		User user = new User();
		try {
			ps = conn.prepareStatement(sql);
			ps.setString(1,username);
			ps.setString(2,password);
			rs=ps.executeQuery();
			while (rs.next()) {
				user.setUsername(rs.getString("username"));
				user.setPassword(rs.getString("password"));
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return user;
	}
//	}

1.2 创建数据模型类:net.csdn.Javabean

1.2.1 在net.csdn.Javabean下创建User.java

User.java代码如下:

package net.csdn.Javabean;
/**
 * javabean实体层,封装数据。
 * @author Allow
 *
 */
public class User {
	private String username;
	private String password;
	
	public String getUsername() {
		return username;
	}
	public void setUsername(String username) {
		this.username = username;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	@Override
	public String toString() {
		return "User [username=" + username + ", password=" + password +  "]";
	}
	
}

1.3 创建业务层类net.csdn.Service,如:判断用户是否已经注册等

1.3.1 在net.csdn.Service下创建UserException.java和UserService.java

UserException.java如下:

package net.csdn.Service;

public class UserException extends Exception {

	public UserException(){
		super();
	}
	public UserException(String message, Throwable cause){
		super(message, cause);
	}
	public UserException(String message){
		super(message);
	}
	public UserException(Throwable cause){
		super(cause);
	}
}

UserService如下:

package net.csdn.Service;

import cn.csdn.Javabean.User;
import cn.csdn.Dao.UserDao;

/**
 * service 业务层
 * @author Allow
 *
 */
public class UserService {
	private UserDao userDao = new UserDao();
	
	//注册功能
	public void regist(User user) throws UserException {
		/**
		 * 1.使用用户名去查询,如果返回null,完成添加
		 * 2.如果返回的不是null,抛出异常!
		 */
		User user1 = userDao.searchUser(user.getUsername());
		
		if(user1.getUsername() != null){
			throw new UserException("用户名" + user.getUsername() + ",已经被注册过了!");
		}else {
			userDao.addUser(user);
		}
	}
	//登录功能
	public void login(User user) throws UserException{
		User user1 = userDao.selectUser(user.getUsername(),user.getPassword());
		if (user1.getUsername()==null||user1.getPassword()==null) {
			throw new UserException("用户名或密码错误,请重新登录!");
		}
		
	}
}

1.4 创建控制层类net.csdn.Sevlet,控制页面之间的跳转

在net.csdn.Sevlet下创建LoginServlet.java和RegistUser.java以及LogoutServlet.java

LoginServlet.java如下:

package net.csdn.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 javax.servlet.http.HttpSession;

import com.mysql.cj.Session;

import net.csdn.Javabean.User;
import net.csdn.Service.UserService;

public class LoginServlet extends HttpServlet{
	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException{
		request.setCharacterEncoding("utf-8");//处理POST请求的编码问题
		response.setContentType("text/html;charset=utf-8");//响应编码问题
		//依赖UserServlet
		UserService userService = new UserService();
		String username = request.getParameter("administer");
		String password = request.getParameter("upwd");

		User user = new User();
		user.setUsername(username);
		user.setPassword(password);

		try {
			userService.login(user);
			
			HttpSession session = request.getSession();
			session.setMaxInactiveInterval(3600);
			String str3 = request.getParameter("administer");
			String str4 = request.getParameter("upwd");
			String admi = new String(str3.getBytes("utf-8"),"UTF-8");
			String upwd = new String(str4.getBytes("ISO-8859-1"),"UTF-8");
			session.setAttribute("name", admi);
			session.setAttribute("pwd", upwd);
			response.sendRedirect("main.jsp");
			//request.getRequestDispatcher("/main.jsp").forward(request, response);
		} catch (Exception e) {
			request.setAttribute("msg", e.getMessage());
			request.getRequestDispatcher("/login.jsp").forward(request, response);
		}

}

RegistUser.java如下:

package net.csdn.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 net.csdn.Javabean.User;
import net.csdn.Service.UserException;
import net.csdn.Service.UserService;

public class RegistUser extends HttpServlet {
	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		request.setCharacterEncoding("utf-8");//处理POST请求的编码问题
		response.setContentType("text/html;charset=utf-8");//响应编码问题
		
		//把页面发送请求中的用户名和密码封装到User中
		String username = request.getParameter("admin");
		String password = request.getParameter("pwd");
		User user = new User();
		user.setUsername(username);
		user.setPassword(password);
		try {
			//依赖UserServlet
			UserService userService = new UserService();
			userService.regist(user);
			request.getRequestDispatcher("/success.jsp").forward(request, response);
		} catch (Exception e) {
			request.setAttribute("msg", e.getMessage());
			request.getRequestDispatcher("/regist.jsp").forward(request, response);
		}
	}
}

1.5 注销功能LogoutServlet.java

package cn.TaylorPublic.Servlet;
 
import java.io.IOException;
 
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
public class LogoutServlet extends HttpServlet {
 
	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
//		request.getSession().removeAttribute("existUser");
		request.getSession().invalidate();
		response.getWriter().println("fuck you have logout!");
		response.sendRedirect("client.jsp");
	}
 
	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
 
		doGet(request, response);
	}
 
}

1.6 创建主界面main.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>My JSP 'main.jsp' starting page</title>
    

  </head>
  
  <body>
    <h1>登录成功!欢迎
    <% out.print(session.getAttribute("name"));%>
    使用本系统!
    </h1>
    <div>
    	<div>
    			<%
						if(session.getAttribute("name")==null){
						%>
							<div><a href="login.jsp">登录
							<%
						
						%>
						</a></div>
						
							<% 
						}else{
						%>
						<div><a href="LogoutServlet">注销
							<% 
		        			        
		        		}
		        		%>
		        		</a>
		        		</div>
		    </div>
		  </div>
  </body>
<html>

1.7 创建登录界面login.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>
	<meta http-equiv="pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="expires" content="0">    
	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
	<meta http-equiv="description" content="This is my page">
	<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->
  </head>
  
<style type="text/css">
body {
margin: 0;
padding: 0;
color: #666;
background: #c1d2fe;
font-family: Verdana, sans-serif
}


.form_login {
max-width: 640px;
margin: auto;
text-align: center;
padding-top: 100px;
}

.form-group {
width: 355px;
margin: 0 auto;
height: 50px;
margin-bottom: 20px;
}

.form-group .fa {
display: block;
width: 50px;
height: 50px;
float: left;
}

.form-group .form-control {
display: block;
width: 300px;
height: 48px;
float: left;
border: 1px solid #ccc;
padding: 0;
margin-left: 0;
text-indent: 1em;
themeColor: #00a988;
}

.form-group .form-control:hover {
border: 1px solid #0160A0;
}

.form-group .checkfont {
color: #666;
}

.form-group .btn {
width: 350px;
height: 50px;
background-color: #0160A0;
border: 0px;
color: #fff;
font-size: 14px;
}

.fa-user {
background: url(http://hovertree.com/texiao/mobile/10/images/user.png) no-repeat center;
}

.fa-key {
background: url(http://hovertree.com/texiao/mobile/10/images/pw.png) no-repeat center;
}

.hovertree_form_footer {
margin-top: 100px;
font-size: 14px;
color: #5B809A;
}
.form_logo{font-size:26px;}a{color:gray}

</style>
<body>
<div class="form_login">
<div class="form_logo"><img src="" />
<br />
</div>
<form method="post" role="form" id="form_login" action="LoginServlet">

<div class="form-group">
<i class="fa fa-user"></i>
<input type="text" class="form-control" name="administer" id="username" placeholder="Username" autocomplete="off">
</div>

<div class="form-group">
<i class="fa fa-key"></i>
<input type="password" class="form-control" name="upwd" id="password" placeholder="Password" autocomplete="off">
</div>
<div class="form-group" style="height:25px; line-height:25px; text-align:left;">
<input type="checkbox" class="" name="checkbox" id="checkbox" placeholder="checkbox" autocomplete="off">
<label class="checkfont" for="checkbox" >记住我的帐号</label>
</div>
<div class="form-group">
<button type="submit" class="btn btn-primary btn-block btn-login">登录</button>

</div>

</form>

</div>
</body>
</html>

1.8 创建注册界面regist.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>My JSP 'Registered.jsp' starting page</title>
    
	<meta http-equiv="pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="expires" content="0">    
	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
	<meta http-equiv="description" content="This is my page">
	<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->

  </head>
  
  <body>
	<center>
			管理员注册页面
			<form action="RegistUser" method="get">
				<table border=1px>
					<Tr>
						<td>用户名:</td>
						<td><input type="text" name="admin"></td>
					</Tr>
					<Tr>
  						<td>密    码:</td>
  						<td><input type="password" name="pwd"></td>
  					</Tr>
  					<tr>
  						<td colspan="2" align="center"><input type="submit" value="注册"></td>
  					</tr>
				</table>
			</form>
			<p style="color:red;font-weight:500">${msg }</p>
	</center>
  </body>
<html>

1.9 配置web.xml

<servlet>
    <servlet-name>RegistUser</servlet-name>
    <servlet-class>net.csdn.Servlet.RegistUser</servlet-class>
  </servlet>
  <servlet>
    <servlet-name>LoginServlet</servlet-name>
    <servlet-class>net.csdn.Servlet.LoginServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>RegistUser</servlet-name>
    <url-pattern>/RegistUser</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>LoginServlet</servlet-name>
    <url-pattern>/LoginServlet</url-pattern>
  </servlet-mapping>


      <servlet>
    <servlet-name>LogoutServlet</servlet-name>
    <servlet-class>net.csdn.Servlet.LogoutServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>LogoutServlet</servlet-name>
    <url-pattern>/LogoutServlet</url-pattern>
  </servlet-mapping>
原创文章 6 获赞 12 访问量 808

猜你喜欢

转载自blog.csdn.net/qq_40602986/article/details/86023983