JavaWeb个人博客项目:手把手教你实现博客后台系统之登录与注册模块4

10 篇文章 10 订阅
订阅专栏
9 篇文章 10 订阅
订阅专栏
2 篇文章 1 订阅
订阅专栏

后台系统的所有界面图以及之前的准备工作欢迎看我之前的博文>3<

有任何问题欢迎下方评论=W=

一、图片效果

①项目目录图1与图2

②登录模块图

③注册模块图


二、设置字符集过滤器

①Java Resources的src-->建立package,命名为filter-->创建一个DoFilter的java文件,具体代码如下

(PS.这个过滤器我也是仿照csdn一个老哥的做的,在此感谢这位老哥>3<)

DoFilter.java文件:

package filter;

import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;

public class DoFilter implements Filter {

		public DoFilter(){
			System.out.println("过滤器构造");
		}
		public void destroy() {
			System.out.println("过滤器销毁");
		}
		public void doFilter(ServletRequest request, ServletResponse response,FilterChain chain) throws IOException, ServletException {
			request.setCharacterEncoding("utf-8"); //将编码改为utf-8
			response.setContentType("text/html;charset=utf-8");
			chain.doFilter(request, response);
		}
	 
		public void init(FilterConfig arg0) throws ServletException {
			System.out.println("过滤器初始化");
		}
	 
	}

②在WebContent-->WEB-INF-->web.xml中,设置如下内容

web.xml文件:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">
  <display-name>MyBlog</display-name>
  <filter>
    <filter-name>Dofilter</filter-name>
    <filter-class>filter.DoFilter</filter-class>
  </filter>
  <filter-mapping>
    <filter-name>Dofilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>
  <!-- 欢迎页,即进入项目的第一个界面 -->
  <welcome-file-list>
    <welcome-file>login.jsp</welcome-file>
  </welcome-file-list>
</web-app>

三、EL与JSTL表达式

①先载入JSTL的Jar包,在项目右键BuildPath-->Configure Build Path的Libraries里-->Add Jars-->选择目标Jar包

②为确保载入Jar包成功,应该在WebContent-->WEB-INF-->lib的文件夹中查看是否有如下内容,这次用的便是有jstl前缀的jar包

③在WebContent-->新建一个jsp文件,取名为base.jsp-->写入如下内容

(关于layui、bootstrap等框架资源百度即可,按照目录结构放入其中)

base.jsp文件:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<c:set var="ctx" value="${pageContext.request.contextPath}"></c:set>
<link rel="stylesheet" href="${ctx }/js/layui/css/layui.css">
<script src="${ctx }/js/jquery-3.2.1.min.js"></script>
<script src="${ctx }/js/layui/layui.js"></script>
<script src="${ctx}/js/bootstrap/js/bootstrap.min.js"></script>

四、登录模块

①逻辑分析(以下为我画的管理员登录业务流程图)

 

②详细的数据库之前的博文已经写了,为了更好阅读这里再写一次

建数据库,命名为blog-->建表,命名为dai_adm,设计表的字段如下

属性名

类型

长度

允许空

是否主键

说明

adm_id

tinyint

4

NOT NULL

主键

管理员id、自增

adm_name

varchar

20

NOT NULL

 

管理员名称

adm_password

varchar

20

NOT NULL

 

管理员密码

 

③既然是登录,自然要与数据库进行对接,这里我使用的是mysql数据库,要求要加载好mysql的jar包,步骤同之前JSTL的Jar包设置步骤

  3.1 在Java Resources的src下-->新建package,命名为util-->新建一个config.properties文件,内容如下

(由于我mysql是接入3306端口,数据库连接时使用的用户名是root,没有设置密码,所以这么设置,如果你有密码,pwd=你的密码)

config.properties文件:

driverClass=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/blog?useUnicode=true&characterEncoding=utf-8&useSSL=false
#mysql username
user=root
#mysql password
pwd=

  3.2 在Java Resources的src下-->util包中-->新建一个class文件,命名为DBUtil,代码如下

DBUtil.java文件:

package util;


import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Properties;

public class DBUtil {
	private static String driverClass;
	private static String url;
	private static String user;
	private static String pwd;
	
	//static block静态块
	static{
		//产生properties类的实例
		Properties prop = new Properties();
		//转换成文件流
		InputStream is = DBUtil.class.getClassLoader().getResourceAsStream("util/config.properties");
		
		try {
			prop.load(is);
			driverClass = prop.getProperty("driverClass").trim();
			url = prop.getProperty("url").trim();
			user = prop.getProperty("user").trim();
			pwd = prop.getProperty("pwd").trim();
			Class.forName(driverClass);
			
			//当前类的位置
			System.out.println(DBUtil.class.getResource(""));
			//当前类的根目录的位置
			System.out.println(DBUtil.class.getClassLoader().getResource(""));
		} catch (Exception e) {
			e.printStackTrace();
		}		
	}
	
