MVC模式,分层结构

优化部分

如果有些取得的数值出现乱码,使用URLEncode.encode("UTF-8")修改编码

resp.sendRedirect("login?msg=" + URLEncoder.encode(msg,"UTF-8"));

MVC思维,分层结构

子包的创建

学会建立接口,然后去实现
例如

1.Dao层

1.接口:IUserDao.java
import cn.edu.mju.band2_36_text01_controller.entity.User;

import java.util.List;

public interface IUserDao {
    public boolean insert(User user);//增   boolean,表示上传成功与否
    public boolean delete(Integer id);//删
    public boolean update(User user);//改

    //查
    public User findById(int id);//用主键查只能查出一个对象,就是User
    public List<User> findAll();
    public List<User> find(User user);
    public User findByLoginName(String loginName);
}
2.实现UserDao.java

dao.impl(属于dao层)

对于接口类,IUserDao的实现
实现UserDao

import cn.edu.mju.band2_36_text01_controller.dao.IUserDao;
import cn.edu.mju.band2_36_text01_controller.entity.User;

import java.util.List;

/**
 * 对于接口IUserDao的实现
 *
 * 方法是自动生成的,光标移到IUserDao,添加就好
 */
public class UserDao implements IUserDao {

    @Override
    public boolean insert(User user) {
        return false;
    }

    @Override
    public boolean delete(Integer id) {
        return false;
    }

    @Override
    public boolean update(User user) {
        return false;
    }

    @Override
    public User findById(int id) {
        return null;
    }

    @Override
    public List<User> findAll() {
        return null;
    }

    @Override
    public List<User> find(User user) {
        return null;
    }

    @Override
    public User findByLoginName(String loginName) {
        User user = new User();
        user.setLoginName(loginName);
        user.setLoginPwd("1234");
        user.setGander((byte)1);
        //user.getBirthday(new Date());
        user.setNickname("张三");

        return user;
    }
}

2.entity层(实体)

完成实体类,且实体类的所有数据类型都要是引用类型(Intger,String等等),不能用简单数据类型(int 等等)
还要记得加上get,set方法

import java.util.Date;

public class User {
    //完成实体类,所有实体类的成员变量数据类型都要用引用类型(Intger,String等等),不能用简单数据类型(int 等等)
    private Integer id;
    private String loginName;
    private String loginPwd;
    private Byte gander;
    private Date birthday;
    private String nickname;





    //ORM的映射,get,set方法
    public String getNickname() {
        return nickname;
    }

    public void setNickname(String nickname) {
        this.nickname = nickname;
    }


    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getLoginName() {
        return loginName;
    }

    public void setLoginName(String loginName) {
        this.loginName = loginName;
    }

    public String getLoginPwd() {
        return loginPwd;
    }

    public void setLoginPwd(String loginPwd) {
        this.loginPwd = loginPwd;
    }

    public Byte getGander() {
        return gander;
    }

    public void setGander(Byte gander) {
        this.gander = gander;
    }

    public Date getBirthday() {
        return birthday;
    }

    public void setBirthday(Date birthday) {
        this.birthday = birthday;
    }
}

3.servie层 (业务逻辑)

1.接口:IUserService
import cn.edu.mju.band2_36_text01_controller.entity.User;

public interface IUserService {
    public User login(String loginName,String loginPwd);
}
2.实现:UserService
import cn.edu.mju.band2_36_text01_controller.dao.IUserDao;
import cn.edu.mju.band2_36_text01_controller.dao.impl.UserDao;
import cn.edu.mju.band2_36_text01_controller.entity.User;
import cn.edu.mju.band2_36_text01_controller.service.IUserService;

public class UserService implements IUserService {
    IUserDao dao =new UserDao();//用接口声明对象

    @Override
    public User login(String loginName, String loginPwd) {
        User user=dao.findByLoginName(loginName);
        if(user != null){
            if(user.getLoginPwd().equals(loginPwd)){//验证用户密码是否正确
                return user;
            }
        }
        return null;
    }
}

调用接口实现功能

User u =service.login(loginName,loginPwd);//实例化对象,并调用
        if(u != null) { //第一个if判断账号密码是否正确,利用接口IUserService
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值