您的位置:首页 > 编程语言

Servlet处理登陆响应参考代码

2017-08-22 21:18 246 查看

原博客来自:http://www.cnblogs.com/inghzhang/p/3970400.html


看到的代码留有备用方便使用:


Css样式下载网站:http://sc.chinaz.com/tag_moban/htmlMoBan.html



Login.html代码:


<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title>登录界面</title>
    <script src="js/jquery-1.11.1.js"></script>
    <script src="js/login.js"></script>
    <link href="css/style.css" rel="stylesheet" type="text/css" />
</head>
<body>
    <div id="loginpanelwrap">
        <div class="loginheader">
            <div class="logintitle">登录</div>
        </div>
        <form action = "/UserLogin/Sample1/loginServlet">
            <div class="loginform">
                <div class="loginform_row">
                    <label>用户名:</label>
                    <input type="text" class="loginform_input" name="username" />
                </div>
                <div class="loginform_row">
                    <label>密码:</label>
                    <input type="password" class="loginform_input" name="password" />
                </div>
                <div class = "loginform_row">
                    <label>验证码:</label>
                    <input type = "text" class="loginform_input_validationCode" name = "validationCode"/>
                    <img class = "validationCode_img" src="/UserLogin/Sample1/validationCode">
                </div>
                <div class="loginform_row">
                    <span class = "returnInfo"></span>
                    <input type="submit" class="loginform_submit" value="登录" />
                </div>
                <div class="clear"></div>
            </div>
        </form>
    </div>
</body>
</html>


JQuery代码:login.js


 
$(function(){
   $(".loginform_submit").click(function(){
       if(checkInput()) {
           $("form").action("/loginServlet");
       }else{
           return false;
       }
   });
   $(".validationCode_img").click(function(){
       $(".validationCode_img").attr("src","/UserLogin/Sample1/validationCode?"+Math.random());
   });
    function checkInput(){
        //判断用户名
        if($("input[name=username]").val() == null || $("input[name=username]").val() == ""){
            alert("用户名不能为空");
            $("input[name=username]").focus();
            return false;
        }
        //判断密码
        if($("input[name=password]").val() == null || $("input[name=password]").val() == ""){
            alert("密码不能为空");
            $("input[name=password]").focus();
            return false;
        }
        //判断验证码
        if($("input[name=validationCode]").val() == null || $("input[name=validationCode]").val() == ""){
            alert("验证码不能为空");
            $("input[name=validationCode]").focus();
            return false;
        }
        return true;
    }
});


生成验证码的Servlet:ValidationCode.java


package zh.userlogin.sample;
import javax.imageio.ImageIO;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.io.OutputStream;
import java.util.Random;
/**
* Created by zhang on 2014/9/13.
*/
public class ValidationCode extends HttpServlet{
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //获得验证码集合的长度
        int charsLength = codeChars.length();
        //下面3条记录是关闭客户端浏览器的缓冲区
        //这3条语句都可以关闭浏览器的缓冲区,但是由于浏览器的版本不同,对这3条语句的支持也不同
        //因此,为了保险起见,同时使用这3条语句来关闭浏览器的缓冲区
        resp.setHeader("ragma", "No-cache");
        resp.setHeader("Cache-Control", "no-cache");
        resp.setDateHeader("Expires", 0);
        //设置图形验证码的长和宽
        int width = 90, height = 30;
        BufferedImage image = new BufferedImage(width,height,BufferedImage.TYPE_INT_RGB);
        Graphics g = image.getGraphics(); //获得用于输出文字的Graphics对象
        Random random = new Random();
        g.setColor(getRandomColor(180, 250));
        g.fillRect(0, 0, width, height);
        g.setFont(new Font("Times New Roman",Font.ITALIC,height));
        g.setColor(getRandomColor(120, 180));
        //用户保存最后随机生成的验证码
        StringBuilder validationCode = new StringBuilder();
        //验证码的随机字体
        String[] fontNames = {"Times New Roman","Book antiqua","Arial"};
        //随机生成4个验证码
        for(int i = 0; i < 4; i++){
            //随机设置当前验证码的字符的字体
            g.setFont(new Font(fontNames[random.nextInt(3)],Font.ITALIC,height));
            //随机获得当前验证码的字符
            char codeChar = codeChars.charAt(random.nextInt(charsLength));
            validationCode.append(codeChar);
            //随机设置当前验证码字符的颜色
            g.setColor(getRandomColor(10, 100));
            //在图形上输出验证码字符,x和y都是随机生成的
            g.drawString(String.valueOf(codeChar), 16*i + random.nextInt(7), height-random.nextInt(6));
        }
        //获得HttpSession对象
        HttpSession session = req.getSession();
        //设置session对象5分钟失效
        session.setMaxInactiveInterval(5*60);
        //将验证码保存在session对象中,key为validation_code
        session.setAttribute("validation_code", validationCode.toString());
        //关闭Graphics对象
        g.dispose();
        OutputStream outS = resp.getOutputStream();
        ImageIO.write(image, "JPEG", outS);
    }
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doGet(req,resp);
    }
    //图形验证码的字符集,系统将随机从这个字符串中选择一些字符作为验证码
    private static String codeChars = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
    //返回一个随机颜色
    private static Color getRandomColor(int minColor, int maxColor){
        Random random = new Random();
        if(minColor > 255){
            minColor = 255;
        }
        if(maxColor > 255){
            maxColor = 255;
        }
        //获得r的随机颜色值
        int red = minColor + random.nextInt(maxColor-minColor);
        //g
        int green = minColor + random.nextInt(maxColor-minColor);
        //b
        int blue = minColor + random.nextInt(maxColor-minColor);
        return new Color(red,green,blue);
    }
}


