登录功能的实现

来源:互联网 发布:整顿网络 英语 编辑:程序博客网 时间:2024/05/21 18:34

登录功能是网页中一个常用的功能,今天尝试着实现了一下,就记录下遇到的问题和解决的办法,以便日后的复习。
实现这个功能需要jsp、jdbc、servlet、xml、MySQL数据库。

1、 先编写jsp
jsp里面需要一个表格,点击“登陆”就根据“action”配置的url跳转到相应的路径。
这里写图片描述
有几个点:
1)、
a、编写jsp页面,为了防止路径重叠,首先要去掉自动配置的url前面的/servlet。然后让action的值和url-pattern的值一致。
b、 为了防止密码泄露,必须将method的值设为post;如果不设置,系统默认为get。
<form action="Login" name="login" method="post">
<url-pattern>/servlet/Login</url-pattern>
c、表单中的单选框,每一个的属性name都要一样,而且还要有不一样的id,才能确保单选。
2)、
编写servlet。

//获取表单的内容        String id=request.getParameter("id");        String pword = request.getParameter("pword");        String position = request.getParameter("position");        //调用数据库        DBUtil util = new DBUtil();        if(util.find(id, pword))        {            response.setContentType("text/html");            PrintWriter out = response.getWriter();            out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");            out.println("<HTML>");            out.println("  <HEAD><TITLE>A Servlet</TITLE></HEAD>");            out.println("  <BODY>");            out.println("welcome here"+util.name+"!");            out.println("  </BODY>");            out.println("</HTML>");            out.flush();            out.close();        }        else        {            request.setAttribute("error", "您输入的账号或密码错误!");            request.getRequestDispatcher("/login.jsp").forward(request,response);        }

当登录失败时,request调用setAttribute(String s,Object o)方法,共享错误信息,并在jsp页面显示出来。
request.setAttribute("error","您输入的账号或密码错误!请重新输入。");

<span>${error}</span>

3)、
jdbc访问数据库。
调用getParameter()方法从表格中获取账号密码,传值,执行数据库查询并把结果集赋予ResultSet;通过while循环遍历数据库表格,如果账号密码和在表单获取的一致,就登录成功。

public boolean find(String id,String pword)    {        try        {            Connection conn=getConnection();            String sql = "select id,name,password from client";            PreparedStatement ps = conn.prepareStatement(sql);            ResultSet rs = ps.executeQuery();            while(rs.next())            {                this.id =rs.getString(1);                this.name = rs.getString(2);                this.pword = rs.getString(3);                if(this.id.equals(id)&&this.pword.equals(pword))                {                    return true;                }            }        }        catch(Exception e)        {            e.printStackTrace();        }        return false;    }
0 0
原创粉丝点击