用户登录的完整实现(表、数据库视图、bean、dao、dao工厂、service、service工厂、servlet、Jsp登录页、页面效果)

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

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中弹性盒子的好处。

输入的用户名和密码必须是数据库里面的字段,否则会弹框提示用户不存在

这是数据库中的用户,所以可以登录成功

然后就可以跳转到后台页面

如果是数据库不存在的用户

会弹框提示用户不存在

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值