• 【DRP】-用户登录-session和重定向


    Log  In  按钮代码

    1 <A href="javascript:submitForm()" onc><IMG height=20 src="images/login_button.gif" width=71 border=0 name=button> </A>

    点击 按钮 触发submitForm()事件

     1 function submitForm()
     2 {
     3     if (trim(loginForm.userId.value).length == 0) {
     4         alert("用户代码不能为空!");
     5         loginForm.userId.focus();
     6         return;
     7     }
     8     if (trim(loginForm.password.value).length == 0) {
     9         alert("密码不能为空!");
    10         loginForm.password.focus();
    11         return;    
    12     }
    13     loginForm.action = "login.jsp";
    14     loginForm.method = "post";
    15     loginForm.submit();
    16 }

    ps:loginForm 是表单的Name ,这里我们又可以学到一个知识点。那就是通过form表单的名字,我们可以通过去from 点 控件的Name来获取控件中的值。 

    注:因为这里提交的form表单中包含密码,所以不要用get提交,因为get提交会在地址栏中显示出密码。

    然后执行java代码:

     1 <%
     2     String command = request.getParameter("command");
     3     out.println(command);
     4     if ("login".equals(command)) {
     5         String userId = request.getParameter("userId");
     6         String password = request.getParameter("password");
     7         
     8         try {
     9             User user = UserManager.getInstance().login(userId, password);
    10             
    11             //将用户信息设置到session中
    12             session.setAttribute("user_info", user);
    13             
    14             //设置session超时单位为秒,下面session失效时间为1小时
    15             //session.setMaxInactiveInterval(60*60);
    16             
    17             //重定向到主控页面
    18             response.sendRedirect(request.getContextPath() + "/main.jsp");
    19         }catch(UserNotFoundException e) {
    20             out.println(e.getMessage());
    21         }catch(PasswordNotCorrentException e) {
    22             out.println(e.getMessage());
    23         }
    24         
    25     }
    26 %>

    ps:command 是jsp页面中的一个隐含域,值为login 。作用为:验证用户是否提交表单。

    页面去session中的值:

    1 <%
    2     User user = (User)session.getAttribute("user_info");
    3 %>    
    <td width="21%">
          当前用户:<%=user.getUserName() %>
     </td>

    session的默认失效时间是30分钟,也可以在配置文件中设置session或代码中设置session。如果同时设置,已代码中为准。

    web.xml文件设置session:

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app version="2.4" 
        xmlns="http://java.sun.com/xml/ns/j2ee" 
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
        xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
        http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
        
        <filter>
            <filter-name>CharsetEncodingFilter</filter-name>
            <filter-class>com.bjpowernode.drp.util.filter.CharsetEncodingFilter</filter-class>
            <init-param>
                <param-name>encoding</param-name>
                <param-value>GBK</param-value>
            </init-param>        
        </filter>    
        
        <filter-mapping>
            <filter-name>CharsetEncodingFilter</filter-name>
            <url-pattern>*.jsp</url-pattern>
        </filter-mapping>
        
        <session-config>
            <session-timeout>60</session-timeout>
        </session-config>
    </web-app>

    编程小技巧:

    1、session的使用

    把只放入session中:session.setAttribute("user_info", user);

    从session中取值:User user = (User)session.getAttribute("user_info");

    2、页面重定向

     response.sendRedirect(request.getContextPath() + "/main.jsp");               // 使用request.getContextPath()获取网站根目录

    3、获取form表单中的控件

    loginForm.userId.value

    学习博客连接:

     response.sendRedirect() 和 dispatcher.forward(request,response)之间的区别

    总结:让自己的知识打结点,不断提高自己的编程效率!

  • 相关阅读:
    平均值的最值化
    GCJ 2008 R3 C 二分图匹配
    BZOJ 1013 高斯消元
    NOIP2015 d2T3 二分+树上前缀和
    9.7集训 总结
    BZOJ 1026
    BZOJ 3223
    NOIP前夕:codevs,关路灯
    NOIP前夕:codevs,解药还是毒药
    NOIP前夕:codevs,修剪花卉
  • 原文地址:https://www.cnblogs.com/yinweitao/p/5627338.html
Copyright © 2020-2023  润新知