国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

一個處理用戶登陸的servlet簡單實例

2019-11-26 15:19:53
字體:
供稿:網(wǎng)友

本文實例講述了一個處理用戶登陸的servlet實現(xiàn)方法。分享給大家供大家參考。具體分析如下:

Login.java代碼如下:

復制代碼 代碼如下:

package com.bai;

import javax.servlet.http.*;

import java.io.*;

public class Login extends HttpServlet{
    public void doGet(HttpServletRequest req,HttpServletResponse res){
        try{req.setCharacterEncoding("gb2312");
        res.setContentType("text/html;charset=gb2312");
            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=passwd><br>");
            pw.println("<input type=submit value=login><br>");
            pw.println("</form>");
            pw.println("</body>");
            pw.println("</html>");
        }
        catch(Exception e){
            e.printStackTrace();
        }
    }
   
    public void doPost(HttpServletRequest req,HttpServletResponse res){
        this.doGet(req,res);
    }
}

LoginCl.java代碼如下:

復制代碼 代碼如下:

package com.bai;

import javax.servlet.http.*;

import java.io.*;
import java.sql.*;

public class LoginCl extends HttpServlet{
    public void doGet(HttpServletRequest req,HttpServletResponse res){
       
        Connection conn=null;
        Statement stmt=null;
        ResultSet rs=null;
        String sql = "select username,passwd from users where username = ? and passwd = ?";
        try{//req.setCharacterEncoding("gb2312");
            String user=req.getParameter("username");
            String password=req.getParameter("passwd");
           
            Class.forName("com.mysql.jdbc.Driver");
            conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/sqdb","root","root");
//            stmt=conn.createStatement();
            PreparedStatement pstmt = conn.prepareStatement(sql);
            pstmt.setString(1, user);
            pstmt.setString(2, password);
            rs = pstmt.executeQuery();
//            rs=stmt.executeQuery("select top 1 * from users where username='"+user
//                +"' and passwd='"+password+"'");
            if(rs.next())
            {
                HttpSession hs=req.getSession(true);
                hs.setMaxInactiveInterval(60);
                hs.setAttribute("name",user);
                res.sendRedirect("welcome?&uname="+user+"&upass="+password);
            }
            else{
                res.sendRedirect("login"); //url
            }
           
        }
        catch(Exception e){
            e.printStackTrace();
        }finally{
            try{
                if(rs!=null){
                rs.close();
                }
                if(stmt!=null){
                    stmt.close();
                }
                if(conn!=null){
                    conn.close();
                }   
            }catch(Exception e){
                e.printStackTrace();
            }       
        }
    }
   
    public void doPost(HttpServletRequest req,HttpServletResponse res){
        this.doGet(req,res);
    }
}

其實上面這個處理用戶名密碼帶有明顯注入漏洞,可以根據(jù)用戶名從數(shù)據(jù)庫取密碼,用取出的密碼和用戶輸入的密碼比較

復制代碼 代碼如下:

sql=select passwd from users where username = ?  limit 1

if(rs.next())
{
    String passwd=rs.getString(1);
    if(passwd.equals(password))
            //密碼正確
    else //密碼錯誤
}

Welcome.java代碼如下:

復制代碼 代碼如下:

package com.bai;

import javax.servlet.http.*;

import java.io.*;

public class Welcome extends HttpServlet{
    public void doGet(HttpServletRequest req,HttpServletResponse res){
       
        HttpSession hs=req.getSession();
        String val=(String)hs.getAttribute("pass");
       
        if(val==null){
            try{
                System.out.print(1);
                res.sendRedirect("login");
            }catch(Exception e){
                e.printStackTrace();
            }
           
        }       
           
        String u=req.getParameter("uname");
        String p=req.getParameter("upass");
       
        try{//req.setCharacterEncoding("gb2312");
            PrintWriter pw=res.getWriter();
            pw.println("welcome! "+u+"&pass="+p);
        }
        catch(Exception e){
            e.printStackTrace();
        }
    }
   
    public void doPost(HttpServletRequest req,HttpServletResponse res){
        this.doGet(req,res);
    }
}

希望本文所述對大家的Java程序設(shè)計有所幫助。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 陆河县| 微山县| 克拉玛依市| 承德市| 金华市| 长葛市| 澄城县| 县级市| 昌吉市| 宜阳县| 且末县| 托里县| 嵊州市| 福安市| 英山县| 大渡口区| 壤塘县| 荔波县| 贵港市| 上杭县| 武邑县| 临湘市| 杭锦后旗| 关岭| 双牌县| 宜宾县| 西畴县| 新巴尔虎左旗| 万年县| 牟定县| 会宁县| 兰西县| 阳朔县| 乳源| 沾益县| 上饶县| 浑源县| 夏津县| 彰化县| 双鸭山市| 南昌市|