本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明
本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用
内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系。
本人互联网技术爱好者,互联网技术发烧友
微博:伊直都在0221
QQ:951226918
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
1.需求和步骤
1)在MySql 数据库中创建users:id ,user,password 。添加记录
2)定义一个login.html ,定义两个字段:user,password 。发送请求到LoginServlet
3)创建一个LoginServlet(继承HttpServlet,重写doPost方法),在其中获取请求的user,password
4) 利用JDBC 从users 中查询有没有和页面输入的user,password 对应的记录。若有,响应hello:xxx,若没有,sorry:xxx ,其中xxx为user
2.代码结构
1)com.jason.testweb.LoginServlet:Servlet类,处理前台提交的数据
1 package com.jason.testweb; 2 3 import java.io.IOException; 4 import java.io.PrintWriter; 5 import java.sql.Connection; 6 import java.sql.PreparedStatement; 7 import java.sql.ResultSet; 8 import java.sql.SQLException; 9 10 import javax.servlet.ServletException; 11 import javax.servlet.http.HttpServlet; 12 import javax.servlet.http.HttpServletRequest; 13 import javax.servlet.http.HttpServletResponse; 14 15 import com.jason.util.JDBCUtil; 16 17 public class LoginServlet extends HttpServlet { 18 19 /** 20 * 21 */ 22 private static final long serialVersionUID = 2197552322420611512L; 23 24 @Override 25 protected void doPost(HttpServletRequest request, 26 HttpServletResponse response) throws ServletException, IOException { 27 28 String userName = request.getParameter("username"); 29 String passWord = request.getParameter("password"); 30 PrintWriter printWriter = response.getWriter(); 31 32 Connection connection = null; 33 PreparedStatement preparedStatement = null; 34 ResultSet resultSet = null; 35 36 try { 37 connection = JDBCUtil.getConnection(); 38 String sql = "SELECT count(id) FROM users WHERE username = ? AND password = ? "; 39 preparedStatement = connection.prepareStatement(sql); 40 preparedStatement.setString(1, userName); 41 preparedStatement.setString(2, passWord); 42 43 resultSet = preparedStatement.executeQuery(); 44 45 if (resultSet.next()) { 46 int count = resultSet.getInt(1); 47 if (count > 0) { 48 printWriter.print("hello : " + userName); 49 } else { 50 printWriter.print("sorry : " + userName); 51 } 52 } 53 54 } catch (Exception e) { 55 e.printStackTrace(); 56 } finally { 57 JDBCUtil.closeAll(connection, preparedStatement, resultSet); 58 } 59 60 } 61 62 }
2)com.jason.testweb.JDBCUtil:JDBU工具类,获取连接,和关闭资源
1 package com.jason.util; 2 3 import java.sql.Connection; 4 import java.sql.DriverManager; 5 import java.sql.PreparedStatement; 6 import java.sql.ResultSet; 7 import java.sql.SQLException; 8 9 public class JDBCUtil { 10 11 // 获取连接 12 public static Connection getConnection() throws Exception { 13 14 String driverClass = "com.mysql.jdbc.Driver"; 15 String JDBCurl = "jdbc:mysql://127.0.0.1:3306/atguigu"; 16 String user = "root"; 17 String password2 = "zhangzhen"; 18 Class.forName(driverClass); 19 return DriverManager.getConnection(JDBCurl, user, password2); 20 } 21 22 // 关闭流 23 public static void closeAll(Connection con, PreparedStatement ps, 24 ResultSet rs) { 25 26 if (rs != null) { 27 try { 28 rs.close(); 29 } catch (SQLException e) { 30 // TODO Auto-generated catch block 31 e.printStackTrace(); 32 } 33 } 34 if (ps != null) { 35 try { 36 ps.close(); 37 } catch (SQLException e) { 38 // TODO Auto-generated catch block 39 e.printStackTrace(); 40 } 41 } 42 if (con != null) { 43 try { 44 con.close(); 45 } catch (SQLException e) { 46 // TODO Auto-generated catch block 47 e.printStackTrace(); 48 } 49 } 50 51 } 52 53 }
3)login.html:显示页面
1 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 2 <html> 3 <head> 4 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 5 <title>this is a test </title> 6 </head> 7 <body> 8 <form action="login" method="post"> 9 10 user:<input type="text" name="username"/> 11 password:<input type="password" name="password"/> 12 13 <input type="submit" value="submit"/> 14 15 </form> 16 </body> 17 </html>
4)web.xml:配置Servlet 和 映射 Servlet
1 <?xml version="1.0" encoding="UTF-8"?> 2 <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 3 xmlns="http://java.sun.com/xml/ns/javaee" 4 xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" 5 id="WebApp_ID" version="3.0"> 6 <!-- 配置和映射servlet --> 7 <servlet> 8 <servlet-name>LoginServlet</servlet-name> 9 <servlet-class>com.jason.testweb.LoginServlet</servlet-class> 10 </servlet> 11 12 <servlet-mapping> 13 <servlet-name>LoginServlet</servlet-name> 14 <url-pattern>/login</url-pattern> <!-- 和提表单提交的 action 一致 --> 15 </servlet-mapping> 16 17 </web-app>
3.总结分析
1)本实验只是模拟了一次完整的由 view -> control -> model
2) 本实验未使用连接池:c3p0
3)缺少模块化设计
时间: 2024-12-26 18:23:01