zoukankan      html  css  js  c++  java
  • 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);        
            
        }    
        
        
    }


  • 相关阅读:
    Vue 封装axios(四种请求)及相关介绍
    简单的按钮样式,两个连在一起的按钮
    http接口访问正常,https访问报错,基础连接已经关闭: 发送时发生错误.
    单点登录思路,多台服务器共用一个数据库,登录信息解决方案
    Wait()在过滤器中卡住 ,在异步代码上阻塞时的常见死锁问题
    接口对接,接口通过原有代码无法访问,解决办法,用postman解决
    svg基础标签说明
    server 2016部署网络负载平衡(NLB)
    写 JS 逻辑判断,不要只知道用 if-else 和 switch
    .NetCore部署IIS出错原因未安装ASP.N.NetCore部署IIS出错原因未安装ASP.NET Core Module v2ET Core Module v2
  • 原文地址:https://www.cnblogs.com/beautiful-code/p/5433085.html
Copyright © 2011-2022 走看看