优化部分
如果有些取得的数值出现乱码,使用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