• Servlet课程0425(六) 不经过验证直接跳转---session实现不同页面之间共享数据


    在地址栏直接输入http://localhost:8080/myWebSite/wel

    会发现页面也能跳转,只不过用户名和密码都为空,这是不可以的,因为没有经过验证非法登录了

    Welcome,hello,nullpassword=null

    而使用session防止用户非法登录

    Login.java
    //登录界面
    package com.tsinghua;
    
    import javax.servlet.http.*;
    import java.io.*;
    
    public class Login extends HttpServlet{
        public void doGet(HttpServletRequest req, HttpServletResponse res)
        {
        
                //业务逻辑
            try{
                //中文乱码
                //浏览器默认ISO-8859
                res.setContentType("text/html;charset=gbk");            
                
                PrintWriter pw = res.getWriter();
                
                //返回登录界面
                pw.println("<html>");
                pw.println("<body>");
                pw.println("<h1>登录界面</h1>");
                pw.println("<form action='loginCl' method=post>");
                pw.println("用户名<input type='text' name='username'/><br/>");
                pw.println("密码<input type='password' name='userpwd'/><br/>");
                pw.println("<input type='submit' value='loing' /><br/>");
                pw.println("</form>");
                pw.println("</body>");
                pw.println("</html>");
                
                
            }
            catch(Exception ex)
            {
                ex.printStackTrace();
            }
            
        }
        
         //处理get请求
         //req用于获得客户端(浏览器)的信息
         //res用于向 客户端(浏览器)返回信息
        public void doPost(HttpServletRequest req, HttpServletResponse res)
        {
            
            this.doGet(req,res);        
            
        }    
        
        
    }

    LoginCl.java

    //登录界面
    package com.tsinghua;
    
    import javax.servlet.http.*;
    import java.io.*;
    
    public class LoginCl extends HttpServlet{
        public void doGet(HttpServletRequest req, HttpServletResponse res)
        {
        
                //业务逻辑
            try{
                
                //接收用户名和密码
                String u  = req.getParameter("username");
                String p = req.getParameter("userpwd");
                //验证
                
                if(u.equals("litao") && p.equals("litao")){
                    //合法    
                    //将验证成功的信息写入session
                    //得到session,得到session那张表
                    HttpSession hs = req.getSession(true);
                    //默认30分钟,为了展示效果下面修改销毁时间
                    //该方法是按照秒来算的
                    hs.setMaxInactiveInterval(20);
                    
                    //写入属性
                    hs.setAttribute("pass","ok");
                    
                    //跳转到welcome
                    res.sendRedirect("wel?uname="+u+"&upass="+p);
                }
                else{
                    //不合法
                    //写你要到的Servlet的那个URL
                    res.sendRedirect("login");    
                }
                            
                
            }
            catch(Exception ex)
            {
                ex.printStackTrace();
            }
            
        }
        
         //处理get请求
         //req用于获得客户端(浏览器)的信息
         //res用于向 客户端(浏览器)返回信息
        public void doPost(HttpServletRequest req, HttpServletResponse res)
        {
            
            this.doGet(req,res);        
            
        }    
        
        
    }

    Welcome.java

    //登录界面
    package com.tsinghua;
    
    import javax.servlet.http.*;
    import java.io.*;
    
    public class Welcome extends HttpServlet{
        public void doGet(HttpServletRequest req, HttpServletResponse res)
        {
            //得到session,得到session那张表
            HttpSession hs = req.getSession(true);
            String val = (String)hs.getAttribute("pass");
            
            //判断
            if(val == null)
            {
                try
                {
                    //非法登录
                    res.sendRedirect("login");
                
                }catch(Exception ex)
                {
                    ex.printStackTrace();
                }
    
            }
            
            
            //得到从logincl传递的用户名和密码
            //如果参数的名字写错了,则得到的是null空值
            String u = req.getParameter("uname");
            String p = req.getParameter("upass");
        
                //业务逻辑
            try{
                
                PrintWriter pw = res.getWriter();
                
                //返回登录界面
                pw.println("Welcome,hello,"+u+" password="+p);            
                
            }
            catch(Exception ex)
            {
                ex.printStackTrace();
            }
            
        }
        
         //处理get请求
         //req用于获得客户端(浏览器)的信息
         //res用于向 客户端(浏览器)返回信息
        public void doPost(HttpServletRequest req, HttpServletResponse res)
        {
            
            this.doGet(req,res);        
            
        }    
        
        
    }


  • 相关阅读:
    【MongoDB】Re02 文档CRUD
    【Zookeeper】Win平台伪集群搭建
    【HalfLife】 Steam 安装半条命模组
    【Kafka】03 Shell 操作
    【Kafka】02 原生集群部署
    【Hessian】轻量级分布式通信组件
    【MySQL】主从配置
    【Excel】VBA编程 02 访问MySQL数据库
    【MongoDB】Re01 安装与基础操作
    【Oracle】SQL笔记
  • 原文地址:https://www.cnblogs.com/beautiful-code/p/5433085.html
Copyright © 2020-2023  润新知