在web开发中,session的使用与检验

  第一次写博客,早就有这个想法,奈何实力不够,又没有太多的时间,现在在一家公司实习,有一些时间,就把一些问题的解决方法用这个来记录下来吧,权当记事本了。

session是用来保存用户状态的,比如我们设计网页时,用jsp为例,我们登录之后再进行其他操作时就要检验是否登录,就像csdn一样,登录之后就不用登录,可以使用自己的权限。

 以前很少用到这个,学校教的不全面,现在举例:我们在jsp页面登陆完传值回servlet处理时,可以这样写servlet。

protected void service(HttpServletRequest req, HttpServletResponse resp)
    throws ServletException, IOException {
    String loginName = req.getParameter("loginName");
    String passWord = req.getParameter("passWord");
    t_sys_User_Dao tsud = new t_sys_User_DaoImpl();
    PrintWriter pw = resp.getWriter();
    List<t_sys_User> list = tsud.findAll();
    HttpSession session = req.getSession();
    System.out.println("list.size===="+list.size());
    for(int i=0;i<list.size();i++){
    if(loginName.equals(list.get(i).getLoginName())){
    if(passWord.equals(list.get(i).getPassword())){
    session.setAttribute("loginName", loginName);
    resp.sendRedirect("/index.jsp");
    break;
    }else{
    String a="<body onLoad=\"checkForm()\"><script language=\"JavaScript\" type=\"text/JavaScript\">function checkForm(){"+ 
       "alert(\"password error!\");location.href='/login/loginForm.jsp';}</script>";
                    pw.println(a);
                    break;
    }
    }
    if((i+1)==list.size()){
    String b="<body onLoad=\"checkForm()\"><script language=\"JavaScript\" type=\"text/JavaScript\">function checkForm(){"+ 
   "alert(\"user not exist!\");location.href='/login/loginForm.jsp';}</script>";
                pw.println(b);
    }
    }
    }

session.setAttribute("loginName", loginName);这句话是用来设置session的,后面的一些语句是用来检测一下而已。session在使用时必须先设定,这样我们的浏览器中就有这个session了,它的名字是loginName。

获取session与检测有两种方法:

1)<%
   String ss = (String)session.getAttribute("loginName");
   if(ss==null){
  response.sendRedirect("/login/loginForm.jsp");
   }
%>

在要检测的页面放入以上代码,这样的话在执行这个页面的时候就要先判断session是否为空,是的话就要返回登录。

2)这种方法是用过滤器

在每个要执行的页面都先过滤,判断session

public class checkSession implements Filter {
//这个在web.xml中要放在最上面
    public checkSession() {
        // TODO Auto-generated constructor stub
    }
public void destroy() {
// TODO Auto-generated method stub
}
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) 
throws IOException, ServletException {
HttpServletRequest req = (HttpServletRequest)request;
String loginName = (String)req.getSession().getAttribute("loginName");
System.out.println("loginName+session===="+loginName);
if(loginName!=null){
chain.doFilter(request, response);
}else{
req.getRequestDispatcher("login/loginForm.jsp").forward(request, response);
}

}
public void init(FilterConfig fConfig) throws ServletException {
// TODO Auto-generated method stub
}
}

这种方法比较快捷,不用每个页面都添加判断代码,十分方便,上面的过滤器比较简单。

注意:过滤器在web.xml中要放在servlet的前面,这样才有效果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值