码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2016-04-26 00:20:14      阅读:192      评论:0      收藏:0      [点我收藏+]

标签:

在地址栏直接输入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);        
        
    }    
    
    
}

 



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

标签:

原文地址:http://www.cnblogs.com/litao0505/p/5433085.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!