数据库的链接与SQL语句的使用
来源:互联网 发布:单词默写软件 编辑:程序博客网 时间:2024/05/01 14:18
首先我们要有一个注册页面(由于省功夫,注册和登录写在了一个页面中,然而这样并没有影响。。。)
<form name="regist" action="/regist" method="post"> 用户名:<input type="text" name="username"/> 密码:<input type="text" name="password"/> <input type="submit" value="注册"/> </form>
- 这里的action换成了/regist 所以我们要创建另一个servlet–Regist.java
- 接着设置一下请求的编码问题,防止写入到数据库时乱码
req.setCharacterEncoding("utf-8");
创建数据库和注册登录表单
- 创建数据库(编码为utf-8)
->CREATE DATABASE `test` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
- 使用数据库
->use test
- 创建表单login
->CREATE TABLE login ( id int(10) NOT NULL AUTO_INCREMENT, username varchar(10) NOT NULL, password varchar(10) NOT NULL, PRIMARY KEY (id))
这里数据库的操作告一段落,接下来时java链接数据库
* 看现在的目录结构SqlCon.java是专门用于链接数据库的,在tomcat的lib目录中也加入mysql-connector.jar这个jar包。
package Dao;import java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLException;/** * Created by online on 15-9-16. */public class SqlCon { public static Connection getConne(){ Connection con = null; String driver = "com.mysql.jdbc.Driver";//连接数据库所需要的驱动 String url = "jdbc:mysql://localhost:3306/test?"+ "user=root&password=p5385676&useUnicode=true&characterEncoding=UTF8"; //连接的url修改成自己的user和password。其余不变 try { Class.forName(driver);//开始驱动 } catch (ClassNotFoundException e) { e.printStackTrace(); } try { con = DriverManager.getConnection(url);//获取连接 return con;//返回这个连接供接下来的增删改查使用 } catch (SQLException e) { e.printStackTrace(); } return null; } //关闭对数据库的操作 public static void closeAll(ResultSet rs,Statement stmt,Connection con){ try{ if(rs!=null) rs.close(); if (stmt!=null) stmt.close(); if (con!=null) con.close(); } catch (Exception ex) { System.out.println("Error : " + ex.toString()); } }}
- Regist.java
package action;import Dao.AddandSelect;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.io.IOException;import java.sql.SQLException;/** * Created by online on 15-9-16. */@WebServlet(name = "re",urlPatterns = "/regist")public class Regist extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { req.setCharacterEncoding("utf-8"); String username=req.getParameter("username"); String password=req.getParameter("password"); req.getSession().setAttribute("username",username); try { AddandSelect.regist(username,password);//AddandSelect中的regist方法,把用户名和密码写入数据库。 } catch (SQLException e) { e.printStackTrace(); } req.getRequestDispatcher("/index.jsp").forward(req,resp); }}
- 写入数据库和查询信息AddandSelect.java
package Dao;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;/** * Created by online on 15-9-16. */public class AddandSelect { //注册信息写入数据库 public static void regist(String username,String password) throws SQLException { Connection con = null;//创建连接数据库的Connection类 PreparedStatement sta = null;//创建一个PreparedStatement类,用于执行sql语句 ResultSet res = null;//如果是查询语句,查询后返回的时ResultSet try{ con = SqlCon.getConne(); String sql= "insert into login(username,password) values(?,?);"; sta = con.prepareStatement(sql); sta.setString(1,username); sta.setString(2,password); sta.executeUpdate();//执行sql语句,由于是插入语句,所以不需要返回ResultSet。 } catch (SQLException e) { e.printStackTrace(); } SqlCon.closeAll(res,sta,con);//关闭连接 }}
- 运行并输入信息,点击注册,则可以看到数据库中已经添加了该条信息。
数据库的写入已经完成。注册简单完成,接下来时登录。意思就是说,你输入用户名和密码,当你的输入在数据库中有,且用户名和密码匹配,即算登录成功。
- Homework.java
package action;import Dao.AddandSelect;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 javax.servlet.http.HttpSession;import java.io.IOException;import java.sql.SQLException;/** * Created by online on 15-9-11. */@WebServlet(urlPatterns = "/login" ,name = "stuLogin")public class Homework extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { //System.out.println(req.getParameter("username"));//req.getParameter();这个方法就是获取jsp页面form表单传送过来的数据。 //System.out.println(req.getParameter("password"));//这里运行并在页面输入后提交 则会在控制台看到输入内容。 HttpSession session = req.getSession();//创建session对象 String username= (String) req.getParameter("username"); String password= (String) req.getParameter("password"); session.setAttribute("cu",username); try { if (AddandSelect.valiuandp(username,password)){//验证是否匹配到信息匹配到就进入到success.jsp,不匹配就返回登录界面。 req.getRequestDispatcher("/success.jsp").forward(req,resp); }else { req.getRequestDispatcher("/index.jsp").forward(req,resp); } } catch (SQLException e) { e.printStackTrace(); } }}
- AddandSelect.java 中的验证方法
//验证用户名和密码是否匹配 public static boolean valiuandp(String username,String password) throws SQLException { Connection con = null; PreparedStatement sta = null; ResultSet rs = null; int i = 0; try{ con = SqlCon.getConne(); String sql = "select * from login where username=? and password=?;"; sta=con.prepareStatement(sql); sta.setString(1,username); sta.setString(2,password); rs=sta.executeQuery(); } catch (SQLException e) { e.printStackTrace(); }while (rs.next()){ i++; } SqlCon.closeAll(rs,sta,con); if (i>0){ return true; } else { return false; } }
注册(写入到数据库),登录(在数据库中提取)
注册的时候还需要有验证是否有人注册,填信息时是否有漏填的。
下一节讲述完整的验证信息。附简单的验证码添加到网页中进行验证(防止暴力登录)
0 0
- 数据库的链接与SQL语句的使用
- 两种链接Sql数据库的语句
- 数据库---常见约束的SQL语句的研究与使用
- 初学者Oracle数据库:sql语句的基本使用与示例
- VC与数据库SQL的链接
- C#与SQL数据库的链接
- 数据库,包括sql语句的使用总结
- 运行数据库正在使用的sql语句
- 数据库中查询语句的使用(sql)
- 数据库SQL之DDL语句的使用
- 数据库SQL之DML语句的使用
- django 表单与数据库的链接使用
- 使用sql语句建立与删除链接服务器及执行数据库操作
- SQL数据库与ACCESS数据中SQL语句的区别
- SQL语句优化与索引的使用
- jsp与sql语句的混合使用
- 设计自己的数据库:Powerdesigner的使用,与导出sql语句
- Sql链接数据库的用法
- Magnificent Meatballs - 1247
- Linux学习8_.deb文件和.rpm文件的区别
- Android Textview 阴影效果
- 点击空白隐藏键盘
- oracle 数据库状态查询
- 数据库的链接与SQL语句的使用
- 如何把MATLAB仿真图的背景色设成白色
- 邻近匹配中的多值字段查询
- Oracle自增ID实现
- Android下拉刷新完全解析
- 桌面上嵌入窗口(桌面日历)原理探索# 欢迎使用Markdown编辑器写博客
- python 连接 MySQL 数据库
- 插入排序
- jQuery对象和DOM对象之间的相互转换