精华内容
下载资源
问答
  • java管理员登陆界面

    2013-04-11 21:04:04
    用于数据开发的前台界面设计,更便捷的开发环境
  • Java实现简单登录界面

    2020-08-09 13:46:43
    最近刚刚学习Java,试着做了一个简单的登录注册界面,只是点击按钮之后输出响应,并没有完成后续的跳转操作。
  • java框架SSM的用户,管理员,快递员的注册登录java框架SSM的用户,管理员,快递员的注册登录
  • JAVA实现普通用户和管理员用户同页面登录

    万次阅读 多人点赞 2020-06-12 08:34:04
    摘要:之前写了一个Python Flask实现普通用户和管理员用户同页面登录;现在把用Java实现这个功能的代码和思想写一下。

    摘要:之前写了一个Python Flask实现普通用户和管理员用户同页面登录;现在把用Java实现这个功能的代码和思想写一下。

    1.前端JSP页面效果及代码:

    1.1效果图

    在这里插入图片描述

    1.2前端表单代码

    <form action="IndexServlet?method=Login" method="post">
    			<table height="240px" width="240px">
    				<tr style="height: 20%">
    					<td>用户名:</td>
    					<td><input type="text" value="${username }"  name="username" id="username"></td>
    				</tr>
    				<tr style="height: 20%">
    					<td>密码:</td>
    					<td><input type="password" value="${password }"  name="password" id="password"></td>
    				</tr>
    				<tr align="center" style="height: 20%">
    					<td style="padding-left: 10px"><input type="submit" name="sub_name" value="辅导员登录"></td>
    					<td style="padding-right: 40px;padding-left: 20px"><input type="submit" name="sub_name" value="管理员登录" ></td>
    				</tr>
    				
    				<tr style="height: 20%">
    					<td colspan="3">
    					<font color="red">${error_msg }</font>
    					</td>
    				</tr>
    				
    			</table>
    		</form>
    

    2.后台java代码:

    2.1IndexServlet里的Login方法代码:

    public void Login(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		String username = request.getParameter("username");
    		String password = request.getParameter("password");
    		String sub_name = request.getParameter("sub_name");
    
    		if (sub_name.equals("辅导员登录")) {
    			CkInsService cis = new CkInsServiceImpl();
    			try {
    				Instructor ins = cis.insLogin(username, password);
    
    				request.getSession().setAttribute("ins", ins);
    				request.getRequestDispatcher("/counselorMain.jsp").forward(request, response);
    			} catch (UserException e) {
    				e.printStackTrace();
    				request.setAttribute("username", username);
    				request.setAttribute("password", password);
    				request.setAttribute("error_msg", e.getMessage());
    				request.getRequestDispatcher("/schoolIndex.jsp").forward(request, response);
    			}
    		} else if (sub_name.equals("管理员登录")) {
    			CKRootService crs = new CKRootServiceImpl();
    
    			try {
    				Super_Manager root = crs.superLogin(username, password);
    				request.getSession().setAttribute("root", root);
    				request.getRequestDispatcher("/schoolMain.jsp").forward(request, response);
    			} catch (UserException e) {
    				e.printStackTrace();
    				request.setAttribute("username", username);
    				request.setAttribute("password", password);
    				request.setAttribute("error_msg", e.getMessage());
    				request.getRequestDispatcher("/schoolIndex.jsp").forward(request, response);
    			}
    
    		}
    	}
    
    

    总结:其实思想和代码跟前面的Flask实现是差不多的,增加一个单选框,传值到后台后进行判断是那种类型的用户进行登录。

    往期文章推荐:
    Flask实现普通用户和管理员用户同页面登录
    html设置背景图适应屏幕大小及透明度
    Java判断用户是否登陆
    MySQL的卸载(完全卸载,操作简单)

    注:转载请附上原文链接:https://blog.csdn.net/yue200403/article/details/106707816

    展开全文
  • java 连接数据库实现用户登录功能 能运行成功,适合初学者借鉴学习。
  • 主要为大家详细介绍了java实现简单银行管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • 主要介绍了java web实现用户权限管理,设计并实现一套简单的权限管理功能,感兴趣的小伙伴们可以参考一下
  • 不同角色的用户登录(比如普通用户和超级管理员)的操作页面不一样。 2.供应商管理 灵活管理供货商,及时添加及修改供货商信息,为采购计划的制定提供保障。 3.材料管理 对材料进行管理,管理材料种类及库存...
  • 主要为大家详细介绍了java实现学生管理系统(面向对象),文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • 根据不同角色的用户登录, 进入登入页面具有...用户角色有管理员、 老师、 学生。 刚学习不久,写个项目练练手,功能不算很多,管理员对账户和课程的管理,学生选课退课查看成绩,教师查看自己教授的课程,录入成绩。
  • java用户管理系统

    2018-01-30 22:14:48
    用户管理系统分为管理员模块和普通用户模块 管理员: 1.查找用户(1.全部显示2.根据ID查询3.根据用户名查询) 2.添加用户 3.修改用户 4.删除用户 用户: 1.查看自己的信息 2.修改自己的信息 游客: 1.登入 2.注册
  • java银行账户管理系统

    2018-05-11 16:50:33
    支持管理员登录,存款,取款,注册账户,注销账户,转账操作,利息计算以及退出系统操作。
  • 不同角色的用户登录(比如普通用户和超级管理员)的操作页面不一样。 2.供应商管理 灵活管理供货商,及时添加及修改供货商信息,为采购计划的制定提供保障。 3.材料管理 对材料进行管理,管理材料种类及库存...
  • 企业财务管理系统主要用于实现公司的财务管理,基本功能包括:系统登录、部门... 登录模块:实现管理员登录功能; 个人信息模块:可修改个人的信息; 部门信息管理模块:实现部门的增加、修改、删除、查看功能; 等
  • 主要实现企业售后服务信息的增删改查,顾客信息的增删改查,顾客留言信息的及时反馈保存,管理员帐号增删、登录等。该系统还可以方便制造商跟踪产品的质量和服务和管理以及购买者对企业的建议提交。导入编译器即可,含...
  • 不同角色的用户登录(比如普通用户和超级管理员)的操作页面不一样。 2.供应商管理 灵活管理供货商,及时添加及修改供货商信息,为采购计划的制定提供保障。 3.材料管理 对材料进行管理,管理材料种类及库存,及时...
  • idea实现管理员登录javaweb

    千次阅读 2020-01-09 19:54:34
    mysql创建db_0106数据库, ...insert into tb_sys values(null,admin,MD5(123),"系统管理员"); 项目目录结构 com.isoft.db包下 db.properties文件 mysql.driver=com.mysql.jdbc.Driver mysql...

    mysql创建db_0106数据库,

    创建表

    添加一条数据,id int自增,密码:为MD5加密

    insert into tb_sys values(null,admin,MD5(123),"系统管理员");

    项目目录结构

    com.isoft.db包下

    db.properties文件

    mysql.driver=com.mysql.jdbc.Driver
    mysql.dburl=jdbc:mysql://127.0.0.1:3306/db_0106?userSSL=true&useUnicode=true&characterEncoding=UTF8&serverTimezone=GMT
    mysql.loginname=root
    mysql.loginpass=root

    DBConnection.java

    package com.isoft.db;
    
    import java.io.IOException;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.SQLException;
    import java.util.Properties;
    
    public class DBConnection {
        private Connection conn ;
        private static DBConnection newsInstance ;
        public static DBConnection getInstance() {
            if(null == newsInstance) {
                newsInstance = new DBConnection() ;
            }
            return newsInstance ;
        }
        private DBConnection() {
            Properties pros = new Properties() ;
            try {
                pros.load(DBConnection.class.getResourceAsStream("db.properties"));
                Class.forName(pros.getProperty("mysql.driver")) ;
                this.conn = DriverManager.getConnection(
                        pros.getProperty("mysql.dburl") ,
                        pros.getProperty("mysql.loginname") ,
                        pros.getProperty("mysql.loginpass")
                ) ;
            } catch (IOException e) {
                e.printStackTrace();
            } catch (ClassNotFoundException e) {
                e.printStackTrace();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        public Connection getConn() {
            return conn;
        }
        public void closeConn() {
            if(null != this.conn) {
                try {
                    conn.close();
                    conn = null ;
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }
    }
    

    com.isoft.entity包下

    Sys.ava 

    package com.isoft.entity;
    
    import com.fasterxml.jackson.annotation.JsonIgnore;
    
    import java.io.Serializable;
    
    public class Sys implements Serializable {
        private Integer id ;
        private String sysname ;
        @JsonIgnore
        private String syspass ;
        private String role ;
        public Sys(){}
    
        public Sys(Integer id, String sysname, String syspass, String role) {
            this.id = id;
            this.sysname = sysname;
            this.syspass = syspass;
            this.role = role;
        }
    
        public Integer getId() {
            return id;
        }
    
        public void setId(Integer id) {
            this.id = id;
        }
    
        public String getSysname() {
            return sysname;
        }
    
        public void setSysname(String sysname) {
            this.sysname = sysname;
        }
    
        public String getSyspass() {
            return syspass;
        }
    
        public void setSyspass(String syspass) {
            this.syspass = syspass;
        }
    
        public String getRole() {
            return role;
        }
    
        public void setRole(String role) {
            this.role = role;
        }
    
        @Override
        public String toString() {
            return "Sys{" +
                    "id=" + id +
                    ", sysname='" + sysname + '\'' +
                    ", syspass='" + syspass + '\'' +
                    ", role='" + role + '\'' +
                    '}';
        }
    }
    

    com.isoft.Dao包下

    SysDao.java

    package com.isoft.Dao;
    
    import com.isoft.db.DBConnection;
    import com.isoft.entity.Sys;
    
    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    
    public class SysDao {
        private Connection conn ;
        private PreparedStatement psta ;
        private String sql ;
        public SysDao() {
            conn = DBConnection.getInstance().getConn() ;
        }
        /**
         * 管理员登录校验
         */
        public Sys loginCheck(String name , String pass) throws SQLException {
            sql = "select * from tb_sys where sysname=? and syspass=? " ;
            psta = conn.prepareStatement(sql) ;
            psta.setString(1 , name);
            psta.setString(2 , pass);
            ResultSet rs = psta.executeQuery() ;
            Sys sys = null ;
            if(rs.next()) {
                sys = new Sys(rs.getInt(1) , rs.getString(2) , rs.getString(3) ,rs.getString(4)) ;
            }
            rs.close();
            return sys ;
        }
        /**
         * 增加管理员
         */
        public int addSys(String name,String pass) throws SQLException {
            sql="select * from tb_sys where sysname=?";
            psta = conn.prepareStatement(sql) ;
            psta.setString(1 , name);
            ResultSet rs1=psta.executeQuery();
            if(rs1.next()){
                return -1;
            }else {
                sql = "insert into tb_sys(sysname,syspass,role) values(?,?,?)";
                psta = conn.prepareStatement(sql);
                String str = "系统管理员";
                psta.setString(1, name);
                psta.setString(2, pass);
                psta.setString(3, str);
                int rs = psta.executeUpdate();
                return rs;
            }
        }
        /**
         * 修改管理员密码
         */
        public int changePass(int id,String pass) throws SQLException {
            sql="update tb_sys set syspass=? where id=?";
            psta=conn.prepareStatement(sql);
            psta.setString(1,pass);
            psta.setInt(2,id);
            int rs=psta.executeUpdate();
            return  rs;
    
        }
    }
    

    com.isoft.bean包下

    ServerResult.java

    package com.isoft.bean;
    
    import java.io.Serializable;
    
    public class ServerResult implements Serializable {
        private Integer errorCode ;
        private String errorMsg ;
        private Object result ;
        public ServerResult(){}
    
        public ServerResult(Integer errorCode, String errorMsg, Object result) {
            this.errorCode = errorCode;
            this.errorMsg = errorMsg;
            this.result = result;
        }
    
        public Integer getErrorCode() {
            return errorCode;
        }
    
        public void setErrorCode(Integer errorCode) {
            this.errorCode = errorCode;
        }
    
        public String getErrorMsg() {
            return errorMsg;
        }
    
        public void setErrorMsg(String errorMsg) {
            this.errorMsg = errorMsg;
        }
    
        public Object getResult() {
            return result;
        }
    
        public void setResult(Object result) {
            this.result = result;
        }
    
        @Override
        public String toString() {
            return "ServerResult{" +
                    "errorCode=" + errorCode +
                    ", errorMsg='" + errorMsg + '\'' +
                    ", result=" + result +
                    '}';
        }
    }
    

    com.isoft.filter包下

    AuthFilter.java

    package com.isoft.filter;
    
    import javax.servlet.*;
    import javax.servlet.annotation.WebFilter;
    import javax.servlet.annotation.WebInitParam;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import javax.servlet.http.HttpSession;
    import java.io.IOException;
    /*
    未登录用户不能请求manager目录下的所有动态资源,动态资源Servlet配置时以.do结尾
    登录用户将在Session中存储loginuser属性
     */
    @WebFilter(urlPatterns = {"/manager/*" , "*.do" , "/admin/*"})
    public class AuthFilter implements Filter {
        String[] pages ;
        public void destroy() {
        }
    
        public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException {
    
            HttpServletRequest request = (HttpServletRequest) req ;
            HttpSession session = request.getSession();
            Object obj = session.getAttribute("loginuser") ;
            if(null == obj) {
                ((HttpServletResponse)resp).sendRedirect(request.getContextPath() + "/Login.html");
                return ;
            }
            chain.doFilter(req, resp);
        }
    
        public void init(FilterConfig config) throws ServletException {
        }
    
    }
    

    com.isoft.service包下

    SysService.java

    package com.isoft.service;
    
    import com.isoft.Dao.SysDao;
    import com.isoft.Util.MD5Util;
    import com.isoft.Util.StringUtil;
    
    import com.isoft.entity.Sys;
    
    import java.sql.SQLException;
    
    public class SysService {
        private SysDao sysDao ;
        public SysService() {
            this.sysDao = new SysDao() ;
        }
        public Sys loginCheck(String name , String pass) {
            if(StringUtil.isEmpty(name) || StringUtil.isEmpty(pass)) {
                return null ;
            }
            try {
                Sys sys = sysDao.loginCheck(name , MD5Util.getMD5(pass)) ;
                return sys ;
            } catch (SQLException e) {
                e.printStackTrace();
                return null ;
            }
        }
        public int addCheck(String name,String pass){
            if(StringUtil.isEmpty(name) || StringUtil.isEmpty(pass)) {
                return -1 ;
            }
            try {
                int rs= sysDao.addSys(name,pass);
                return rs;
            } catch (SQLException e) {
                e.printStackTrace();
                return -1;
            }
    
        }
        public int changepassCheck(int id,String pass){
            if( StringUtil.isEmpty(pass)) {
                return -1 ;
            }
            try {
                int rs=sysDao.changePass(id,pass);
                return rs;
            } catch (SQLException e) {
                e.printStackTrace();
                return -1;
            }
    
        }
    }
    

    com.isoft.servlet包下

    AddSysServlet.java

    package com.isoft.servlet;
    
    import com.isoft.Util.JsonUtil;
    import com.isoft.entity.Sys;
    import com.isoft.service.SysService;
    
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import javax.servlet.http.HttpSession;
    import java.io.IOException;
    import java.util.HashMap;
    import java.util.Map;
    
    @WebServlet( "/sys/AddSysServlet")
    public class AddSysServlet extends HttpServlet {
        private SysService sysService ;
        public AddSysServlet() {
            this.sysService = new SysService() ;
        }
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            doGet(request,response);
        }
    
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            String name = request.getParameter("addsysname") ;
            String pass = request.getParameter("addsyspass") ;
            int rs =sysService.addCheck(name,pass);
    //        response.sendRedirect(request.getContextPath()+"/admin/ManagerIndex.html");
            Map<String , Object> map = new HashMap<>() ;
            int errorCode ;
            String errorMsg ;
            if(rs == -1) {
                errorCode = 1;
                errorMsg = " add defeat!" ;
            } else {
                errorCode = 0 ;
                errorMsg = "add seccess!" ;
                // 信息存入Session
            }
            map.put("errorCode" , errorCode) ;
            map.put("errorMsg" , errorMsg) ;
            response.getWriter().print(JsonUtil.obj2JsonStr(map));
        }
    }
    

    太多不想复制了,下面有下载链接,去copy吧

    com.isoft.Util包下

    去copy吧

    web下的目录结构

    admin内的html为用户登录后可以访问的页面

    login.html

    登录成功后

    只有几个小功能,但里面有挺多细节的问题,代码没问题。

    https://download.csdn.net/download/weixin_41342359/12093179

    展开全文
  • Java web实现登录时分为两种不同的状态,比如用户登录管理员登录,做成两个登录按钮,登录不同的账号进入不同的后台,怎么实现呢?
  • 这是一个使用Java语言和SQLServer数据库实现的学生管理系统,系统实现了学生信息查询、修改、添加、删除功能,实现管理员账号注册、登录、修改密码,退出登录的功能。
  • 一,项目功能描述 通过对管理员在前台页面输入的用户名,密码和验证码...3.由于这是一个为学生信息管理系统所作的登录页面,学生信息将会存储在数据库中,所以我们将管理员的信息也存入数据库之中。 三,界面预览 ...

    前言

    这一篇是用来记录我编写学生信息管理系统时实现登录操作的过程,这是学生信息管理系统的第一个模块,之后我还会陆续将其它模块分享出来。

    其它章节

    ------------------------>登录模块< ------------------------

    ------------------------>查询模块< ------------------------

    ------------------------> 增添模块< ------------------------

    ------------------------>修改模块< ------------------------

    ------------------------>删除模块< ------------------------

    GitHub–>学生信息管理系统

    一,项目功能描述

    通过对管理员在前台页面输入的用户名,密码和验证码进行校验,校验通过即可登录成功转到查询页面,校验失败则在页面上显示相应的错误。

    二,技术选型

    java+MySQL+jsp

    1.前台页面的登录逻辑使用Java编写。
    2.页面的展示使用jsp。
    3.由于这是一个为学生信息管理系统所做的登录页面,学生信息将会存储在数据库中,所以我们将管理员的信息也存入数据库之中。

    三,项目文件结构

    项目文件结构
    我们把项目分为如图所示的几个层次:
    1.web层:用来存放jsp页面和用来接收页面数据并进行逻辑处理 的servlet。
    2.service层:组合Dao层中的简单方法,形成复杂的功能。
    3.dao层:定义了对于数据库最基本的CRUD操作。
    4.util:存放一些自己定义的工具类。
    5.domain:用来存放实体类

    四, 准备工作

    1.创建一个JavaEE的模块取名为学生信息管理系统。

    2.点击如图所示蓝色区域进行编辑(按个人喜好来)设置tomact-1

    这是我配置的
    设置tomcat-2

    3.在WEB-INF目录下导入依赖JAR包

    在WEB-INF目录下导入依赖JAR包

    4.在数据库中创建表

    CREATE DATABASE chapter07; -- 创建数据库
    USE chapter07; 			   -- 使用数据库
    CREATE TABLE USER(   -- 创建表
    	id INT PRIMARY KEY AUTO_INCREMENT,
    	NAME VARCHAR(20) NOT NULL,
    	gender VARCHAR(5),
    	age INT,
    	address VARCHAR(32),
    	class	VARCHAR(50),
    	tel VARCHAR(20),
    	username VARCHAR(20),
    	PASSWORD VARCHAR(20)
    );
    ALTER TABLE USER  CHANGE class cls VARCHAR(50)
    
    SELECT * FROM USER
    
    INSERT  INTO USER(`id`,`name`,`gender`,`age`,`address`,`class`,`tel`,`username`,`password`) VALUES(1,'管理员',NULL,NULL,NULL,NULL,NULL,'administrators','123'); 
    
    

    5.在domain包下创建users的JavaBean

    注意:在创建变量的时候需要与数据库中的变量名保持一致。

    package com.itevent.domain;
    
    
    public class Users {
    
        private int id;
        private String name;
        private String gender;
        private int age;
        private String address;
        private String cls;
        private String tel;
        private String username;
        private String password;
    
        public Users() {
        }
    
        public Users(int id, String name, String gender, int age, String address, String cls, String tel, String username, String password) {
            this.id = id;
            this.name = name;
            this.gender = gender;
            this.age = age;
            this.address = address;
            this.cls = cls;
            this.tel = tel;
            this.username = username;
            this.password = password;
        }
    
        public int getId() {
            return id;
        }
    
        public void setId(int id) {
            this.id = id;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public String getGender() {
            return gender;
        }
    
        public void setGender(String gender) {
            this.gender = gender;
        }
    
        public int getAge() {
            return age;
        }
    
        public void setAge(int age) {
            this.age = age;
        }
    
        public String getAddress() {
            return address;
        }
    
        public void setAddress(String address) {
            this.address = address;
        }
    
        public String getCls() {
            return cls;
        }
    
        public void setCls(String cls) {
            this.cls = cls;
        }
    
        public String getTel() {
            return tel;
        }
    
        public void setTel(String tel) {
            this.tel = tel;
        }
    
        public String getUsername() {
            return username;
        }
    
        public void setUsername(String username) {
            this.username = username;
        }
    
        public String getPassword() {
            return password;
        }
    
        public void setPassword(String password) {
            this.password = password;
        }
    
        @Override
        public String toString() {
            return "Users{" +
                    "id=" + id +
                    ", name='" + name + '\'' +
                    ", gender='" + gender + '\'' +
                    ", age=" + age +
                    ", address='" + address + '\'' +
                    ", cls='" + cls + '\'' +
                    ", tel='" + tel + '\'' +
                    ", username='" + username + '\'' +
                    ", password='" + password + '\'' +
                    '}';
        }
    }
    
    

    6.创建一个properties配置文件

    在这里插入图片描述

    7.创建一个使用数据库的工具类

    在这里我使用的是Druid,如果各位用的是其他的数据库连接池可以自行更改。

    package com.itevent.util;
    
    import com.alibaba.druid.pool.DruidDataSourceFactory;
    
    import javax.sql.DataSource;
    import java.io.IOException;
    import java.io.InputStream;
    import java.sql.Connection;
    import java.sql.SQLException;
    import java.util.Properties;
    
    /**
     * JDBC工具类 使用Durid连接池
     */
    public class JDBCUtils {
    
        private static DataSource ds ;
    
        static {
    
            try {
                //1.加载配置文件
                Properties pro = new Properties();
                //使用ClassLoader加载配置文件,获取字节输入流
                InputStream is = JDBCUtils.class.getClassLoader().getResourceAsStream("druid.properties");
                pro.load(is);
    
                //2.初始化连接池对象
                ds = DruidDataSourceFactory.createDataSource(pro);
    
            } catch (IOException e) {
                e.printStackTrace();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    
        /**
         * 获取连接池对象
         */
        public static DataSource getDataSource(){
            return ds;
        }
    
    
        /**
         * 获取连接Connection对象
         */
        public static Connection getConnection() throws SQLException {
            return  ds.getConnection();
        }
    }
    
    

    五,分析(我们只对登录逻辑进行分析)

    1.对验证码进行校验,首先我们需要获取到用户输入的用户名,密码和验证码等数据,将用户输入的验证码与后台生成的验证码进行比对,如果验证码错误,则在页面的提示框中显示错误的信息,如果验证码正确则继续进行用户名和密码的验证,有了验证码可以避免机器登录恶意访问,提高了安全性能,也减少了对数据库的操作。

    2.将获取到的用户名和密码封装为一个users对象,现在,我们拥有数据之后需要对数据库进行操作,所以在dao层中我们创建一个通过用户名和密码查询的方法,参数为username和password,在其中定义sql语句进行查询的操作,返回的对象用service来接受,在登录的servlet里边封装调用此方法。
    在这里插入图片描述

    六,代码实现

    1.首先,我们需要在页面上显示一个验证码,这个验证码不能是已经缓存好的图片,我们需要自己来写一个servlet来生成动态的验证码,当然我这里为了演示,并没有在验证码上画干扰线,各位可以根据自己的需求加。

    package com.itevent.web.servlet;
    
    import javax.imageio.ImageIO;
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.awt.*;
    import java.awt.image.BufferedImage;
    import java.io.IOException;
    import java.util.Random;
    
    /**
     * 验证码
     */
    @WebServlet("/checkCodeServlet")
    public class CheckCodeServlet extends HttpServlet {
    	public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {
    
    		//服务器通知浏览器不要缓存
    		response.setHeader("pragma", "no-cache");
    		response.setHeader("cache-control", "no-cache");
    		response.setHeader("expires", "0");
    
    		//在内存中创建一个长80,宽30的图片,默认黑色背景
    		//参数一:长
    		//参数二:宽
    		//参数三:颜色
    		int width = 80;
    		int height = 30;
    		BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
    
    		//获取画笔
    		Graphics g = image.getGraphics();
    		//设置画笔颜色为灰色
    		g.setColor(Color.gray);
    		//填充图片
    		g.fillRect(0, 0, width, height);
    
    		//产生4个随机验证码,
    		String checkCode = getcheckCode();
    		//将验证码放入HttpSession中
    		request.getSession().setAttribute("checkCode",checkCode);
    
    		//设置画笔颜色为黄色
    		g.setColor(Color.yellow);
    
    		//设置字体的小大
    		g.setFont(new Font("黑体",Font.BOLD,24));
    
    		//向图片上写入验证码
    		g.drawString(checkCode,15,25);
    
    
    		//将内存中的图片输出到浏览器
    		//参数一:图片对象
    		//参数二:图片的格式,如PNG,JPG,GIF
    		//参数三:图片输出到哪里去
    		ImageIO.write(image,"PNG",response.getOutputStream());
    	}
    
    	/**
    	 * 产生4位随机字符串
    	 */
    	private String getcheckCode(){
    
    		String base = "123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
    		Random r = new Random();
    		int size = base.length();
    		StringBuffer sb = new StringBuffer();
    		for (int i = 0; i < 4; i++) {
    			//产生0到size-1的随机值
    			int index = r.nextInt(size);
    			//在base字符串中获取下标为index的字符
    			char ch = base.charAt(index);
    			//将c放入到StringBuffer中去
    			sb.append(ch);
    		}
    
    			return sb.toString();
    
    	}
    
    	public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		this.doGet(request,response);
    	}
    }
    
    
    
    
    

    2.将checkCode展示在页面上

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <!DOCTYPE html>
    <html lang="zh-CN">
      <head>
        <meta charset="utf-8"/>
        <meta http-equiv="X-UA-Compatible" content="IE=edge"/>
        <meta name="viewport" content="width=device-width, initial-scale=1"/>
        <title>管理员登录</title>
    
        <!-- 1. 导入CSS的全局样式 -->
        <link href="css/bootstrap.min.css" rel="stylesheet">
        <!-- 2. jQuery导入,建议使用1.9以上的版本 -->
        <script src="js/jquery-2.1.0.min.js"></script>
        <!-- 3. 导入bootstrap的js文件 -->
        <script src="js/bootstrap.min.js"></script>
        <script type="text/javascript">
    
    		function refreshCode() {
    		    //绑定单击事件
    			var vocode = document.getElementById("vcode");
    			vcode.src = "${pageContext.request.contextPath}/checkCodeServlet?time="+new Date().getTime();
    		}
    
        </script>
    
      </head>
      <body>
      	<div class="container" style="width: 400px;">
      		<h3 style="text-align: center;">管理员登录</h3>
            <form action="${pageContext.request.contextPath}/loginServlet" method="post">
    	      <div class="form-group">
    	        <label for="username">用户名:</label>
    	        <input type="text" name="username" class="form-control" id="username" placeholder="请输入用户名"/>
    	      </div>
    	      
    	      <div class="form-group">
    	        <label for="password">密码:</label>
    	        <input type="password" name="password" class="form-control" id="password" placeholder="请输入密码"/>
    	      </div>
    	      
    	      <div class="form-inline">
    	        <label for="vcode">验证码:</label>
    	        <input type="text" name="verifycode" class="form-control" id="verifycode" placeholder="请输入验证码" style="width: 120px;"/>
    	        <a href="javascript:refreshCode()">
    				<img src="${pageContext.request.contextPath}/checkCodeServlet" title="看不清点击刷新" id="vcode"/>
    			</a>
    	      </div>
    	      <hr/>
    
    	      <div class="form-group" style="text-align: center;">
    	        <input class="btn btn btn-primary"  type="submit" value="登录">
    	       </div>
    	  	</form>
    		
    		<!-- 出错显示的信息框 -->
    	  	<div class="alert alert-warning alert-dismissible" role="alert">
    		  <button type="button" class="close" data-dismiss="alert" >
    		  	<span>&times;</span></button>
    		   <strong>${login_msg}</strong>
    		</div>
      	</div>
      </body>
    </html>
    

    3.实现登录的逻辑操作

    package com.itevent.web.servlet;
    
    import com.itevent.domain.Users;
    import com.itevent.service.UserService;
    import com.itevent.service.impl.UserServiceImpl;
    
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import javax.servlet.http.HttpSession;
    import java.io.IOException;
    
    @WebServlet("/loginServlet")
    public class LoginServlet extends HttpServlet {
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    
            //1.设置编码
            request.setCharacterEncoding("utf-8");
    
            //2.获取数据
            String username = request.getParameter("username");
            String password = request.getParameter("password");
            String verifycode = request.getParameter("verifycode");
    
    
            //3.判断验证码是否正确
            HttpSession session = request.getSession();
            String checkCode = (String)session.getAttribute("checkCode");//获取用户输入的验证码
            session.removeAttribute("checkCode");//保证了验证码的唯一性
            //对验证码进行校验
            if (verifycode == null || ! checkCode.equalsIgnoreCase(verifycode)){
                request.setAttribute("login_msg","验证码错误!");
                //跳转登录页面
                request.getRequestDispatcher("/login.jsp").forward(request,response);
                return;
            }
    
    
            //4.封装user对象
            Users users = new Users();
            users.setUsername(username);
            users.setPassword(password);
    
            //5.调用service中的登录方法
            UserService service = new UserServiceImpl();
            Users adm = service.login(users);
    
    
            //6.判断输入的数据是否正确
            if (adm != null){
             
                //验证成功
    
                //跳转页面
                response.sendRedirect(request.getContextPath()+"/index.jsp");
            }else {
            //验证失败
                request.setAttribute("login_msg","用户名或密码错误!");
           //发送信息
                request.getRequestDispatcher("/login.jsp").forward(request,response);
            }
            
        }
    
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            this.doPost(request, response);
        }
    }
    
    

    4.service层(由于现在只实现了一个登录功能,暂时体现不出service层组合Dao层中的简单方法,形成复杂的功能的方便之处。)

    package com.itevent.service;
    
    import com.itevent.domain.Users;
    
    public interface UserService {
    
        /**
         * 通过用户名和密码查找管理员
         * @return
         * @param users
         */
        Users login(Users users);
    }
    
    
    package com.itevent.service.impl;
    
    import com.itevent.dao.UserDao;
    import com.itevent.dao.impl.UserDaoImpl;
    import com.itevent.domain.Users;
    import com.itevent.service.UserService;
    
    public class UserServiceImpl implements UserService {
    
        
        private UserDao dao = new UserDaoImpl();
        
        @Override
        public Users login(Users users) {
            //返回查询的结果
            return dao.findAdm(users.getUsername(),users.getPassword());
        }
    }
    
    

    5.对数据库通过用户名和密码来进行查询的操作

    package com.itevent.dao;
    
    import com.itevent.domain.Users;
    
    public interface UserDao {
        
        Users findAdm(String username, String password);
    }
    
    
    package com.itevent.dao.impl;
    
    
    import com.itevent.dao.UserDao;
    import com.itevent.domain.Users;
    import com.itevent.util.JDBCUtils;
    import org.springframework.jdbc.core.BeanPropertyRowMapper;
    import org.springframework.jdbc.core.JdbcTemplate;
    
    public class UserDaoImpl implements UserDao {
    
        private JdbcTemplate template = new JdbcTemplate(JDBCUtils.getDataSource());
    
        @Override
        public Users findAdm(String username,String password) {
    
            try {
                //要和数据库中的名字保持一致
                String sql = "select * from user where username = ? and password = ?";
                Users adm = template.queryForObject(sql, new BeanPropertyRowMapper<Users>(Users.class), username, password);
    
                return adm;
            }catch (Exception e){
                e.printStackTrace();
                return null;
            }
    
        }
    }
    
    

    6. 启动服务器,运行程序

    这是初始化页面
    在这里插入图片描述
    这是验证码输入有误的情况
    在这里插入图片描述
    用户名或密码输入错误
    在这里插入图片描述
    登陆成功后会跳转的下一个页面(这个页面只是一个测试页面)
    在这里插入图片描述

    八,我所遇到的问题

    1.在刚开始向数据库中存储管理员数据的时候只是将他的用户名和密码给保存了,其它的数据取了默认值,到最后我要检查我的用户名输入是否正确的时候,程序一直显示我的用户名或密码错误,起初我并不知道是什么原因,只是在代码上看过来看过去,我觉的我编写的逻辑并没有什么问题,所以在程序中打了几个点,debug了一下,发现问题出在UserDaoImpl中,执行完sql语句之后并没能封装成一个users对象,出现了数据转换异常,因为age的数据没有填写导致问题。如果你使用我上边创建的管理员数据也会出现同样的问题。
    2.在写登录页面的逻辑操作的时候,出现了很多小bug,因为找不到令人很头疼,而且对与web项目中的debug还不太熟悉,只能凭着感觉来打点,找bug所在,慢慢摸索怎么打点。debug也是我所需要学习的地方

    九,总结

    这是我的第一次将自己所做的项目用博客的形式写了出来,因为想记录一下自己写代码时的过程,把自己写代码的思路和步骤还有自己所碰到的问题展示出来,相当于做一个笔记吧。
    之前跟着视频敲代码,感觉挺良好,啥都会,等到自己一上手,全都懵。所以看会了不代表你会了。代码只有多敲一敲才能发现自己的问题,从而解决问题,最后掌握问题。

    这是学生信息管理系统的第一个模块,之后我还会陆续将其它模块给各位分享出来,如果你发现我的代码有什么错误或者可以改进的地方评论出来,大家共同进步!

    展开全文
  • 1. 管理员登陆 此模块关键是利用MenuBar添加菜单条利用Menu和MenuItem添加菜单和菜单各个参数经过事件ActionEvent 能够实现进入各个模块如管理日志管理员添加管理员切 换读者添加读者修改读者查询读者删除新书入库...
  • 系统用户管理模块:实现管理员的增加、查看功能; 会员信息管理模块:实现会员信息的增加、修改、查看功能; 注册用户管理模块:实现注册用户的增加、修改、查看功能; 会员卡管理模块:实现会员卡信息的增加、...
  • java购物管理

    2019-04-20 11:22:54
    java类与对象的方法,完成登录和用户名密码的验证的功能,使用switch输出相应的数字完成菜单之间的跳转,显示需要的用户信息,实现购物管理系统。
  • ssm实现管理员登录

    千次阅读 2019-12-07 21:13:12
    //validateLogin实现登录,跳转到项目主页 @RequestMapping ( value = "/login.action" , method = RequestMethod . POST ) public String validateLogin ( Model model , HttpSession session , ...

    在这里插入图片描述
    原生ssm搭建环境所需要的配置文件
    (mapper的xml文件也可以放在这里)
    在这里插入图片描述

    在这里插入图片描述
    web.xml文件是什么?有什么用?

    一般的web工程中都会用到web.xml,web.xml主要用来配置,可以方便的开发web工程。web.xml主要用来配置Filter、Listener、Servlet,session等。但是要说明的是web.xml并不是必须的,一个web工程可以没有web.xml文件。

    1、WEB工程加载web.xml过程

    经过个人测试,WEB工程加载顺序与元素节点在文件中的配置顺序无关。即不会因为 filter 写在 listener 的前面而会先加载filter。WEB容器的加载顺序是:
    ServletContext -> context-param -> listener ->filter -> servlet。并且这些元素可以配置在文件中的任意位置。

    加载过程顺序如下:

    启动一个WEB项目的时候,WEB容器会去读取它的配置文件web.xml,读取和两个结点。
    紧接着,创建一个ServletContext(servlet上下文),这个web项目的所有部分都将共享这个上下文。 容器将
    转换为键值对,并交给servletContext。 容器创建中的类实例,创建监听器

    • 关于原生ssm框架的搭建,如果有时间的话再做

    跳转登录页面

    首先在Controller层
    在这里插入图片描述

    
    @Controller//需要注解声明Controller层
    @RequestMapping("/admin/user")//窄化路径
    public class UserController {
    	//自动注入UserService
    	@Autowired
    	private UserService us;
    	//为什么这里要写/login.action?
    	@RequestMapping("/login.action")
    	public String login(){
    		//WEB-INF/view/index.jsp 等同于内部转发
    		return "index";
    	}
    	//validateLogin实现登录,跳转到项目主页
    	@RequestMapping(value = "/login.action",method = RequestMethod.POST)
    	public String validateLogin(Model model,HttpSession session, String username,String password) {
    		/*
    		ModelandView视图模型
    		实现登录校验
    		判断页面中输入的用户名和密码在数据库中是否存在
    		需要controller层和service层进行连接
    		*/
    		User user = us.Validate(username, password);
    		if (user!=null) {
    			session.setAttribute("login_user", user);
    			return "admin";
    			}else {
    				model.addAttribute("errorMessage","用户名或者密码错误");
    				return"index";
    			}
    	 }
    	
    }
    
    

    service层

    在这里插入图片描述

    @Service//需要注解声明ervice层
    public class UserServiceImpl implements UserService {
    	//调用UserMapper.login方法验证
    	@Autowired
    	private UserMapper um;
    
    	@Override
    	public User validate(String username, String password) {
    		User user = um.login(username, password);
    		if (user != null) {
    			return user;
    		}
    		return null;
    	}
    
    }
    

    Mapper接口层

    在这里插入图片描述

    public interface UserMapper {
    	 //注意返回的类型是User @parm强制转换类型
    	User login(@Param("u_name")String u_name,@Param("u_pwd")String u_pwd);
    	
    }
    

    在这里插入图片描述

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
    
    <mapper namespace="crm.mapper.UserMapper">
    	<!-- 登录映射 mapper.xml中主要编写SQL语句 -->
    	<select id="login" parameterType="String"
    		resultType="crm.pojo.User">
    
    		select*from t_user where
    		u_name = #{u_name} and u_pwd = #{u_pwd}
    		
    	</select>
    </mapper>
    

    index.jsp

    <%@ page language="java" contentType="text/html; charset=UTF-8"
    	pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>登录--杭歌客户关系管理系统</title>
    <link rel="stylesheet" href="${pageContext.request.contextPath}/css/Index.css">
    
    </head>
    <body>
    	<div class="login">
    		<!-- 图片标签 alt 图片信息 src 路径 -->
    		<img alt="杭歌" src="${pageContext.request.contextPath}/image/logo.png">
    		<!-- 段落标签 -->
    		<p>杭歌客户关系管理系统</p>
    		<!-- form表单标签 目的将来往服务器提交数据 -->
    		<form action="${pageContext.request.contextPath }/admin/user/login.action"
    			method="post">
    			<!-- 标签的嵌套 -->
    			<div>
    				<!-- input 输入框标签 -->
    				<input type="text" id="username" name="username"
    					placeholder="请输入用户名">
    			</div>
    
    			<!-- 属性写到标签的内部 行内样式 STYLE-->
    			<div>
    				<input type="password" id="password" name="password"
    					placeholder="请输入密码">
    			</div>
    			<p class="message">${errorMessage}</p>
    			<div>
    				<input type="submit" value="登录" />
    			</div>
    		</form>
    	</div>
    </body>
    </html>
    
    展开全文
  • 编写类,实现系统主入口功能,用户输入用户名和密码,符合条件的进入系统。否则不能进入系统。(用户名固定和密码固定为admin和123)
  • 系统针对的用户是企业的管理员和物流客户,管理员主要完成了对企业内部的商品管理、库存管理、运输管理,以及对客户的基本信息管理和客户的运单管理,并进行运单等数据信息的统计查询。客户登录系统后可以进行自己...
  • 系统中包括了学生、教师和管理员三种用户。学生用户可以通过网页进行注册登录,查看课程并选择课程进行缴费,缴费的课程可以进行老师的评价、作业的上传以及进行请假申请。可以查看管理员发布的消息通知。教师用户...
  • 系统用户管理模块:实现管理员的增加、查看功能; 会员信息管理模块:实现会员信息的增加、修改、查看功能; 注册用户管理模块:实现注册用户的增加、修改、查看功能; 会员卡管理模块:实现会员卡信息的增加、查看...
  • Java新闻发布系统新闻发布及管理系统就是一个能够在网上实现新闻的发布及管理,让人们更好的获取更新的新闻资讯。 (1)用户管理: 用户注册:新用户注册 用户登录:新用户登录 找回密码:忘记密码找回密码 用户...
  • 垃圾分类管理系统具有前台用户、普通管理员、超级管理员三种用户组成,前台用户可以进行注册登录,查看垃圾分类知识,发布和查看新闻,利用积分进行商品兑换,积分是通过发布新闻获得,可以申请领取垃圾袋,可以在...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 63,721
精华内容 25,488
关键字:

java实现管理员登录

java 订阅