	public static Connection getConnection(){
		// 数据库的连接
		Connection conn = null;
		try {
			conn = DriverManager.getConnection(url, user,pwd);
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return conn;
	}
	public static void closeConnection(Connection conn) throws SQLException {
		conn.close();
	}
	
}

④这个项目使用了MVC结构,登录模块也就是对管理员进行操作,这里先写pojo层,再写dao层

  4.1 在src中-->新建一个package,命名为pojo-->新建一个class文件,命名为Adm,内容如下

Adm.java文件:

package pojo;

public class Adm{
	private Integer adm_id;
	private String adm_name;
	private String adm_password;
	
	public Integer getAdm_id() {
		return adm_id;
	}
	public void setAdm_id(Integer adm_id) {
		this.adm_id = adm_id;
	}
	public String getAdm_name() {
		return adm_name;
	}
	public void setAdm_name(String adm_name) {
		this.adm_name = adm_name;
	}
	public String getAdm_passward() {
		return adm_password;
	}
	public void setAdm_passward(String adm_password) {
		this.adm_password = adm_password;
	}
}

   4.2 由于后来要做分页功能,所以还要封装一个类-->pojo包中-->新建一个class,命名为ChangePage,内容如下

ChangePage.java文件:

package pojo;

public class ChangePage {
	private int page; //默认第一页
	private int limit; //默认一页10条数据
	private int startRow = (page-1)*limit;//mysql里语句随之发生改变
	private String sort;//排序字段
	private String order;//排序关键字
	public int getPage() {
		return page;
	}
	public void setPage(int page) {
		this.page = page;
	}
	public int getLimit() {
		return limit;
	}
	public void setLimit(int limit) {
		this.limit = limit;
	}
	public int getStartRow() {
		return (page-1)*limit;
	}
	public void setStartRow(int startRow) {
		this.startRow = startRow;
	}
	public String getSort() {
		return sort;
	}
	public void setSort(String sort) {
		this.sort = sort;
	}
	public String getOrder() {
		return order;
	}
	public void setOrder(String order) {
		this.order = order;
	}
}

 4.3 在src中-->新建一个package,命名为dao-->新建一个interface文件,命名为AdmDao,内容如下

AdmDao.java文件:

package dao;

import java.util.ArrayList;

import pojo.Adm;

public interface AdmDao {
	//1.查询管理员,返回一个管理员类型  这是login里头的方法
	public Adm getAdm(String username,String password);
	//2查询所有的管理员
	public ArrayList<Adm> getAllAdm();
	//3.添加管理员
	public boolean insertAdm(String username,String pwd);
	//4.根据id删除管理员
	public boolean deleteAdm(int id);
	//5.修改管理员信息
	public boolean updateAdm(Adm a);
	//6.根据adm_name查询是否存在该用户,即id唯一,用户名唯一
	public boolean queryIsExist(String username);
	//7.根据id,查询一个管理员
	public Adm getOneAdm(int adm_id);
	//8 分页查询所有的管理员
	public ArrayList<Adm> getPageAdm(int page,int limit);
	
}

4.4 写AdmDao的实现类,本应该放在不同的包里,我当时为了简便,依然放在了dao包

dao包-->新建class文件,命名为AdmDaoImpl-->实现AdmDao接口,代码如下

AdmDaoImpl.java文件:

package dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import pojo.Adm;
import pojo.ChangePage;
import util.DBUtil;

public class AdmDaoImpl implements AdmDao {

