三、注册登录项目

一、注册登录项目

项目源码下载,提取码:h49z

1.1 创建数据库的SQL

// 会员表
CREATE TABLE `member` (
  `id` varchar(200) NOT NULL,
  `name` varchar(20) NOT NULL,
  `password` varchar(20) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8

//员工列表
CREATE TABLE `emp` (
  `id` varchar(200) NOT NULL,
  `NAME` varchar(20) NOT NULL,
  `age` int(11) DEFAULT NULL,
  `content` varchar(20) DEFAULT NULL,
  `img` longblob,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8

1.2 代码

1.2.1 dao层

EmpDao.java
public class EmpDao {
	
	
	
	public void insert(EmpEntity entity) {
			
		try {
			String sql="insert into emp values(?,?,?,?,?)";
			
			QueryRunner qr = JdbcUtil.getQr();
			qr.update(sql, entity.getId(),entity.getName(),entity.getAge(),entity.getContent(),null);
		
		} catch (SQLException e) {
			e.printStackTrace();
			throw new RuntimeException(e);
		}	
	}
	
	/**
	 * 分页展示数据
	 * 
	 * @param page
	 * @return
	 */
	public void selectAll(PageBean<EmpEntity> page) {
		
		try {
			
			
			
			//设置总行数
			Integer totalCount = count();
			page.setTotalCount(totalCount);
			
			//设置首页的上一页
			if(page.getCurrentPage()<=0) {
				page.setCurrentPage(1);
			}else {
				//设置末页的下一页
				if(page.getTotalPage()<page.getCurrentPage()) {
					page.setCurrentPage(page.getTotalPage());
				}
			}
		
			
			//获取数据
			int index = (page.getCurrentPage()-1)*page.getPageCount();
			int end=page.getPageCount();
			
			String sql="select * from emp limit ?,?";
			
			QueryRunner qr = JdbcUtil.getQr();
			List<EmpEntity> data = qr.query(sql, new BeanListHandler<EmpEntity>(EmpEntity.class), index,end);
			
			page.setData(data);
			
		} catch (SQLException e) {
			e.printStackTrace();
		}
		
	}
	
	public Integer count() {
		try {
			String sql="select count(*) from emp";
			
			QueryRunner qr = JdbcUtil.getQr();
			return Integer.valueOf(Long.valueOf(qr.query(sql, new ScalarHandler<Long>())).toString());

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

}

MemberDao .java

ublic class MemberDao {
	
	public void insert(MemberEntity entity) {
			
		try {
			String sql="insert into member values(?,?,?)";
			
			QueryRunner qr = JdbcUtil.getQr();
			qr.update(sql, entity.getId(),entity.getName(),entity.getPassword());
		
		} catch (SQLException e) {
			e.printStackTrace();
		}	
	}
	
	public MemberEntity findByName(String name) {
		
		try {
			String sql="select * from member where name=?";
			
			QueryRunner qr = JdbcUtil.getQr();
			return qr.query(sql, new BeanHandler<MemberEntity>(MemberEntity.class), name);
		
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return null;	
	}
}

1.2.2 实体层

EmpEntity.java
public class EmpEntity {
	
	private String id ;
	private String name;
	private int age;
	private String content;
	private Blob   img;
	public String getId() {
		return id;
	}
	public void setId(String id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	public String getContent() {
		return content;
	}
	public void setContent(String content) {
		this.content = content;
	}
	public Blob getImg() {
		return img;
	}
	public void setImg(Blob img) {
		this.img = img;
	}
	
	
	
}

MemberEntity .java
public class MemberEntity {
	
	private String id;
	private String name;
	private String password;
	public String getId() {
		return id;
	}
	public void setId(String id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	
	
}


PageBean.java
public class PageBean<T> {
	
	private int currentPage;
	private int pageCount=4;
	private int totalPage;
	private int totalCount;
	
	private List<T> data;

	public int getCurrentPage() {
		return currentPage;
	}

	public void setCurrentPage(int currentPage) {
		this.currentPage = currentPage;
	}

	public int getPageCount() {
		return pageCount;
	}

	public void setPageCount(int pageCount) {
		this.pageCount = pageCount;
	}

	public int getTotalPage() {
		
		if(totalCount%pageCount>0) {
			totalPage=totalCount/pageCount+1;
		}else {
			totalPage=totalCount/pageCount;
		}
		
		return totalPage;
	}

	public void setTotalPage(int totalPage) {
		this.totalPage = totalPage;
	}

	public int getTotalCount() {
		return totalCount;
	}

	public void setTotalCount(int totalCount) {
		this.totalCount = totalCount;
	}

	public List<T> getData() {
		return data;
	}

	public void setData(List<T> data) {
		this.data = data;
	}

	@Override
	public String toString() {
		return "PageBean [currentPage=" + currentPage + ", pageCount=" + pageCount + ", totalPage=" + totalPage
				+ ", totalCount=" + totalCount + ", data=" + data + "]";
	}
	
	
}	


1.2.3 filter

EncodingFilter .java
public class EncodingFilter implements Filter{

	@Override
	public void destroy() {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
			throws IOException, ServletException {
		
		HttpServletRequest req=(HttpServletRequest) request;
		HttpServletResponse resp=(HttpServletResponse) response;
		
		req.setCharacterEncoding("utf-8");
		resp.setContentType("text/html;charset=utf-8");
				
		chain.doFilter(req, resp);
		
	}

	@Override
	public void init(FilterConfig filterConfig) throws ServletException {
		// TODO Auto-generated method stub
		
	}
	
	
	
}

MemberFilter.java
public class MemberFilter implements Filter {
	
	private MemberService  memberService=new MemberService();
	
	@Override
	public void destroy() {
		// TODO Auto-generated method stub
		
	}
	
	private List<String>  white ;
 
	@Override
	public void init(FilterConfig filterConfig) throws ServletException {
		
		//过滤器白名单
		white =new ArrayList<String>();
		white.add("/emp/register.jsp");
		white.add("/emp/login.jsp");
		white.add("/emp/member");
	}


	@Override
	public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
			throws IOException, ServletException {
		
		HttpServletRequest req=(HttpServletRequest) request;
		HttpServletResponse resp=(HttpServletResponse) response;
		
		String requestURI = req.getRequestURI();
		
		//过滤器白名单
		for(String str:white) {
			System.out.println(requestURI);
			
			if(str.equals(requestURI)) {chain.doFilter(req, resp);return;}
		}
		
		//会员过滤
		HttpSession session = req.getSession(false);
		if(session==null) {
			req.getRequestDispatcher("./login.jsp").forward(req, resp);
			return;
		}
		
		String membenrName=(String) session.getAttribute("memberName");
		if(membenrName==null||"".equals(membenrName)) {
			req.getRequestDispatcher("./login.jsp").forward(req, resp);
			return;
		}
		
		chain.doFilter(req, resp);
		
		
	}

}

1.2.4 exception

MemberException.java
public class MemberException extends RuntimeException {
	
	public MemberException(String msg) {
			super(msg);
	}
}

1.2.5 service

EmpService .java
public class EmpService {
	
	private EmpDao empDao=new EmpDao();
	
	/**
	 * 分页查询
	 * 
	 * @param pageBean
	 */
	public void select(PageBean<EmpEntity>  pageBean) {
			empDao.selectAll(pageBean);
	}
	
	public void addEmp(EmpEntity emp) {
		emp.setId(UUID.randomUUID().toString());
		empDao.insert(emp);
	}
}

MemberService .java
public class MemberService {
	
	private MemberDao  memberDao=new MemberDao();
	
	/**
	 * 注册
	 * 
	 * @param entity
	 */
	public  void  register(MemberEntity entity) {
		
		if(entity.getName()==null||"".equals(entity.getName())) {
			throw new MemberException("注册会员名为空");
		}
		if(entity.getPassword()==null||"".equals(entity.getPassword())) {
			throw new MemberException("注册密码为空");
		}
		
		//设置ID
		entity.setId(UUID.randomUUID().toString());
		MemberEntity exist = memberDao.findByName(entity.getName());
		if(exist!=null) {
			throw new MemberException("注册会员名称重复");
		}
		
		memberDao.insert(entity);
	}
	
	/**
	 * 登录
	 * @param entity
	 */
	public void login(MemberEntity entity) {
	
		if(entity.getName()==null||"".equals(entity.getName())) {
			throw new MemberException("会员名为空");
		}
		if(entity.getPassword()==null||"".equals(entity.getPassword())) {
			throw new MemberException("密码为空");
		}
		
		MemberEntity exist = memberDao.findByName(entity.getName());
		if(exist==null) {
			throw new MemberException("该会员不存在");
		}
		
		if(!exist.getPassword().equals(entity.getPassword())){
			throw new MemberException("密码不正确");
		}
	}
}

1.2.6 util

Convert2Bean .java
public class Convert2Bean {
	
	public static  <T> T  getBean(HttpServletRequest req,Class<T> clazz) {
		
		try {
			T t=clazz.newInstance();
			
			Map<String, String[]> map = req.getParameterMap();
			
			BeanUtils.populate(t, map);
			
			return t;
			
		} catch (Exception e) {
			e.printStackTrace();
		}
		
		return null; 
	}
	
}

JdbcUtil .java
public class JdbcUtil {
	
	private static ComboPooledDataSource dataSource;
	
	static {
		dataSource=new ComboPooledDataSource();
	}
	
	
	public static QueryRunner  getQr() {
		return new QueryRunner(dataSource);
	}
}

1.2.6 controller

EmpListController .java
public class EmpListController extends HttpServlet {
	

	private EmpService  empService=new EmpService();
	
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		this.doPost(req, resp);
	}
	
	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		
		String method = req.getParameter("method");
		if("add".equals(method)) {
			addEmp(req,resp);
		}
		
		if("list".equals(method)) {
			selectAll(req,resp);
		}

	}
	
	/**
	 * 分页查询
	 * 
	 * @param req
	 * @param resp
	 * @throws ServletException
	 * @throws IOException
	 */
	private void selectAll(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		PageBean pageBean = Convert2Bean.getBean(req, PageBean.class);
		
		
		empService.select(pageBean);
		req.setAttribute("pageBean", pageBean);
		
		req.getRequestDispatcher("./list.jsp").forward(req, resp);		
	}
	
	/**
	 * 新增员工
	 * 
	 * @param req
	 * @param resp
	 * @throws IOException 
	 * @throws ServletException 
	 */
	private void addEmp(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		EmpEntity emp = Convert2Bean.getBean(req, EmpEntity.class);	
		empService.addEmp(emp);
		
		resp.setHeader("refresh", "3;url=/emp/emp?method=list");		
		resp.getWriter().write("新增成功,3秒后返回主页");		
		
	}
}

MemberController .java
public class MemberController extends HttpServlet {
	
	private MemberService  memberService=new MemberService();

	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		this.doPost(req, resp);
	}
	
	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

		
		String method = req.getParameter("method");
		if("login".equals(method)) {
			doLogin(req,resp);
		}
		
		if("register".equals(method)) {
			doRegister(req,resp);
		}
		
		if("out".equals(method)) {
			doOut(req,resp);
		}
	}

	private void doOut(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		
		HttpSession session = req.getSession(false);
		session.invalidate();
		req.getRequestDispatcher("./login.jsp").forward(req, resp);
	}

	private void doRegister(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		MemberEntity member = Convert2Bean.getBean(req, MemberEntity.class);
		
		try {
			memberService.register(member);
		} catch (MemberException e) {
			
			e.printStackTrace();
			req.setAttribute("msg", e.getMessage());
			req.getRequestDispatcher("/register.jsp").forward(req, resp);
			return;
		}
		
		//转发
		HttpSession session = req.getSession();
		session.setAttribute("memberName",member.getName() );
		
		resp.setHeader("refresh", "3;url=/emp/emp?method=list");		
		resp.getWriter().write("注册成功,3秒后跳转");		
	}

	private void doLogin(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		
	MemberEntity member = Convert2Bean.getBean(req, MemberEntity.class);
		
		try {
			memberService.login(member);
		
		} catch (MemberException e) {
			
			e.printStackTrace();
			req.setAttribute("msg", e.getMessage());
			req.getRequestDispatcher("/login.jsp").forward(req, resp);
			return;
		}
		
		//转发
		HttpSession session = req.getSession();
		session.setAttribute("memberName",member.getName() );
		
		resp.setHeader("refresh", "3;url=/emp/emp?method=list");		
		resp.getWriter().write("登录成功,3秒后跳转");	
	}

}

1.2.7 配置

c3p0-config.xml
<c3p0-config>
	
	<!-- 默认数据库  -->
	<default-config>
		<property name="jdbcUrl">jdbc:mysql://localhost:3306/day11</property>
		<property name="driverClass">com.mysql.jdbc.Driver</property>
		<property name="user">root</property>
		<property name="password">root</property>
		<property name="initialPoolSize">3</property>
		<property name="maxPoolSize">6</property>
		<property name="maxIdleTime">1000</property>
	</default-config>

	<!-- 可以使用多数据源
	<named-config name="db2">
		<property name="jdbcUrl">jdbc:mysql://localhost:3306/test</property>
		<property name="driverClass">com.mysql.jdbc.Driver</property>
		<property name="user">root</property>
		<property name="password">root</property>
		<property name="initialPoolSize">3</property>
		<property name="maxPoolSize">6</property>
		<property name="maxIdleTime">1000</property>
	</named-config>
	
	 -->

</c3p0-config>

web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" 
	xmlns="http://java.sun.com/xml/ns/javaee" 
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
	http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

  <!-- 过滤器1 -->	
  <filter>
  		<filter-name>encoding</filter-name>
  		<filter-class>org.jsoft.filter.EncodingFilter</filter-class>
  </filter>	
  <filter-mapping>
  		<filter-name>encoding</filter-name>
  		<url-pattern>/*</url-pattern>
  </filter-mapping>
  
    <!-- 过滤器2 -->	
   <filter>
  		<filter-name>m1</filter-name>
  		<filter-class>org.jsoft.filter.MemberFilter</filter-class>
  </filter>	
  <filter-mapping>
  		<filter-name>m1</filter-name>
  		<url-pattern>/*</url-pattern>
  </filter-mapping>
  
  <!-- 会员 -->	
  <servlet>
    <servlet-name>member</servlet-name>
    <servlet-class>org.jsoft.controller.MemberController</servlet-class>
  </servlet>

  <servlet-mapping>
    <servlet-name>member</servlet-name>
    <url-pattern>/member</url-pattern>
  </servlet-mapping>

  <servlet>
    <servlet-name>emp</servlet-name>
    <servlet-class>org.jsoft.controller.EmpListController</servlet-class>
  </servlet>

  <servlet-mapping>
    <servlet-name>emp</servlet-name>
    <url-pattern>/emp</url-pattern>
  </servlet-mapping>

</web-app>

1.2.8 前端

login.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Login</title>
</head>
<body>

<h1>登录</h1>${msg}
<form action="./member?method=login" method="post">
	<table style="width:400px; margin:100px auto;"  >
						<tr>
							<td>用户名:</td>
							<td><input type="text"  name="name"/></td>
						</tr>
						<tr>
							<td>密码:</td>
							<td><input type="password" name="password" /></td>
						</tr>
						<tr>
							<td colspan="2" align="center">
								<input type="submit"	value="提交"/>
							</td>
						</tr>
	</table>
</form>

</body>
</html>
register.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Register</title>
</head>
<body>

<h1>注册</h1> ${msg }
<form action="./member?method=register" method="post">
	<table style="width:400px; margin:100px auto;"  >
						<tr>
							<td>用户名:</td>
							<td><input type="text"  name="name"/></td>
						</tr>
						<tr>
							<td>密码:</td>
							<td><input type="password" name="password" /></td>
						</tr>
						<tr>
							<td colspan="2" align="center">
								<input type="submit"	value="提交"/> 
							</td>
						</tr>
	</table>
</form>

</body>
</html>
list.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@taglib  uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>    

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Login</title>
</head>
<body>
<div>
	欢迎${sessionScope.memberName}同学,您好!!   <a href="./member?method=out">注销</a>
</div>

<a href="${pageContext.request.contextPath}/addEmp.jsp">新增员工</a>

<table  border="1"  cellspacing="1"  cellpadding="0" style="margin:100px auto;" >
		
		<tr>
			<th>index</th>
			<th>员工编号</th>
			<th>名称</th>
			<th>年龄</th>
			<th>详细介绍</th>
		</tr>
		<c:if test="${not empty requestScope.pageBean.data }">
			<c:forEach  items="${requestScope.pageBean.data}"  var="item"  varStatus="indexObj"  >		
				<tr>
					<th>${indexObj.count }</th>
					<th>${item.id}</th>
					<th>${item.name}</th>
					<th>${item.age}</th>
					<th>${item.content}</th>
				</tr>	
		</c:forEach>
		</c:if>

		
		<tr>
				<th colspan="5">
					<a href="${pageContext.request.contextPath}/emp?method=list&currentPage=1">首页</a>
					<a href="${pageContext.request.contextPath}/emp?method=list&currentPage=${pageBean.totalPage}">末页</a>
					<a href="${pageContext.request.contextPath}/emp?method=list&currentPage=${pageBean.currentPage -1 }">上一页</a>

					<a href="${pageContext.request.contextPath}/emp?method=list&currentPage=${pageBean.currentPage + 1 }">下一页</a>
				</th>
				
		</tr>

</table>

</body>
</html>
addEmp.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	
	<form  action="/emp/emp?method=add" method="post">
	
	<table border="1" cellspacing="1" style="margin:100px suto;">
		<tr>
			<td>姓名</td>
			<td><input type="text" name="name" /></td>		
		</tr>
		<tr>
			<td>年龄</td>
			<td><input type="text" name="age" /></td>		
		</tr>
		<tr>
			<td>内容</td>
			<td><input type="text" name="content" /></td>		
		</tr>	
		<tr align="center">
			<td colspan="2"><input type="submit" value="提交" /></td>		
		</tr>					
	</table>
		</form>
	
</body>
</html>

1.4 实现效果

登录界面

在这里插入图片描述

注册界面

在这里插入图片描述

列表展示界面

在这里插入图片描述

发布了113 篇原创文章 · 获赞 0 · 访问量 1288

猜你喜欢

转载自blog.csdn.net/weixin_45602227/article/details/104459839