需要连接数据库,进行客户端与服务器进行信息交互。
在开始写登陆功能时,也遇到了许多问题,如连接不上数据库,连接上数据库了却又读取不了数据库中的信息。
在开始写登陆功能是在jsp页面中写的,后来才知道这样写本不好,虽然很简单,但如果项目越做越大,你就会发现在jsp页面
中写代码,会有许多的重复的代码。所以可以把那些重复的代码写到java代码中,在jsp页面中调用就可以了。
其次是页面的美化:
开始时登陆页面:
后来是登陆页面:
区别就是在login.jsp中添加了HTML+CSS样式,假如你想让你的页面变得漂亮一些,炫一些,
可以学一下HTML+CSS,和js脚本。或者在网上找些写好的样式借鉴一下也是可以的,嘻嘻。
具体代码:
1.login.jsp
<span style="font-size:18px;"><%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title>登录页面</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <script type="text/javascript"> function chkData() { if(document.frm.uname.value=="") { alert("请输入用户名。"); document.frm.uname.focus(); return false; } else if(document.frm.upass.value=="") { alert("请输入密码信息。"); document.frm.upass.focus(); return false; } else { return true; } } </script> </head> <body background="images/tupian.jpg"> <center> <p ><font size="+6" face="华文行楷" color="#000000">------登陆功能------</font></p> <form name="frm" method="post" action="doLogin.jsp"> <table border="15" width="45%" height="200"> <tr> <td><font size="+3" face="华文行楷" >用户名:</font></td> <td> <input type="text" name="uname"/> </td> </tr> <tr> <td><font size="+3" face="华文行楷" >密 码:</font></td> <td> <input type="password" name="upass"/> </td> </tr> <tr> <td colspan="2" align="center"> <input type="submit" value="登 录" onclick="return chkData();"/> <input type="reset" value="重 置"/> <input type="button" value="注 册" onclick="javascript:window.location.href='g_zhuce.jsp'"> </td> </tr> </table> </form> </center> </body> </html> </span>
2.操作页面
假如登陆成功跳转到index.jsp页面,失败跳转到error.jsp页面
doLogin.jsp
<%@ page language="java" import="java.util.*" pageEncoding="gbk"%> <%@page import="java.sql.*"%> <%@page import="gxs.bzu.com.JDBC.*"%> <% request.setCharacterEncoding("gbk"); String uname=request.getParameter("uname"); String upass=request.getParameter("upass"); Login login =new Login(); boolean flag = login.get_UserAndPassword(uname, upass); out.print(flag); if(flag) { response.sendRedirect("index.jsp"); }else response.sendRedirect("error.jsp"); %>
Login.java
import java.sql.*; import java.util.*; public class Login { public boolean get_UserAndPassword(String name, String pass) { Connection conn = null; PreparedStatement pstmt = null; ResultSet rs = null; boolean flag=false; try { // 1.注册驱动,前提必须加载驱动包 Class.forName("com.mysql.jdbc.Driver"); } catch (ClassNotFoundException e) { System.out.println("未发现驱动"); } try { conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/news", "root", "123456"); String sql = "select * from userinfo where uname=? and upass=?"; pstmt = conn.prepareStatement(sql);//预编译SQL语句 pstmt.setString(1,name); pstmt.setString(2,pass); rs=pstmt.executeQuery(); if(rs.next()){ flag=true; } } catch (SQLException e) { e.printStackTrace(); } finally { try { if (rs != null) rs.close(); if (pstmt != null) pstmt.close(); if (conn != null) conn.close(); } catch (SQLException e) { e.printStackTrace(); } } return flag; } }