目录
2.新建ServiceImp,创建UserServicelmp类
4.新建Controller层,创建RegisterServlet类
项目源码:链接: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中,方法名是一些服务型的名称。比如:注册,登陆,更新密码这样的命名。所以各层只负责各层需要处理的工作。减少耦合性。