1 2 项目结构以及数据库表图片


3 4 5 package com.jmi.booklibmanage.service; 6 7 import java.sql.Connection; 8 import java.sql.DriverManager; 9 import java.sql.ResultSet; 10 import java.sql.SQLException; 11 import java.sql.Statement; 12 13 14 15 public class StudentDao { 16 Statement stm; 17 ResultSet rs; 18 Connection conn; 19 public boolean login(String stdno, String passwd){ 20 try { 21 //1加载驱动程序 com.mysql.jdbc.Driver此为MySQL驱动 22 Class.forName("com.mysql.jdbc.Driver"); 23 24 /** 获取数据库连接 25 DriverManager.getConnection(url, user, password) 26 需要传入三个参数:数据URL,登录数据的用户名密码 27 MySQL 数据库的URL写法: jdbc:mysql://hostname:port/databasename 28 本机数据库hostname 为localhost或者127.0.0.1 29 port 一般为3306 30 本项目中的数据库名称(databasename)为 booklib 31 **/ 32 conn=DriverManager.getConnection("jdbc:mysql:" + 33 "//localhost:3306/booklib","root","12345"); 34 String sql="select * from students where stdno='"+stdno+"' and loginpasswd='"+passwd+"'"; 35 36 // 2 通过Connection 对象创建基本的Statement 对象 37 stm=conn.createStatement(); 38 39 //3 使用Statement执行sql 语句,执行后返回代表查询结果的ResultSet对象 40 // Restult 实质是一个查询结果集 41 rs=stm.executeQuery(sql); 42 43 // 4 Result 中的next方法 作用:rs.next()返回一个布尔值 44 // 数据表中有记录则返回true ,没有记录返回false 45 if(rs.next()){ 46 47 //gerXxx()方法获取记录指针指向行,列特定列的值 48 // 方法一 :使用列索引作为参数 49 System.out.print(rs.getString(1)+" "); 50 System.out.print(rs.getString(2)+" "); 51 System.out.println(rs.getString(3)+" "); 52 // 5 方法二 : 使用列名作为参数 53 System.out.print(rs.getString("stdname")+" "); 54 System.out.print(rs.getString("stdno")+" "); 55 System.out.println(rs.getString("loginpasswd")+" "); 56 // 以上是通过Result对象来出去查询结果的两种方法 57 58 return true; 59 } 60 } catch (ClassNotFoundException e) { 61 // TODO Auto-generated catch block 62 e.printStackTrace(); 63 } catch (SQLException e) { 64 // TODO Auto-generated catch block 65 e.printStackTrace(); 66 } 67 68 // 6 回收数据资源,包括关闭ResultSet,Statement和Connection资源等 69 try { 70 rs.close(); 71 } catch (SQLException e) { 72 // TODO Auto-generated catch block 73 e.printStackTrace(); 74 } 75 try { 76 stm.close(); 77 } catch (SQLException e) { 78 // TODO Auto-generated catch block 79 e.printStackTrace(); 80 } 81 try { 82 conn.close(); 83 } catch (SQLException e) { 84 // TODO Auto-generated catch block 85 e.printStackTrace(); 86 } 87 return false; 88 89 } 90 91 // 运行测试下此代码 92 public static void main(String[] args) { 93 // 实例化对象,调用其login方法,传入两个参数
94 // "select * from students where stdno='"+stdno+"' and loginpasswd='"+passwd+"';" 95 96 //如果在数据库中有有则返回结果true; 97 StudentDao stu = new StudentDao (); 98 boolean istrue = stu.login("15140101","123"); 99 System.out.println(istrue); 100 101 } 102 } 103 104//
结果
105 106 107 108 Login.html 页面内容 109 注意以下method为post ,action为std.do 110 111 112 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 113 <html> 114 <head> 115 <title>login.html</title> 116 117 <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> 118 <meta http-equiv="description" content="this is my page"> 119 <meta http-equiv="content-type" content="text/html; charset=UTF-8"> 120 121 <!--<link rel="stylesheet" type="text/css" href="./styles.css">--> 122 123 </head> 124 125 <body> 126 <form action="std.do" method="post"> 127 学号:<input name="stdno" type="text"><br> 128 密码:<input name="passwd" type="text"><br> 129 <input type="submit" value="登录"> 130 </form> 131 </body> 132 </html> 133 134 135 136 以下为web.xml内容 137 <?xml version="1.0" encoding="UTF-8"?> 138 <web-app version="2.5" 139 xmlns="http://java.sun.com/xml/ns/javaee" 140 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 141 xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 142 http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> 143 <servlet> 144 <description>This is the description of my J2EE component</description> 145 <display-name>This is the display name of my J2EE component</display-name> 146 <servlet-name>StdService</servlet-name> 147 <servlet-class>com.jmi.booklibmanage.servlet.StdService</servlet-class> 148 </servlet> 149 150 <servlet-mapping> 151 <servlet-name>StdService</servlet-name> 152 <url-pattern>/std.do</url-pattern> 153 </servlet-mapping> 154 <welcome-file-list> 155 <welcome-file>login.html</welcome-file> 156 </welcome-file-list> 157 </web-app> 158 159 160 在login页面中的action后面所跟内容比 <url-pattern>/</url-pattern>中间内容多出”/” 161

162 163 所以 <url-pattern>/std.do</url-pattern> 164 注意:在一定要在前面加/ 165 166

167 截图中的红色部分内容一致 170 才能根据action中后面内容找到com.jmi.booklibmanage.servlet.StdService这个类(此类为全名即com.jmi.booklibmanage.servlet包下StdService类) 171 172 173 新建一个StdService必须继承HttpServlet类 174 保留一个doPost方法,删除其它用不到的方法: 175 176 package com.jmi.booklibmanage.servlet; 177 178 import java.io.IOException; 179 import java.io.PrintWriter; 180 181 import javax.servlet.ServletException; 182 import javax.servlet.http.HttpServlet; 183 import javax.servlet.http.HttpServletRequest; 184 import javax.servlet.http.HttpServletResponse; 185 186 import com.jmi.booklibmanage.service.StudentDao; 187 188 public class StdService extends HttpServlet { 189 190 /** 191 * The doPost method of the servlet. <br> 192 * 193 * This method is called when a form has its tag value method equals to post. 194 * 195 * @param request the request send by the client to the server 196 * @param response the response send by the server to the client 197 * @throws ServletException if an error occurred 198 * @throws IOException if an error occurred 199 */ 200 public void doPost(HttpServletRequest request, HttpServletResponse response) 201 throws ServletException, IOException { 202 203 response.setContentType("text/html"); 204 PrintWriter out = response.getWriter(); 205 String stdno = request.getParameter("stdno"); 206 // 获得login.html页面中输入的学号 207 //后面 request.getParameter("stdno")中的引号中的内容 208 // 必须与login页面中:<input name="stdno" type="text">中的name的引号里面内容一致 209 //才能获得在login页面中输入的内容 210 String passwd = request.getParameter("passwd"); 211 // 获得login.html页面中输入的密码 212 213 //以下是在Console打印从login.html页面输入的内容 214 System.out.println(stdno); 215 System.out.println(passwd); 216 217 StudentDao u = new StudentDao(); 218 boolean user= u.login(stdno,passwd); 219 // 实例化对象 ,调用login方法,传入参数 220 // 如果返回true则重定向到欢迎页面,如果false重定向到login.html页面 221 if(user){ 222 response.sendRedirect("welocome.html"); 223 }else{ 224 response.sendRedirect("login.html"); 225 } 226 out.flush(); 227 out.close(); 228 229 } 230 }
验证整个项目