	// 分页方法
	@Override
	public ArrayList<Adm> getPageAdm(int page, int limit) {
		ArrayList<Adm> adm = new ArrayList<Adm>();
		Connection conn = DBUtil.getConnection();
		ChangePage cp = new ChangePage();
		cp.setLimit(limit);
		cp.setPage(page);
		int startRow = cp.getStartRow();
		String sql = "select * from dai_adm limit " + startRow + "," + limit + "";
		// 预编译
		try {
			PreparedStatement prep = conn.prepareStatement(sql);
			ResultSet rst = prep.executeQuery();
			while (rst.next()) {
				Adm ad = new Adm();
				ad.setAdm_id(rst.getInt(1));
				ad.setAdm_name(rst.getString("adm_name"));
				ad.setAdm_passward(rst.getString("adm_password"));
				adm.add(ad);
			}
		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			try {
				DBUtil.closeConnection(conn);
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
		return adm;
	}

	// 查询所有的管理员
	@Override
	public ArrayList<Adm> getAllAdm() {
		ArrayList<Adm> adm = new ArrayList<Adm>();
		Connection conn = DBUtil.getConnection();
		// 在数据库中添加记录
		String sql = "select * from dai_adm";
		// 预编译
		try {
			PreparedStatement prep = conn.prepareStatement(sql);
			ResultSet rst = prep.executeQuery();
			while (rst.next()) {
				Adm ad = new Adm();
				ad.setAdm_id(rst.getInt(1));
				ad.setAdm_name(rst.getString("adm_name"));
				ad.setAdm_passward(rst.getString("adm_password"));
				adm.add(ad);
			}
		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			try {
				DBUtil.closeConnection(conn);
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
		return adm;
	}

	@Override
	public Adm getAdm(String username, String password) {
		Adm a = null;
		Connection conn = DBUtil.getConnection();
		String sql = "select * from dai_adm where adm_name = ? and adm_password = ?";
		// 预编译
		PreparedStatement prep;
		try {
			prep = conn.prepareStatement(sql);
			prep.setString(1, username);
			prep.setString(2, password);
			ResultSet rst = prep.executeQuery();
			if (rst.next()) {
				System.out.println("啊啊啊,我是servlet,我已经查到信息了!!!");
				a = new Adm();
				a.setAdm_id(rst.getInt("adm_id"));
				a.setAdm_name(rst.getString("adm_name"));
				a.setAdm_passward(rst.getString("adm_password"));
				return a;
			} else {
				// System.out.println(username+","+password);
			}
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			try {
				DBUtil.closeConnection(conn);
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
		return a;
	}

	// 3.添加管理员
	@Override
	public boolean insertAdm(String username, String pwd) {
		Connection conn = DBUtil.getConnection();
		// 在数据库中添加记录
		String sql = "insert into dai_adm(adm_name,adm_password) values(?,?)";
		// 预编译
		PreparedStatement prep;
		try {
			prep = conn.prepareStatement(sql);
			prep.setString(1, username);
			prep.setString(2, pwd);
			prep.executeUpdate();
			return true;
		} catch (SQLException e) {
			e.printStackTrace();
			return false;
		} finally {
			try {
				DBUtil.closeConnection(conn);
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
	}

	@Override
	public boolean deleteAdm(int adm_id) {
		Connection conn = DBUtil.getConnection();
		// 在数据库中删除记录
		String sql = "delete from dai_adm where adm_id = ?";
		// 预编译
		PreparedStatement prep;
		try {
			prep = conn.prepareStatement(sql);
			prep.setInt(1, adm_id);
			prep.executeUpdate();
			return true;
		} catch (SQLException e) {
			e.printStackTrace();
			return false;
		} finally {
			try {
				DBUtil.closeConnection(conn);
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
	}

	@Override
	public boolean updateAdm(Adm a) {
		Connection conn = DBUtil.getConnection();
		// 在数据库中修改记录
		String sql = "update dai_adm set adm_name = ?,adm_password = ? where adm_id=?";
		// 预编译
		PreparedStatement prep;
		try {
			prep = conn.prepareStatement(sql);
			prep.setString(1, a.getAdm_name());
			prep.setString(2, a.getAdm_passward());
			prep.setInt(3, a.getAdm_id());
			prep.executeUpdate();
			return true;
		} catch (SQLException e) {
			e.printStackTrace();
			return false;
		} finally {
			try {
				DBUtil.closeConnection(conn);
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
	}

	@Override
	public boolean queryIsExist(String username) {
		Connection conn = DBUtil.getConnection();
		// 在数据库中查询记录
		String sql = "select * from dai_adm where adm_name = ?";
		// 预编译
		PreparedStatement prep;
		try {
			prep = conn.prepareStatement(sql);
			prep.setString(1, username);
			ResultSet rst = prep.executeQuery();
			if (rst.next()) {
				return true;
			} else {
				return false;
			}

		} catch (SQLException e) {
			e.printStackTrace();

		} finally {
			try {
				DBUtil.closeConnection(conn);
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
		return false;
	}

	@Override
	public Adm getOneAdm(int adm_id) {
		Adm a = null;
		Connection conn = DBUtil.getConnection();
		// 在数据库中修改记录
		String sql = "select * from dai_adm where adm_id = ?";
		// 预编译
		PreparedStatement prep;
		try {
			prep = conn.prepareStatement(sql);
			prep.setInt(1, adm_id);
			ResultSet rst = prep.executeQuery();
			a = new Adm();
			if (rst.next()) {
				a.setAdm_id(rst.getInt(1));
				a.setAdm_name(rst.getString("adm_name"));
				a.setAdm_passward(rst.getString("adm_password"));
				return a;
			}

		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			try {
				DBUtil.closeConnection(conn);
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
		return a;
	}

}

      PS:这里有一个方法叫做getAllAdm(),还有一个方法叫做getPageAdm()。

      前者我是用来获得总共有多少条管理员信息,后者我是用来获得分页信息与分页数据的,前者本来不需要在数据库上走那么多步骤。

      因为ResultSet创建的对象可以使用last()方法跳到最后一条数据,然后再使用getRow()方法获得总数,这里建议大家按照这种方法。

 

⑤Service层:src-->新建package包,命名为servlet-->新建一个Servlet文件,命名为LoginServlet-->在URL mappings中改名为/login-->键入代码,如下

LoginServlet.java文件:

package servlet;

import java.io.IOException;
import java.io.PrintWriter;

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 dao.AdmDao;
import dao.AdmDaoImpl;
import pojo.Adm;

/**
 * Servlet implementation class LoginServlet
   WebServlet里的/login就是刚刚改的URL Mappings的内容
 */
@WebServlet("/login")
public class LoginServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public LoginServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 * void getSession()方法相当于得到一个session对象,而void setAttribute()和String Attribute分别是对属性赋值和得到属性值的方法。
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		//response.getWriter().append("Served at: ").append(request.getContextPath());
		request.setCharacterEncoding("utf-8");
		response.setContentType("text/html;charset=utf-8");
		
		PrintWriter out = response.getWriter();
		String name = request.getParameter("username");
		String pwd = request.getParameter("pwd");
		
		AdmDao a = new AdmDaoImpl();
		Adm adm = a.getAdm(name	, pwd);
		System.out.println(a.toString());
		if(adm!=null) {
			request.getSession().setAttribute("admin",adm);			
			//重定向到成功页面
			response.sendRedirect("index.jsp"); 
		}else {
			//out.println("啊啊啊,我应该转发到失败的界面了");
			request.setAttribute("errMsg", "账号或密码错误,请重新输入信息!");
			//转发到login界面
			request.getRequestDispatcher("login.jsp").forward(request, response); 
			return;
		}
		
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(request, response);
	}

}

⑥WebContent-->新建jsp文件,命名为login.jsp-->键入代码,如下(使用了bootstrap和layui框架)

login.jsp文件:

<%@ 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">
<link rel="stylesheet" href="./js/bootstrap/css/bootstrap.min.css">
<link rel="stylesheet" href="./css/b_register.css">
<%@include file="base.jsp"%>
<title>登录</title>
</head>
<body>
	<%
		String errorMsg = (String) request.getAttribute("errMsg");
		if (errorMsg == null) {
			errorMsg = "";
		}
	%>
	<div id="box">
		<!--  action="${ctx}/login" -->
		<form id="myform" method="post" action="${ctx}/login">
			<div class="form-group">
				<label for="username">用户名</label> <input type="text"
					class="form-control" id="username" name="username"
					placeholder="请输入用户名:"> <span id="tip"
					style="color: red; margin-top: 20px;"><%=errorMsg%></span>

			</div>

			<div class="form-group">
				<label for="pwd">密码</label> <input type="password"
					class="form-control" id="pwd" name="pwd" placeholder="请输入密码:">
			</div>

			<button type="submit" class="btn btn-default btn_" id="btn">确定</button>
			<span style="margin-left: 250px;"></span> <a href="register.jsp"><button
					type="button" class="btn btn-default btn_">注册</button></a>
		</form>
	</div>
	<script type="text/javascript">
		layui.use([ 'layer' ], function() {
			layui.use([ 'form' ], function() {
				var form = layui.form;
			});
			//	点击提交执行的内容
			$('#username').blur(function() {
				//或者取长度
				if ($("#username").val() == "") {
					layer.msg("用户名不能输入为空哦!", {
						icon : 2
					});
					return;
				}
			});
			//点击提交,表单验证
			$('#btn').click(function() {
				if ($("#pwd").val() === "") {
					layer.msg("密码不能输入为空哦!", {
						icon : 2
					});
					return;
				}
			});
		});
	</script>
</body>
</html>

5.1 这里CSS目录如下(CSS并不重要,可以自己调整)

5.2 b_register的css样式如下

b_register.css文件:

@CHARSET "UTF-8";
*{
	margin:0;
	padding:0;
}
body{
    background:url("./image/19.jpg") no-repeat;
}
#box{
	width:520px;
	height:400px;
	margin:200px auto;
	border-radius:20px;
	background-color: rgba(0, 0, 0, 0.3);
	box-shadow:1px 2px 5px black;
	padding: 1px;
	position:relative;
	background-image: url(./image/18.gif); 
    opacity: 0.8;
}
#myform{
	margin:30px;
}
span{
	margin-left:100px;
}
.btn_{
	color:tomato;
	margin-top:30px;
}

5.3 base的css样式如下

base.css文件:

@charset "UTF-8";
body {
	width: 100%;
	height: 100%;
	background: url('../css/image/18.gif');
	overflow: hidden;
}

 #box {
	height:550px;
	display:flex;
	align-items:center;
	justify-content:center;
	align-content:center;  
	
}

⑤当输入用户名或密码错误时,应该有的提示

⑥当输入密码正确时,应进入后台主界面,这里大家在WebContent里新建一个jsp文件,取名为index即可,这里放一张后台图,具体的下篇博文再更


五、注册模块 

①逻辑分析(以下为我画的管理员注册业务流程图,注册成功即自动跳转登录页面)

②Service层:这里主要就是首先判断你是否输入用户名,用户名输入过后判断是否这个用户名已经存在(用户名和id都是唯一的),然后再验证你两次密码是否相同,最后再进入注册。

所以说前台可以判断1是是否输入2是密码两次是否一致

后台连接数据库后应该是进行了两个操作1是判断用户名是否存在2是进行往数据库里增加数据

 

2.1 src-->在servlet包里-->新建一个Servlet文件,命名为RegisterServlet-->在URL mappings中改名为/register-->键入代码,如下

RegisterServlet.java文件:

package servlet;

import java.io.IOException;
import java.io.PrintWriter;

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 dao.AdmDao;
import dao.AdmDaoImpl;

/**
 * Servlet implementation class RegisterServlet
   WebServlet里的/register就是刚刚改的URL Mappings的内容
 */
@WebServlet("/register")
public class RegisterServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public RegisterServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		String result = "false";
		PrintWriter writer = null;
		try {
			PrintWriter out = response.getWriter();
			//1.接收参数
			String username = request.getParameter("username");
			String pwd = request.getParameter("pwd");
			AdmDao a = new AdmDaoImpl();
			boolean flag= a.insertAdm(username,pwd);
		    if(flag){
		    	result = "true";
			}
		    writer =  response.getWriter();
		    writer.write(result);
		}catch(Exception e) {
			e.printStackTrace();
		}finally {
			writer.flush();
			writer.close();
		}
		
		
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(request, response);
	}

}

2.2 src-->在servlet包里-->新建一个Servlet文件,命名为QueryAdmIsExist-->在URL mappings中改名为/isExist-->键入代码,如下

QueryAdmIsExist.java文件:

package servlet;

import java.io.IOException;
import java.io.PrintWriter;

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 dao.AdmDao;
import dao.AdmDaoImpl;

/**
 * Servlet implementation class QueryAdmIsExist
 */
@WebServlet("/isExist")
public class QueryAdmIsExist extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public QueryAdmIsExist() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse resp) throws ServletException, IOException {
		request.setCharacterEncoding("utf-8");
		resp.setCharacterEncoding("utf-8");
		resp.setContentType("text/html;charset=utf-8");
		//根据姓名查询用户是否存在 改的更完善了一点
		String result = "false";
		PrintWriter writer = null;
		try {
			String username = request.getParameter("username");
			AdmDao a = new AdmDaoImpl();
			boolean flag = a.queryIsExist(username);
			if(flag==true) {
				result = "true";
			}
			writer =  resp.getWriter();
			writer.write(result);
		} catch (Exception e) {
			e.printStackTrace();
		}finally {
			writer.flush();
			writer.close();
		}
		
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(request, response);
	}

}

③在WebContent下-->新建jsp文件,命名为register.jsp-->键入代码,如下(这里使用的是ajax,和上面登录模块不一样,注意区别)

register.jsp文件:

<%@ 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">
<link rel="stylesheet" href="./js/bootstrap/css/bootstrap.min.css">
<link rel="stylesheet" href="./css/b_register.css">
<%@include file="base.jsp"%>
<title>注册</title>
</head>
<body>
<div id="box">
<form id="myform"  method="post">
  <div class="form-group">
    <label for="username">用户名</label>
    <input type="text" class="form-control" id="username" name="username" placeholder="请输入用户名:">
    <span id="tip" style="color:red;margin-top:20px;"></span>
  </div>
  
  <div class="form-group">
    <label for="pwd">密码</label>
    <input type="password" class="form-control" id="pwd" name="pwd" placeholder="请输入密码:">
  </div>
   <div class="form-group">
    <label for="conFirmPwd">确认密码</label>
    <input type="password" class="form-control" id="conFirmPwd" name="conFirmPwd" placeholder="请再次输入密码:">
  </div>
  <button type="button" class="btn btn-default btn_" id = "btn">提交</button>
  <span style="margin-left:250px;"></span>
  <a href="login.jsp"><button type="button" class="btn btn-default btn_">返回</button></a>
</form>
</div>
</body>
<script>
layui.use([ 'layer' ], function() {
	/* alert(0); */
	layui.use([ 'form' ], function() {
		var form = layui.form;
	});
	var isOk = false;
	//	点击提交执行的内容
	$('#username').blur(function() {
		//或者取长度
		if ($("#username").val() == "") {
			layer.msg("不能输入为空哦!", {
				icon : 2
			});
			return;
		}else {
				$.post('isExist', 
				{
					username : $('#username').val()
				},
				function(result) { 
					//alert(typeof result);
					if(result=="true"){
						//alert(1);
						isOk = false;
						//利用jquery对元素设置样式
						$('#username').css("border", "1px solid red");
						//html() 设置标签之间的 内容
						$('#tip').html('该用户已存在');
						$('#tip').css("color", "red");
						return;
					}else{
						//alert(2);
						isOk = true;
						//利用jquery对元素设置样式
						$('#username').css("border", "1px solid gray");
						//html() 设置标签之间的 内容
						$('#tip').html('该用户名可用');
						$('#tip').css("color", "green");
					}
					
			}, "text");
		}
	});
	//点击提交,表单验证
	$('#btn').click(function() {
		if (!isOk) {
			return;
		}	
	  if($("#pwd").val() !== $("#conFirmPwd").val()){
			layer.msg("两次密码输入不同!",{
				icon : 2
			});
			return;
		}
		 //提交表单
   	   $.post("register",//后台地址
			{
				username: $("#username").val(),
					 pwd:$("#pwd").val(),
			},//需要提交到后台的数据
			function(result){
				//alert(typeof result);
				//alert(result);
				if (result) {
					//添加成功
					layer.msg("注册成功", {
						icon : 1
					});
					window.location.href = "login.jsp";
				}else{
					layer.msg("注册失败",{
						icon : 2
					});
					// 这里使用JQuery实现会有问题 
					document.getElementById("myform").reset();
					$('#tip').html("");
				}
			},
			"json"); 
		//清空表单
	});
});
</script>
</html>

④注册时用户名存在或可用的区别图片如下


欢迎关注我的个人微信公众号【大胖猫的马太效应】,回复关键字JavaWeb博客后台管理系统获得本后台项目所有源码噢~ 

最后有任何问题欢迎给我留言,我看到就一定会回复的>w< 

个人博客 java web
12-21
个人博客 java web myeclipse 直接导入项目
java web个人博客blog
11-08
个人写的博客,欢迎下载,对初学者很有帮助,有想法的可以留言交流!
基于javaweb+mysql的ssm博客管理系统(java+ssm+elementui+vue+layui+mysql)
最新发布
毕业javaweb,一直在线,欢迎私信
03-10 941
管理员主要功能:首页、个人中心、博主管理、文章分类管理、博客文章管理、论坛交流、留言板管理、系统管理;前台主要功能包括:首页、博客文章列表、论坛交流、系统公告、留言反馈、个人中心;
简单的个人博客javaweb项目
12-04
登录注册模块基本完善,ajax判断用户名,密码是否为空,是否错误,注册用户名是否存在。登录成功后简单的调用富文本编辑器进行博客编写,提交后能暂时显示所写博客
Java项目:个人博客管理系统(java+SSM+HTML+JS+jsp+mysql)
m0_66863468的博客
05-22 841
源码获取:俺的博客首页 "资源" 里下载! 项目介绍 管理员角色包含以下功能: 发表文章,查看文章,类别管理,添加类别,个人信息管理,评论管理,评论审核等功能。 用户角色包含以下功能: 首页,博客详情,文章分类,评论等功能。 环境需要 1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。 2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA; 3.tomcat环境:Tomcat 7.x,8.x,9.x版本均可 4.硬件环境:w.
Java项目-Javaweb实现个人博客
软件开发实战项目分享
12-01 4258
jsp和servlet实现的一个个人博客系统
基于JavaWeb实现个人博客系统
06-09
博客系统基于JSP/SERVLET来开发实现,前端基于Jquery+BootStrap+Ajax实现页面交互,数据库采用MYSQL,开发工具为IDEA或 Eclipse. 主要实现的功能为: 前端功能模块:文章查看、联系我们、工程介绍、分类查看博客...
基于Javaweb实现个人博客平台系统
06-18
个人博客管理系统的前端用户可在线查看博客户信息,相册信息,公告信息等。 进系统系统后台可以在线发表博客文章,管理文章分类,进行公告添加和管理进行投票管理,进行相册管理和朋友信息管理等。 系统基于Javaweb...
Javaweb个人博客管理系统 源码
11-25
Javaweb个人博客管理系统 源码
javaweb课程设计项目:基于ssm框架实现师科研信息管理系统.zip
10-20
javaweb课程设计项目:基于ssm框架实现师科研信息管理系统 javaweb课程设计项目:基于ssm框架实现师科研信息管理系统 javaweb课程设计项目:基于ssm框架实现师科研信息管理系统 javaweb课程设计项目:...
基于Javaweb个人博客系统的设计与实现源码
07-28
个人博客系统的设计与实现主要是为了博文、图片信息的展示、共享和管理,通过网络进行相互学习交流。在功能上中主要包括以下几点。 1.在博客前台页面中可以进行博文的展示、搜索以及相册图片的浏览查看。 2.在搜索...
javaweb搭建简易个人博客blog cat
01-17
一个javaweb搭建的个人博客,前台采用bootstrap等js插件完成,后台基于maven管理ssm框架搭建,前台访问界面:/blog-web/index.jsp,后台访问界面/blog-web/admin.jsp
JavaWeb 个人博客
03-15
java web个人博客系统,在myeclipse中运行,是由jsp+servlet+javabean
使用javaweb做的一个个人博客网站
01-05
使用javaweb做的一个个人博客网站
Java Web 开发 JSp期末大作业 个人博客系统
06-17
个人博客Blog系统 本人大学生,这是期末JSp的大作业,内有程序源码,数据库,实验报告一并打包 如果你也有JSp的期末大作业 一定适合你
web课程设计-基于Java web博客系统(源码+数据库+报告).zip
05-26
随着网络信息化的飞速发展,人们的生活学习已经离不开网络。网络信息的传递对人们的生活有着重要的影响。 各育、企业、政府等组织机构都推出了自己的网站。个人要跟上时代的发展,也必需拥有自己的个人网站博客是继Email、BBS、IM(即时通讯)之后出现的第四种网络交流方式,无论在国外还是国内,发展都非常迅速。因此,基于Java Web技术开发和设计的博客系统,运用MVC开发模式,Eclipse + Myeclipse集成开发环境,数据库技术等设计了博客系统。 本次课程设计主要阐述了不同用户对博客的不同管理,对管理员来说,有博主管理、在线统计等功能模块。对于普通用户来说,有注册登录、浏览文章、发表文章等功能模块。对博主来说,有博文发表和博文管理、博文类别和类别管理、博文评论和评论管理、修改密码、注册用户和管理等模块。 关键词:博客 JAVA WEB Tomcat服务器 MY SQL数据库 博文管理
基于JavaWeb的个人空间个人网站个人博客系统设计与实现
毕业作品网站
09-07 5297
用户名称(uname),用户密码(upassoword),用户邮箱(umail),uuid(uuid),用户头像存储路径(uimg),用户注册日期(udate),用户性别(ugender),用户真实姓名(urealname),用户个性签名(ubio)。通过四大统计数据的显示可以让管理员准确的直到网站在哪个时间段访问量多哪类内容是用户喜欢的以及从详细的数据日志统计表中可以看到什么人在什么时候干了什么事。5.2.5 后台日志管理(注册日志、用户操作日志)实现 31。5.1.8 文章发布页面的实现 27。
JavaWeb项目——博客系统
热门推荐
。。。
07-16 1万+
系统介绍 博客是互联网平台上的个人信息交流中心。通常博客就是用来发表文章,所有的文章都是按照年份和日期排列,有些类似斑竹的日记。看上去平淡无奇,毫无可炫耀之处,但它可以让每个人零成本、零维护地创建自己的网络媒体,每个人都可以随时把自己的思想火花和灵感更新到博客站点上。 使用说明 1.附加数据库 (1)进入mysql数据库,创建db_blog数据库(create database db_Blog;)...
javaweb个人博客网站
weixin_53707562的博客
10-16 411
javawebswing项目更多下载资源、学习资料请访问CSDN下载频道.javaweb课程设计管理系统项目-Java文档类资源-CSDN下载。Idea2014或以上。搭建视频程在压缩包中。
javaweb个人博客项目
05-18
好的,下面是一个简单的javaweb个人博客项目实现步骤: 1. 确定博客的基本功能:如用户注册登录、发表博客、修改博客、删除博客等。 2. 创建数据库:使用MySQL数据库来存储博客的相关信息,包括用户信息、博客信息等。 3. 设计数据表:根据博客的基本功能,设计相应的数据表,包括用户表、博客表等。 4. 编写JavaBean:根据设计的数据表,编写JavaBean来封装数据库中的数据。 5. 编写DAO类:编写DAO类来操作数据库,包括增、删、改、查等操作。 6. 编写Servlet:编写Servlet来处理用户请求,包括用户注册登录、发表博客、修改博客、删除博客等操作。 7. 编写JSP页面:编写JSP页面来展示博客信息,包括博客列表、博客详情、用户信息等。 8. 设计前端页面:使用HTML、CSS、JavaScript等技术来设计博客的前端页面,包括首页、博客列表页、博客详情页、用户登录页、用户注册页等。 9. 部署到服务器:将开发完成的javaweb个人博客项目部署到服务器上,让其他人也能够访问和使用。 以上就是javaweb个人博客项目实现步骤,需要注意的是,这只是一个简单的框架,具体的实现还需要根据具体的需求进行调整和改进。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
16
原创
123
点赞
516
收藏
292
粉丝
关注
私信
写文章

热门文章

  • JavaWeb个人博客项目:手把手教你实现博客后台系统之管理员管理模块5 14540
  • PHP:一个简单的后台注册登录的Demo 14018
  • JavaWeb个人博客项目:手把手教你实现博客后台系统之界面图展示1 7214
  • JavaWeb个人博客项目:手把手教你实现博客后台系统之具体准备与分析3 6531
  • 原创精美微信小程序UI界面——抖音版的“知乎”来啦 4955

分类专栏

  • 并肩challenge 1篇
  • javaWeb 10篇
  • 个人博客 9篇
  • 前端 6篇
  • 登陆注册 2篇
  • bug集锦 2篇

最新评论

  • JavaWeb个人博客项目:手把手教你实现博客后台系统之登录与注册模块4

    DaiYuMeng: 可能是ajax的接口写的有问题,也可能是jar包没有导入进去,或者是数据库相关的信息没有配置正确,具体的话还是要看报错信息哦,我已经私信回你了

  • Java:bootstrap fileinput组件结合阿里云oss实现上传图片、视频功能

    DaiYuMeng: 谢谢!

  • Java:bootstrap fileinput组件结合阿里云oss实现上传图片、视频功能

    DaiYuMeng: 刚才看到不好意思,有什么报错信息吗,可以私聊我的csdn发给我看看

  • JavaWeb个人博客项目:手把手教你实现博客后台系统之登录与注册模块4

    weixin_62737671: 大佬 求指导表情包表情包表情包表情包

  • JavaWeb个人博客项目:手把手教你实现博客后台系统之登录与注册模块4

    weixin_62737671: 为甚我填了注册信息后点提交没反应,并且数据库表中没有信息

您愿意向朋友推荐“博客详情页”吗?

  • 强烈不推荐
  • 不推荐
  • 一般般
  • 推荐
  • 强烈推荐
提交

最新文章

  • 原创精美微信小程序UI界面——抖音版的“知乎”来啦
  • Java:bootstrap fileinput组件结合阿里云oss实现上传图片、视频功能
  • JavaWeb个人播客项目:手把手教你实现博客后台系统之编辑博文9(完结篇!!!)
2021年1篇
2020年10篇
2019年3篇
2018年3篇

目录

目录

评论 17
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

深圳SEO优化公司保山外贸网站制作多少钱临夏推广网站哪家好临汾外贸网站设计塔城网站推广哈密关键词按天扣费推荐辽源SEO按天扣费宿州seo网站优化报价晋城关键词排名包年推广公司红河企业网站设计武汉网站改版价格焦作百度竞价运城企业网站制作哪家好西宁网站定制多少钱南联企业网站制作推荐西安网络推广多少钱巢湖百姓网标王推广新余网站优化推广推荐鄂州建设网站公司信阳关键词排名包年推广价格襄樊网站搭建报价阜新网站优化按天扣费报价包头网站排名优化哪家好濮阳网站优化软件公司衡阳企业网站改版哪家好宜昌网站排名优化推荐思茅百度竞价包年推广推荐安顺阿里店铺运营坑梓网站定制价格鞍山网站建设天津网站开发推荐歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

深圳SEO优化公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化