IdentityServlet

来源:互联网 发布:3d免费犀牛怎么编程 编辑:程序博客网 时间:2024/06/04 00:31
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Random;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * @author xl
 *
 */
public class IdentityServlet extends HttpServlet
{

    private static final long serialVersionUID = 1L;

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException
    {
        // TODO Auto-generated method stub
        
        String username = "";
        String password = "";
        String type = "";
        String code = "";
        System.out.println("123");
        // 定义一个验证码数组
        String[] source = { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9",
                "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L",
                "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X",
                "Y", "Z","a","b","c", "d", "e", "f", "g", "h", "i", "j", "k", "l",
                "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x",
                "y", "z" };

        type = new String(req.getParameter("Type").getBytes("ISO-8859-1"),
                "UTF-8");
        username = new String(req.getParameter("UserName").getBytes(
                "ISO-8859-1"), "UTF-8");
        password = new String(req.getParameter("Password").getBytes(
                "ISO-8859-1"), "UTF-8");

        try
        {
            Class.forName("org.gjt.mm.mysql.Driver").newInstance();
            Connection C = DriverManager
                    .getConnection("jdbc:mysql://localhost/identity?user=root&password=123&useUnicode=true&characterEncoding=UTF-8");
            Statement state = C.createStatement(
                    ResultSet.TYPE_SCROLL_INSENSITIVE,
                    ResultSet.CONCUR_READ_ONLY);
            resp.setContentType("text/html;charset=UTF-8");
            PrintWriter out = resp.getWriter();

            if (type.equals("Register"))
            {
                // 创建指针可以自由移动的结果集
                Statement statement = C.createStatement(
                        ResultSet.TYPE_SCROLL_SENSITIVE,
                        ResultSet.CONCUR_UPDATABLE);

                ResultSet resultSet = statement
                        .executeQuery("select * from identity_tb where username="
                                + username+";");

                int resultCount = 0;
                // 用如下方法获取结果集的行数其中resultSet.last()就是将指针移动到结果集的最后一条记录;
                // 然后用resultSet.getRow()获取指针当前所在的行号(从1开始)
                resultSet.last();
                resultCount = resultSet.getRow();

                if (resultCount > 0)
                {
                    out.print("failed");
                } else
                {
                String sql = "insert into identity_tb (username,password)values(?,?);";
                    PreparedStatement pstmt = C.prepareStatement(sql);// 解决插入异常问题
                    pstmt.setString(1, username);
                    pstmt.setString(2, password);
                    pstmt.executeUpdate();
                    out.print("success");
                }

            } else if (type.equals("Login"))
            {
                // 创建指针可以自由移动的结果集
                Statement statement = C.createStatement(
                        ResultSet.TYPE_SCROLL_SENSITIVE,
                        ResultSet.CONCUR_UPDATABLE);

                ResultSet resultSet = statement
                        .executeQuery("select * from identity_tb where username="
                                + username
                                + " and"
                                + " password="                                
                                + password +";");
                int resultCount = 0;
                // 用如下方法获取结果集的行数其中resultSet.last()就是将指针移动到结果集的最后一条记录;
                // 然后用resultSet.getRow()获取指针当前所在的行号(从1开始)
                resultSet.last();
                resultCount = resultSet.getRow();
                
                if (resultCount > 0)
                {
                out.print("success");
                
                } else
                {
                        out.print("failed");
                    
                }
            } else if (type.equals("Picture"))
            {
                Random rd = new Random();
                for (int i = 0; i < 6; i++)
                {
                    code += source[rd.nextInt(source.length)];
                }
                out.print(code);
            }

        } catch (InstantiationException e)
        {
            e.printStackTrace();
        } catch (IllegalAccessException e)
        {
            e.printStackTrace();
        } catch (ClassNotFoundException e)
        {
            e.printStackTrace();
        } catch (SQLException e)
        {
            e.printStackTrace();
        }

    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException
    {
        super.doPost(req, resp);
    }

    @Override
    protected void service(HttpServletRequest arg0, HttpServletResponse arg1)
            throws ServletException, IOException
    {
        super.service(arg0, arg1);
    }

    @Override
    public void init() throws ServletException
    {
        super.init();
    }

}