操作数据库的代码:ManageSQLServer2008.java(本人使用的数据库为SQLServer 2008)


package zh.userlogin.sample.dbmanager;
import java.beans.Statement;
import java.sql.*;
public class ManageSQLServer2008 {
    //数据库的驱动名
    private final String dbDriver = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
    //数据库的url地址
    private final String url = "jdbc:sqlserver://localhost:1433;databaseName=zhDemo";
    private final String userName = "sa";
    private final String password = "123";
    private Connection conn = null;
    public ManageSQLServer2008(){
        //加载数据库驱动
        try {
            Class.forName(dbDriver).newInstance();
            //System.out.println("加载驱动成功");
        } catch (Exception e) {
            e.printStackTrace();
            System.err.println("数据库驱动加载失败");
        }
        //获取数据库链接
        try {
            conn = DriverManager.getConnection(url,userName,password);
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            System.err.println("获取数据库链接失败");
        }
    }
    //执行各种SQL语句的方法
    private ResultSet execSQL(String sql,Object... args) throws SQLException{
        //建立PreparedStatement对象
        PreparedStatement pStmt = conn.prepareStatement(sql);
        //为pStmt对象设置SQL参数值
        for(int i = 0; i < args.length; i++){
            pStmt.setObject(i+1, args[i]);
        }
        //执行SQL语句
        pStmt.execute();
        //返回结果集,如果执行的SQL语句不返回结果集,则返回null
        return pStmt.getResultSet();
    }
    private void closeSQLConn(){
        //关闭数据库链接
        if(conn != null){
            try {
                conn.close();
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    }
    public String checkUser(String username,String password){
        boolean has_username = false;
        boolean password_correct = false;
        ResultSet rs = null;
        try {
            rs = execSQL("select * from zh_users");
        } catch (SQLException e) {
            System.err.println("查询数据库出错");
            e.printStackTrace();
            return null;
        }
        try {
            while(rs.next()){
                String temp_username = rs.getString("user_name").trim();
                String temp_password = rs.getString("password_md5").trim();
                if(username.equals(temp_username)){
                    has_username = true;
                    if(password.equals(temp_password)){
                        password_correct = true;
                        return "hasUserNameAndPasswordCorrect";
                    }
                    return "hasUserNameButPasswordInCorrect";
                }
            }
        } catch (SQLException e) {
            System.err.println("操作ResultSet出错");
            e.printStackTrace();
        }
        return "hasNoUserName";
    }
}


用于处理用户登录的Servlet:LoginServlet.java


package zh.userlogin.sample;
import zh.userlogin.sample.dbmanager.ManageSQLServer2008;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
import java.io.OutputStream;
/**
* Created by zhang on 2014/9/13.
*/
public class LoginServlet extends HttpServlet{
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        OutputStream out = resp.getOutputStream();
        String username = req.getParameter("username");
        String password = req.getParameter("password");
        String validationCode = req.getParameter("validationCode");
        HttpSession session = req.getSession();
        String validation_code = (String)session.getAttribute("validation_code");
        if(validationCode.equalsIgnoreCase(validation_code)){
            System.out.println("验证码正确");
        }else{
            System.out.println("验证码错误");
        }
        ManageSQLServer2008 mss = new ManageSQLServer2008();
        String result = mss.checkUser(username,password);
        if (result.equals("hasUserNameAndPasswordCorrect")) {
            System.out.println("用户名和密码均正确");
        } else if (result.equals("hasUserNameButPasswordInCorrect")) {
            System.out.println("用户名正确,密码不正确");
        } else if (result.equals("hasNoUserName")) {
            System.out.println("没有此用户");
        }
        //转发到result.jsp
        RequestDispatcher rd = req.getRequestDispatcher("Login.html");
        rd.forward(req, resp);
    }
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doGet(req,resp);
    }
}


web.xml文件的配置:


<servlet>
        <servlet-name>loginServlet</servlet-name>
        <servlet-class>zh.userlogin.sample.LoginServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>loginServlet</servlet-name>
        <url-pattern>/loginServlet</url-pattern>
    </servlet-mapping>
    <servlet>
        <servlet-name>validationCode</servlet-name>
        <servlet-class>zh.userlogin.sample.ValidationCode</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>validationCode</servlet-name>
        <url-pattern>/validationCode</url-pattern>
</servlet-mapping>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