Spring小白第四篇
简单项目,用最基础的方法实现mysql数据库中flower表的增加数据和查看表中所有内容
项目完整百度云盘链接:链接:https://pan.baidu.com/s/1UiAUwA5oth4oFqGCIoItiQ
提取码:oe0n
复制这段内容后打开百度网盘手机App,操作更方便哦
MVC开发模式:
- M:Model模型,实体类和业务和dao
- V:view 视图 JSP
- C:Controller 控制器 servlet
3.1 作用:视图和逻辑分离
4.MVC 适用场景:大型项目开发
5.图示例
5.1 先设计数据库
5.2 先写实体类
5.3 持久层
5.4 业务逻辑
5.5 控制器
5.6 视图
视图
控制器
Service :业务逻辑
DAO:数据库访问对象
DB:数据库
什么是框架?
1.框架:软件的半成品,未解决问题制定的一套约束,在提供功能基础上进行扩充。
2.框架中一些不能被封装的代码(变量),需使用框架者新建一个xml文件,在文件中添加变量内容。
2.1需要建立特定位置和特定名称的配置文件。
2.2 需要使用xml解析技术和反射技术
3.常用概念
3.1 类库:提供的类没有封装一定逻辑。
举例:类库就是名言警句,写作文时引入名言警句。没有逻辑,只是一些有某种作用的类,装饰。
3.2框架:区别与类库,里面有约束。
框架是别人写的,想要运用框架,就必须要遵循框架开发者的规则。
是填空题,有选择,也有规则。剔除一些干扰,给自己设置了限制。对初学的我来说,目前还接触不到边线,所有学习进步空间很大。
MyBatis简介
- Mybatis 开源免费框架,原名iBatis.
- 2010在google code 2013年迁移到github
- 作用:数据访问层框架(底层是对JDBC的封装)
- mybatis优点:
- 1.使用mybatis时不需要编写实现类,只需要写需要执行的sql命令。
- 简化编程操作,提升业务完成效率
mysql8数据库连接到项目 需要用连接jar包也要用8版本的,另外driver 和URL也需要改 参考下面的连接代码,连接池同样适用
package com.bjsxt.dao.impl;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import com.bjsxt.dao.FlowerDao;
import com.bjsxt.pojo.Flower;
/**
* 数据访问层要有异常处理
* @author 幽冥天河
*
*/
public class FlowerDaoImpl implements FlowerDao {
@Override
public List<Flower> selAll() {
//jdk 1.7 开始后面泛型可以省略
List<Flower> list = new ArrayList<>();
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
try {
Class.forName("com.mysql.cj.jdbc.Driver");
conn= DriverManager.getConnection("jdbc:mysql://localhost:3306/ssm?useSSL=false&serverTimezone=UTC","root","123");
ps= conn.prepareStatement("select * from flower");
rs= ps.executeQuery();
while(rs.next()) {
list.add(new Flower(rs.getInt(1),rs.getString(2),rs.getDouble(3),rs.getString(4)));
}
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
try {
rs.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
ps.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return list;
}
@Override
public int insFlower(Flower flower) {
int index = 0;
Connection conn = null;
PreparedStatement ps = null;
try {
Class.forName("com.mysql.cj.jdbc.Driver");
conn= DriverManager.getConnection("jdbc:mysql://localhost:3306/ssm?useSSL=false&serverTimezone=UTC","root","123");
ps= conn.prepareStatement("insert into flower values(default,?,?,?)");
ps.setObject(1, flower.getName());
ps.setObject(2, flower.getPrice());
ps.setObject(3, flower.getProduction());
index = ps.executeUpdate();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
try {
ps.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return index;
}
}
表单的非空验证jquery来写 需导入相应jar包,最好是js文件
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Insert title here</title>
<script type="text/javascript" src="js/jquery-1.7.2.js"></script>
<script type="text/javascript">
//页面加载完成后执行
//相当于: window.function(){} $().ready(function(){}); 表单的非空验证
$(function(){
$("form").submit(function(){
if($(":text:eq(0)").val()==""||$(":text:eq(1)").val()==""||$(":text:eq(2)").val()==""){
alert("请填写完整信息");
//阻止默认行为
return false;
}
});
});
</script>
</head>
<body>
<!--post:
字节流
2GB
更安全
相对效率低
get:
字符流
2KB
-->
<form action="insert" method="post">
<table border="1" align="center">
<tr>
<td colspan="2" style="text-align:center;font-size:30px;font-weight:bold;">
花卉信息
</td>
</tr>
<tr>
<td><b>花卉名称:</b></td>
<td><input type="text" name="name"/></td>
</tr>
<tr>
<td><b>花卉价格:</b></td>
<td><input type="text" name="price"/></td>
</tr>
<tr>
<td>原产地:</td>
<td><input type="text" name="production"/></td>.
</tr>
<tr>
<td colspan="2" align="center">
<input type="submit" value="提交"/><input type="reset" value="重置"/>
</td>
</tr>
</table>
</form>
</body>
</html>