oracle中建T_USER表
ID不得为空
主键
创建序列
create sequence SEQ_T_USER;
查看所有的序列中是否存在这条记录
select * from user_sequences;
数据库中T_USER表的视图
bean:存放用户数据
dao:单张表的增删改查
dao接口:
通过用户名和密码登录
dao实现类:
dao工厂:
package com.cyzy.util;
import java.util.HashMap;
import java.util.Map;
import com.cyzy.dao.UserDao;
import com.cyzy.dao.UserDaoImpl;
public class DaoFactory {
//声明私有变量
private static Map<String,Object> config=new HashMap<String,Object>();
//静态块,只有一个实例
static {
config.put(UserDao.class.getName(),new UserDaoImpl());//用户dao
}
//静态方法获取实例
public static Object getDaoImpl(String name) {
return config.get(name);
}
}
service:根据业务需求来定,用来调用多个dao操作的
service接口:
service实现类:
service工厂:
package com.cyzy.util;
import java.util.HashMap;
import java.util.Map;
import com.cyzy.service.GoodsService;
import com.cyzy.service.GoodsServiceImpl;
import com.cyzy.service.MenuService;
import com.cyzy.service.MenuServiceImpl;
import com.cyzy.service.RoleService;
import com.cyzy.service.RoleServiceImpl;
import com.cyzy.service.UserService;
import com.cyzy.service.UserServiceImpl;
public class ServiceFactory {
private static Map<String,Object> config=new HashMap<String,Object>();
static {
config.put(UserService.class.getName(), new UserServiceImpl());//用户service
}
public static Object getServiceImpl(String name) {
return config.get(name);
}
}
servlet:调用service进行业务处理,并把处理好的数据转发给JSP来呈现
private void login(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html");
response.setCharacterEncoding("UTF-8");
//查询用户是不是存在
String userName=request.getParameter("userName");
String password=request.getParameter("password");
UserService userService=(UserService)ServiceFactory.getServiceImpl(UserService.class.getName());
User user=userService.login(userName, password);
if(user!=null) {
userCount++;
ServletContext context=this.getServletContext();
context.setAttribute("userCount", userCount);
HttpSession session=request.getSession();
//session.setMaxInactiveInterval(10);//超时时间以秒为单位
session.setAttribute("loginUser", user);
//还要查询此用户所拥有的菜单
//菜单列表扔到request/session范围
List<Menu> menuList=new ArrayList<Menu>();
MenuService menuService=(MenuService)ServiceFactory.getServiceImpl(MenuService.class.getName());
menuList=menuService.queryMenuByuserName(userName);
request.getSession().setAttribute("menuList", menuList);
//因为页面是由iframe组成,其他页面request没有办法取到
//request.setAttribute("menuList", menuList);
request.getRequestDispatcher("/admin/adminMain.jsp").forward(request, response);
}else {
PrintWriter out =response.getWriter();
out.println("<script>");
out.println("window.alert('用户不存在');");
out.println("window.location.href='http://localhost:8080/JF190902/index.jsp';");
out.println("</script>");
}
}
登录页效果:
使用Flex布局实现的上下左右居中,而且随着页面的不断缩小,上下左右居中的样式也不会改变,这是CSS3中弹性盒子的好处。
输入的用户名和密码必须是数据库里面的字段,否则会弹框提示用户不存在
这是数据库中的用户,所以可以登录成功
然后就可以跳转到后台页面
如果是数据库不存在的用户
会弹框提示用户不存在