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



Log  In  按钮代码

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


点击 按钮 触发submitForm()事件

function submitForm()
{
    if (trim(loginForm.userId.value).length == 0) {
        alert("用户代码不能为空!");
        loginForm.userId.focus();
        return;
    }
    if (trim(loginForm.password.value).length == 0) {
        alert("密码不能为空!");
        loginForm.password.focus();
        return;    
    }
    loginForm.action = "login.jsp";
    loginForm.method = "post";
    loginForm.submit();
}


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

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


然后执行java代码:

<%
    String command = request.getParameter("command");
    out.println(command);
    if ("login".equals(command)) {
        String userId = request.getParameter("userId");
        String password = request.getParameter("password");
        
        try {
            User user = UserManager.getInstance().login(userId, password);
            
            //将用户信息设置到session中
            session.setAttribute("user_info", user);
            
            //设置session超时单位为秒,下面session失效时间为1小时
            //session.setMaxInactiveInterval(60*60);
            
            //重定向到主控页面
            response.sendRedirect(request.getContextPath() + "/main.jsp");
        }catch(UserNotFoundException e) {
            out.println(e.getMessage());
        }catch(PasswordNotCorrentException e) {
            out.println(e.getMessage());
        }
        
    }
%>


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)之间的区别

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


  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 22
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 22
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值