一.改造登录案例
1.概述
现在的写法中,出现了SQL注入攻击的现象
原因是:用户输入了非法字符#,#在SQL语句里是注释的意识,改变了SQL语义
是Statement的传输器功能不够强大.要用PreparedStatement替换
Statement:不安全,低效,SQL拼接复杂
PreparedStatement:安全,高效,不需要SQL拼接直接用?作为占位符,再给?设置值--框架也在用
2.改造
package cn.tedu.test;
import java.sql.*;
import java.util.Scanner;
//测试用户表
public class Test2 {
public static void main(String[] args) throws Exception {
// method();//查询所有用户信息
method2();//根据用户名和密码查询,用户信息,查到了才能登录
}
//模拟用户登录:利用JDBC,根据用户名和密码查询用户信息
private static void method2() throws Exception{
//注册驱动
Class.forName("com.mysql.jdbc.Driver");
//获取数据库的连接
String url="jdbc:mysql://localhost:3306/cgb2106?characterEncoding=utf8" ;
Connection c = DriverManager.getConnection(url,"root","root");
String a = new Scanner(System.in).nextLine();
String b = new Scanner(System.in).nextLine();
//获取传输器
// Statement s = c.createStatement();//缺点:不安全,低
String sql = "select * from user where name=? and password=?";
//SQL骨架,?叫占位符
PreparedStatement ps = c.prepareStatement(sql);
//设置参数
ps.setString(1,a);//给第一个?设置a的值
ps.setString(2,b);//给第二个?设置b的值
//执行SQL
ResultSet r = ps.executeQuery();
//处理结果集
if( r.next() ){//next()用来判断有没有数据,查到了返回true
System.out.println("恭喜您,登录成功!");
}else{
System.out.println("用户名或者密码输入错误!");
}
//释放资源
r.close();
ps.close();
c.close();
}
//利用JDBC,查询所有用户信息
private static void method() throws Exception {
//注册驱动
Class.forName("com.mysql.jdbc.Driver");
//获取数据库的连接
String url="jdbc:mysql://localhost:3306/cgb2106?characterEncoding=utf8" ;
Connection c = DriverManager.getConnection(url,"root","root");
//获取传输器
Statement s = c.createStatement();
//执行SQL
ResultSet r = s.executeQuery("select * from user");
//处理结果集
while( r.next() ){//如果有数据就返回true
String id = r.getString(1);//获取数据
String name = r.getString(2);//获取数据
String pwd = r.getString(3);//获取数据
System.out.println(id+name+pwd);
}
//释放资源
r.close();
s.close();
c.close();
}
}
二.HTML
1.概述
专门用来制作网页的技术,是超文本标记语言
超文本:比文本功能要强大,网页中可以插入 图片 音频 视频等...
标记:也叫标签,用<???>,不同的标签有不同的功能
2.入门案例
<!doctype html>
<html>
<head></head>
<body>
he llo html~
hello html~
hello html~ <br>
hello html~
hello html~
hello html~
</body>
</html>
3.使用Hbuilder
新建项目-选中项目-新建-XX.html文件
三.常用标签
1.概述
使用不同的标签,实现在网页中插入不同类型的元素
2.常用标签
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<!-- 6.输入框 -->
<input type="text"/>
<input type="password" placeholder="手机号"/>
<input type="week"/>
<input type="date"/>
<input type="datetime"/>
<input type="number"/>
<input type="email"/>
<input type="radio"/> 男
<input type="checkbox"/> 杨幂
<input type="button" value="点我"/>
<!-- 5.超链接标签a
href指定跳转到哪个网址
target是以什么方式打开(默认是_self当前窗口打开),_blank是新窗口打开
-->
<a href="https://www.baidu.com/" target="_blank">百度一下</a>
<a href="https://www.baidu.com/s?cl=3&tn=baidutop10&fr=top1000&wd=31%E7%9C%81%E5%8C%BA%E5%B8%82%E6%96%B0%E5%A2%9E%E6%9C%AC%E5%9C%9F%E7%A1%AE%E8%AF%8A55%E4%BE%8B&rsv_idx=2&rsv_dl=fyb_n_homepage&hisfilter=1" target="_blank">31省区市新增本土确诊55例</a>
<a name="top">我是顶部</a>
<h2>广东富婆通讯录</h2>
<h2>广东富婆通讯录</h2>
<h2>广东富婆通讯录</h2>
<h2>广东富婆通讯录</h2>
<h2>广东富婆通讯录</h2>
<!-- 锚定: 回到一个固定位置 -->
<a href="#top">点我回到顶部</a>
<!-- 1.标题标签: 在网页中 插入标题 h1大~h6小-->
<h1>风雨有我在 人民请放心</h1>
<h2>风雨有我在 人民请放心</h2>
<h3>风雨有我在 人民请放心</h3>
<h4>风雨有我在 人民请放心</h4>
<h5>风雨有我在 人民请放心</h5>
<h6>风雨有我在 人民请放心</h6>
<!-- 2.列表标签: ul(unorderlist)+li 无序列表-->
<ul>
<li>北京严控中高风险地区人员进京</li>
<li>北京严控中高风险地区人员进京</li>
</ul>
<!-- 3.列表标签: ol(orderlist)+li 有序列表-->
<ol>
<li>北京严控中高风险地区人员进京</li>
<li>北京严控中高风险地区人员进京</li>
</ol>
<!-- 4.图片标签img : 通过src属性指定图片的位置
width:修饰了图片的宽度 height:修饰了图片的高度(单位是像素)
-->
<img src="a.png" width="150px" height="50px"/>
<img src="a.png" width="150px" height="50px"/>
</body>
</html>
3.表格标签
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>测试 表格标签</title>
</head>
<body>
<!-- 练习表格: th标签比td多了元素加粗的效果
colspan用来合并列 rowspan用来合并行
-->
<table border="1px">
<tr>
<th>总页面流量</th>
<th>共计来访</th>
<th>会员</th>
<th>游客</th>
</tr>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
<td>4</td>
</tr>
<tr>
<td>1</td>
<td colspan="3">2</td>
</tr>
</table>
<!-- 1. table向网页中插入表格
tr表示表格里的行元素,td表示行里的列元素
width / height 宽度/高度 border边框 bgcolor是背景颜色 cellspacing单元格间距
合并列 colspan 合并行 rowspan
-->
<table width="300px" height="50px"
border="3px" bgcolor="pink" cellspacing="0px">
<tr>
<td colspan="2">11</td>
<td>13</td>
</tr>
<tr>
<td>21</td>
<td>22</td>
<td rowspan="2">23</td>
</tr>
<tr>
<td>31</td>
<td>32</td>
</tr>
</table>
</body>
</html>
4.表单标签form
本质就是一个表格,表单比表格多了数据提交功能
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>测试 表单标签</title>
</head>
<body>
<!-- 创建表单,
下拉框:select(下拉) + option(选项)
文件上传: <input type="file"/>
文本域:<textarea></textarea>
-->
<h1>注册表单</h1>
<form>
<table border="1px" cellspacing="0px" bgcolor="lightgray">
<tr>
<td>用户名:</td>
<td>
<input type="text" />
</td>
</tr>
<tr>
<td>密码:</td>
<td>
<input type="password" />
</td>
</tr>
<tr>
<td>确认密码:</td>
<td>
<input type="password" />
</td>
</tr>
<tr>
<td>昵称:</td>
<td>
<input type="text" />
</td>
</tr>
<tr>
<td>邮箱:</td>
<td>
<input type="email" />
</td>
</tr>
<tr>
<td>性别:</td>
<td>
<input type="radio" />男
<input type="radio" />女
</td>
</tr>
<tr>
<td>爱好:</td>
<td>
<input type="checkbox" />篮球
<input type="checkbox" />足球
<input type="checkbox" />乒乓球
</td>
</tr>
<tr>
<td>城市:</td>
<td>
<select>
<option>北京</option>
<option>上海</option>
<option>广州</option>
<option>深圳</option>
</select>
</td>
</tr>
<tr>
<td>头像:</td>
<td>
<input type="file" />
</td>
</tr>
<tr>
<td>验证码:</td>
<td>
<input type="text" />
<img src="a.png" />
<input type="button" value="点我换一张" />
</td>
</tr>
<tr>
<td>自我描述:</td>
<td>
<textarea>描述信息...</textarea>
</td>
</tr>
<tr>
<td colspan="2">
<input type="button" value="提交"/>
<input type="button" value="重置"/>
</td>
</tr>
</table>
</form>
</body>
</html>
5.无法提交的问题
步骤:
1.把提交的按钮必须改成submit类型
2.给标签加name属性
3.当提交数据时,会把用户输入的信息jack提交给服务器
3.当提交数据时,会把用户输入的信息jack提交给服务器
http://127.0.0.1:8848/cgb2106/test03.html?user=jack
http://127.0.0.1:8848/cgb2106/test03.html?user=12&abc=123&age=18
4.改造网页文件
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>测试 表单标签</title>
</head>
<body>
<!-- 创建表单,
下拉框:select(下拉) + option(选项)
文件上传: <input type="file"/>
文本域:<textarea></textarea>
-->
<h1>注册表单</h1>
<form>
<table border="1px" cellspacing="0px" bgcolor="lightgray">
<tr>
<td>用户名:</td>
<td>
<input type="text" name="user"/>
</td>
</tr>
<tr>
<td>密码:</td>
<td>
<input type="password" name="pwd" />
</td>
</tr>
<tr>
<td>确认密码:</td>
<td>
<input type="password" name="repwd" />
</td>
</tr>
<tr>
<td>昵称:</td>
<td>
<input type="text" name="nick" />
</td>
</tr>
<tr>
<td>邮箱:</td>
<td>
<input type="email" name="mail" />
</td>
</tr>
<tr>
<td>性别:</td>
<td>
<!-- 想单选就必须设置name属性,而且值必须相同
设置好name属性数据就可以提交了,但是默认提交了on
-->
<input type="radio" name="sex" value="1"/>男
<input type="radio" name="sex" value="0"/>女
</td>
</tr>
<tr>
<td>爱好:</td>
<td>
<input type="checkbox" />篮球
<input type="checkbox" />足球
<input type="checkbox" />乒乓球
</td>
</tr>
<tr>
<td>城市:</td>
<td>
<select>
<option>北京</option>
<option>上海</option>
<option>广州</option>
<option>深圳</option>
</select>
</td>
</tr>
<tr>
<td>头像:</td>
<td>
<input type="file" />
</td>
</tr>
<tr>
<td>验证码:</td>
<td>
<input type="text" />
<img src="a.png" />
<input type="button" value="点我换一张" />
</td>
</tr>
<tr>
<td>自我描述:</td>
<td>
<textarea>描述信息...</textarea>
</td>
</tr>
<tr>
<td colspan="2">
<input type="submit" value="提交"/>
<input type="button" value="重置"/>
</td>
</tr>
</table>
</form>
</body>
</html>