Java之JDBC数据库连接+Controller和Service(二)

8 篇文章 0 订阅
3 篇文章 1 订阅

目录

1.新建Service层,创建UserService接口

2.新建ServiceImp,创建UserServicelmp类

3.创建UserServiceImp测试类

4.新建Controller层,创建RegisterServlet类

5.创建register.jsp,编写注册提交表单

6.运行项目

7.项目结构


项目源码:链接:https://pan.baidu.com/s/1GWCmNwlE9zzxLKSZDVgenw 密码:ssn1

1.新建Service层,创建UserService接口

package com.ly.service;

public interface UserService {
    /**
     * 业务: 需求
     * 注册需求
     * 返回值:
     * 参数:
     */
	public boolean register(String username,String pwd);
	
	
	/**
	 * 修改密码
	 * 参数: int id, newpwd,oldPwd
	 * 返回值:boolean 
	 */
	public boolean updatePwd(int id,String newPwd,String oldPwd);
	
	/***
	 * 修改角色
	 *  id, int role 
	 */
	
	public boolean updateRole(int id,int role);
	/***
	 * 修改状态
	 * 参数: id    status
	 */
	public boolean updateStatus(int id,int status);
	
}

2.新建ServiceImp,创建UserServicelmp类

package com.ly.servicelmp;

import com.ly.dao.UserDao;
import com.ly.daoimp.UserDaoImp;
import com.ly.entity.User;
import com.ly.service.UserService;

public class UserServicelmp implements UserService {

	private UserDao  dao=new UserDaoImp();
	@Override
	public boolean register(String username, String pwd) {
		User u=new User(username,pwd,1,1);
		
		int num= dao.insertUser(u);
		if(num>0){
			return true;
		}
		return false;
	}

	@Override
	public boolean updatePwd(int id, String newPwd, String oldPwd) {
		// 
		User  u= dao.findUserById(id);
		if(u!=null){
			  //判断旧密码是否一致
			  if(u.getPwd().equals(oldPwd)){
				  //旧密码一致,说明允许他修改密码
				  u.setPwd(newPwd);
				  int num=dao.updateUser(u);
				  if(num>0){
					  return true;
				  }
			  }
		}
		return false;
	}

	@Override
	public boolean updateRole(int id, int role) {
		User u= dao.findUserById(id);
		if(u!=null){
			u.setRole(role);
			int num=dao.updateUser(u);
			if(num>0){
				return true;
			}
		}
		return false;
	}

	@Override
	public boolean updateStatus(int id, int status) {
	 User u=dao.findUserById(id);
	 if(u!=null){
	   u.setStatus(status);		
	   int num= dao.updateUser(u);
		  if(num>0){
			  return true;
		  }
	   }
		return false;
	}

	
	

}

3.创建UserServiceImp测试类

测试类代码:

package test;

import org.junit.Test;

import com.ly.servicelmp.UserServicelmp;

public class UserServicelmpTest {

	private UserServicelmp userser=new UserServicelmp();
	@Test
	public void testRegister() {
		if(userser.register("ly", "963852741")){
			System.out.println("注册成功");
		}else {
			System.out.println("注册失败");
		}
	}

	@Test
	public void testUpdatePwd() {
		if(userser.updatePwd(20, "654321", "123456")){
			System.out.println("更新密码成功");
		}else {
			System.out.println("更新密码失败");
		}
	}

	@Test
	public void testUpdateRole() {
		if(userser.updateRole(20, 0)){
			System.out.println("更新角色成功");
		}else {
			System.out.println("更新角色失败");
		}
	}

	@Test
	public void testUpdateStatus() {
		if (userser.updateStatus(20, 1)) {
			System.out.println("更新状态成功");
		}else {
			System.out.println("更新状态失败");
		}
	}

}

4.新建Controller层,创建RegisterServlet类

package com.ly.controller;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.ly.service.UserService;
import com.ly.servicelmp.UserServicelmp;

public class RegisterServlet extends HttpServlet {

	private static final long serialVersionUID = 4556819837935482317L;

	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

	}

	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		// 处理登录的业务

		// 第一获取用户输入的用户名和密码
		String user = req.getParameter("user");
		String pwd = req.getParameter("pwd");

		// 第二步:调用业务层:注册的业务即可
		// 父类的应用指向子类的实例
		UserService us = new UserServicelmp();
		boolean flag = us.register(user, pwd);
		if (flag) {
			// 跳转到登陆界面
			resp.sendRedirect("login.jsp");
		} else {
			resp.sendRedirect("register.jsp");
		}
	}

}

5.创建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>  
    <title>注册页面</title>
  </head>
  
  <body>
     <form action="RegisterServlet" method="post" >
       <lable>用户名:</lable> <input type="text" name="user"/> <br/>
       <lable>密码:</lable> <input type="password" name="pwd"/>
       <button type="submit">注册</button>
    </form>
  </body>
</html>

6.运行项目

在此之前需要在web.xml文件配置一下servlet

7.项目结构

可能会不理解为什么要分那么多层,在一个项目中,是有很多工作要做的。分层的目的就是为了分工,把工作具体分配到每一层中。比如Controller控制器只负责接收请求,Service服务层只负责业务逻辑,Dao层只负责对数据库的操作。我个人一开始比较不理解的就是Dao层和service层,其实Dao主要是面对数据库,在Dao层中,方法名都是一些对数据库的操作,比如:插入,根据**查找,更新,等等。而Service层主要是面对服务方面,在Service中,方法名是一些服务型的名称。比如:注册,登陆,更新密码这样的命名。所以各层只负责各层需要处理的工作。减少耦合性。

 

 

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值