登录界面

在浏览器中访问Internet上的一些网站时,我们时常遇到某些网页的某些功能需要用户登录才能实现,作为初学Java Web设计的学员,可以试着编写一个简单的登录界面。其中用JSP页面设计网页显示的内容,用JavaScript控制网页提交的信息,用Servlet控制数据库的访问。

 

1.JSP页面应该包括登录页面和登录成功后显示的页面,其中登录页面的代码如下:

<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://

www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<title>欢迎登录</title>

</head>

<body>

<form name="form1" action="loginServlet" method="post" onsubmit="return on_submit(form1)">

         <table align="center">

                   <tr>

                            <td colspan="2" align="center"><font  color="green">欢迎登录</font></td>

                   </tr>

                   <tr>

                            <td>用户名:</td>

                            <td><input name="username" type="text" size="20"></td>

                   </tr>

                   <tr>

                            <td>密&nbsp;&nbsp;码:</td>

                            <td><input type="password" name="userpass" size="20"></td>

                   </tr>

                   <tr>

                            <td align="right"><input type="reset" value="重置"></td>

                            <td align="left"><input type="submit" value="登录"></td>

                   </tr>

                   <%String checkInfo = (String)request.getAttribute("checkInfo");

                            if(checkInfo != null){

                                     out.print("<tr><td colspan='2' align='right'>"+checkInfo+"</td></tr>");

                            }

                   %>

         </table>

</form>

<script type="text/javascript">

         function on_submit(form){

                   if(form.username.value.length == 0){

                            alert("用户名不能为空!");

                            form.username.focus();

                            return false;

                   }

                   if(form.userpass.value.length == 0){

                            alert("密码不能为空!");

                            form.userpass.focus();

                            return false;

                   }

                   if(form.username.value.length < 8){

                            alert("用户名不能小于8位!");

                            form.username.focus();

                            return false;

                   }

                   if(form.username.value.length > 16){

                            alert("用户名不能大于16位!");

                            form.username.focus();

                            return false;

                   }

                   if(form.userpass.value.length < 8){

                            alert("密码不能小于8位!");

                            form.userpass.focus();

                            return false;

                   }

                   if(form.userpass.value.length >16){

                            alert("密码不能大于16位!");

                            form.userpass.focus();

                            return false;

                   }

                   return true;

         }

</script>

</body>

</html>

登录成功后的页面代码如下:

<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/

TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<title>用户首页</title>

</head>

<body>

<p>${current_user.usertype }用户${current_user.username }您好!</p><br>

 

</body>

</html>

 

 

2.在编写连接数据库的Servlet之前,应该设计一个存放用户数据的JavaBeans,代码如下:

public class User {

 

         private String username;//用户名

         private String usertype;//用户类型

        

         public User(){}

         public User(String user){username = user;}

        

         public void setUsername(String data){username = data;}

         public void setUsertype(String data){usertype = data;}

        

         public String getUsername(){return username;}

         public String getUsertype(){return usertype;}

}

 

3.然后编写控制连接数据库并且验证登录信息的Servlet:

import java.io.IOException;

 

import javax.servlet.RequestDispatcher;

import javax.servlet.ServletException;

import javax.servlet.annotation.WebServlet;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import java.sql.*;

/**

 * Servlet implementation class LoginServlet

 */

@WebServlet(urlPatterns={"/loginServlet"}, name="login_servlet")

public class LoginServlet extends HttpServlet {

         private static final long serialVersionUID = 1L;

      

    /**

     * @see HttpServlet#HttpServlet()

     */

    public LoginServlet() {

        super();

        // TODO Auto-generated constructor stub

    }

 

         /**

          * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)

          */

         protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

//               // TODO Auto-generated method stub

//               response.getWriter().append("Served at: ").append(request.getContextPath());

                   String username = request.getParameter("username");

                   String password = request.getParameter("userpass");

                   String checkInfo = null;

                   String sql = "select * from users where 用户名 = '"+username+"'";

                  

                   Connection con = null;

                   Statement st = null;

                   ResultSet rs = null;

                  

                   try {

                            Class.forName("com.hxtt.sql.access.AccessDriver");

                            con = DriverManager.getConnection("jdbc:Access:/C:/Users/acer-pc/Documents/ffasdb.accdb");

                            st = con.createStatement();

                            rs = st.executeQuery(sql);

                            if(rs.next()){

                                     if(rs.getString("密码").equals(password)){

                                               checkInfo = "登录成功!";

                                               javax.servlet.http.HttpSession session = request.getSession();

                                               bean.User cur_user = new bean.User(username);

                                               cur_user.setUsertype(rs.getString("用户类型"));

                                               session.setAttribute("current_user", cur_user);

                                               //session.setAttribute("password", password);

                                               response.sendRedirect("first_page.jsp");

                                     }else{

                                               checkInfo = "密码错误!";

                                               request.setAttribute("checkInfo", checkInfo);

                                               RequestDispatcher rd = request.getRequestDispatcher("login.jsp");

                                               rd.forward(request, response);

                                     }

                            }else{

                                     checkInfo = "用户不存在!";

                                     request.setAttribute("checkInfo", checkInfo);

                                     RequestDispatcher rd = request.getRequestDispatcher("login.jsp");

                                     rd.forward(request, response);

                            }

                            rs.close();

                            st.close();

                            con.close();

                   } catch (ClassNotFoundException | SQLException e) {

                            // TODO Auto-generated catch block

                            e.printStackTrace();

                   }

         }

 

         /**

          * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)

          */

         protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

                   // TODO Auto-generated method stub

                   doGet(request, response);

         }

 

}

 

启动服务器,在浏览器中访问登录页面进行测试,以下是测试结果:

登录时的输入格式控制:



登录界面:


登录成功界面:


密码错误提示:

posted @ 2017-02-24 08:06  悦尔  阅读(211)  评论(0编辑  收藏  举报