zoukankan      html  css  js  c++  java
  • 基于ssh开发web项目-用户登录流程

    1. pm/WebContent/admin/index.jsp

        登录后台页面:http://localhost:8888/pm/admin/index.jsp

        输入用户名和密码,JavaScript代码初步校验(checkName和checkPwd保证其至少三个字符),表单提交action,名字为login.oo,命名空间为/admin。

    <script type="text/javascript">
            function sub() {
            if (checkName() && checkPwd()) {
                return true;
            }
            return false;
        }
    </script>
    
    <s:form action="login.oo" namespace="/admin" method="post"
                    onsubmit="return sub();">

    2. /pm/WebContent/WEB-INF/web.xml

        在web.xml中定义Filter来拦截用户请求。第一部分为作者自定义拦截器,区别于struts默认的拦截器struts2filter;filter-class指拦截器实现类;filter-mapping指拦截器拦截的URL地址。

        <filter>
            <filter-name>authorizefilter</filter-name>
            <filter-class>com.bbkmobile.iqoo.common.security.SecurityFilter</filter-class>
        </filter>
        <filter-mapping>
            <filter-name>authorizefilter</filter-name>
            <url-pattern>*.jsp</url-pattern>
            <url-pattern>*.oo</url-pattern>
        </filter-mapping>
    
        <filter>
    <filter-name>struts2filter</filter-name>
    <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
        </filter>
        <filter-mapping>
            <filter-name>struts2filter</filter-name>
            <url-pattern>/*</url-pattern>
        </filter-mapping>

    3. /pm/src/struts.xml

         struts.xml配置了Action和用户请求之间的对应关系。命名空间为/admin ,与之前相符;extends表示继承了default包;action以通配符定义,则表示method名和name相同均为login;该Action的实现类为adminAction;所以,对应去找命名空间为/admin的adminAction类的login方法。

    <package name="admin" namespace="/admin" extends="default">
            <action name="*" class="adminAction" method="{1}">
                <result name="register">/admin/register.jsp</result>
                <result name="success">/admin/login.jsp</result>
                <result name="relogin">/admin/login.jsp</result>
                <result name="logout" type="redirect">/admin/login.jsp</result>
                <result name="login" type="redirect">/admin/test.jsp</result>
            </action>
    </package>

    4. /pm/src/admin/AdminAction.java

     public String login() throws Exception {
            try {
                if (adminService.userExists(user)) {
                    adminService.richUserVO(user);
                    putUserIntoSession();
                    session.put("USER_PRIORITY", user.getPriority());
                    session.put("USER_ID", user.getUserid());
                    session.put("USER_INFO", user);
                    session.put("USER_DEPID", user.getDept_id());
                    String userName = user.getName();
                    session.put("USER_NAME", userName);
                    return "login"; // 登陆成功
                } else {
                    addActionError("用户名、密码错误!");
                    return "relogin";
                }
            } catch (Exception e) {
                e.printStackTrace();
                addActionError("用户名、密码错误!");
                addActionMessage("用户名、密码错误!msg");
                return "relogin"; // 登陆失败
            }
        }

     

    5. /pm/src/admin/service/impl/AdminServiceImpl.java

        public boolean userExists(UserInfo user) throws Exception {
            return adminDAO.exists(user);
        }

    6. /pm/src/admin/dao/impl/AdminDaoImpl.java

        public boolean exists(UserInfo user) throws Exception {
            if (null != findByNoAndPwd(user)) {
                return true;
            }
            return false;
        }
        public User findByNoAndPwd(UserInfo user) throws Exception {
            Session s = null;
            try {
                s = getSession();
                Query q = s
                        .createQuery("from User as po where po.employeeNo=? and po.password=?");
                q.setString(0, user.getEmployeeNo());
                q.setString(1, user.getPwd());
                List<?> ls = q.list();
                if (null != ls && ls.size() > 0) {
                    return (User) ls.get(0);
                } else {
                    return null;
                }
            } catch (Exception e) {
                throw e;
            } finally {
                if (null != s) {
                    releaseSession(s);
                }
            }
        }
  • 相关阅读:
    精通正则表达式(JavaScript)
    Go知识点记录
    多线程揭秘
    Python test
    ELinq+T4模版引擎制作多文件实体代码生成器
    浏览器内核
    MongoDb的增删改查
    LINQ执行表达式
    ASP.NET MVC3 读书笔记四(数据注解和验证)
    C#默认以管理员身份运行程序
  • 原文地址:https://www.cnblogs.com/nightowc/p/4750286.html
Copyright © 2011-2022 走看看