发表于: 2020-11-11 15:25:06
1 1558
今天完成的事情:
使用Annotation方式去配置数据库
package com.noteligible.annotation;
import com.noteligible.pojo.User;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;
//定义sql映射的接口,使用注解指明方法要执行的SQL
public interface Mapper1 {
//使用@Select注解指明getName方法要执行的SQL
@Select("select * from user where id = #{id};")
public User queryUserById(int id);
//使用@Insert注解指明getName方法要执行的SQL
@Insert("insert into user values(#{id},#{username},#{PASSWORD})")
public void insertUser(User user);
//使用@Delete注解指明getName方法要执行的SQL
@Delete("delete from user where id = #{id}")
public void deleteUser(int user);
//使用@Update注解指明getName方法要执行的SQL
@Update("update user set PASSWORD = #{PASSWORD},username = #{username} where id = #{id}")
public void updateUser(User user);
}
package com.noteligible.annotation;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;
import com.noteligible.pojo.User;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Test;
public class AnnotationMybatis {
private SqlSessionFactory sqlSessionFactory;
public static SqlSession getSqlSession() {
String resource = "src/main/resources/Mybatis-config.xml";
InputStream is = null;
try {
is = new FileInputStream(resource);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
//构建sqlSession的工厂
SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(is);
return sessionFactory.openSession();
}
//查找
@Test
public void testQueryUserById(){
SqlSession sqlSession = getSqlSession();
//从sqlSession中获取Mapper接口的代理对象
Mapper1 mapper1 = sqlSession.getMapper(Mapper1.class);
//建对象
User user = new User();
//调用对象
user.setId(499036811);
User userResult = mapper1.queryUserById(user.getId());
System.out.println(userResult);
}
//增加
@Test
public void testInsert(){
SqlSession sqlSession = getSqlSession();
//从sqlSession中获取Mapper接口的代理对象
Mapper1 mapper1 = sqlSession.getMapper(Mapper1.class);
//建对象
User user = new User(499036812,"jing","5468");
//调用对象
mapper1.insertUser(user);
sqlSession.close();
}
//删除
@Test
public void testDelete(){
SqlSession sqlSession = getSqlSession();
//从sqlSession中获取Mapper接口的代理对象
Mapper1 mapper1 = sqlSession.getMapper(Mapper1.class);
//建对象
mapper1.deleteUser(499036812);
//调用对象
sqlSession.close();
}
//修改
@Test
public void updateUser(){
SqlSession sqlSession = getSqlSession();
//从sqlSession中获取Mapper接口的代理对象
Mapper1 mapper1 = sqlSession.getMapper(Mapper1.class);
User user = new User(499036811,"zhangsana","12345");
//调用对象
mapper1.updateUser(user);
sqlSession.close();
}
}
通过远程连接Mysql,使用自定义域名并通过配置本地Host来配置DB连接文件
阿里云服务器
添加数据返回ID,删除或更新数据返回True/False
首先在xml文件添加以下字段
上传代码到github
Web基础
今天我们访问网站,使用App时,都是基于Web这种Browser(浏览器)/Server(服务器)模式,简称BS架构,它的特点是,客户端只需要浏览器,应用程序的逻辑和数据都存储在服务器端。浏览器只需要请求服务器,获取Web页面,并把Web页面展示给用户即可。
Web页面具有极强的交互性。由于Web页面是用HTML编写的,而HTML具备超强的表现力,并且,服务器端升级后,客户端无需任何部署就可以使用到新的版本,因此,BS架构升级非常容易。
HTML:超文本标记语言(英语:HyperText Markup Language,简称:HTML)是一种用于创建网页的标准标记语言。
URL:统一资源定位符(英语:Uniform Resource Locator,缩写:URL;或称统一资源定位器、定位地址、URL地址[1],俗称网页地址或简称网址)
统一资源定位符的标准格式如下:
[协议类型]://[服务器地址]:[端口号]/[资源层级UNIX文件路径][文件名]?[查询]#[片段ID]
https,是协议;
zh.wikipedia.org,是服务器;
443,是服务器上的网络端口号;
/w/index.php,是路径;
?title=Special:随机页面,是询问。
HTTP协议
在Web应用中,浏览器请求一个URL,服务器就把生成的HTML网页发送给浏览器,而浏览器和服务器之间的传输协议是HTTP,所以:
- HTML是一种用来定义网页的文本,会HTML,就可以编写网页;
- HTTP是在网络上传输HTML的协议,用于浏览器和服务器的通信。
HTTP协议是一个基于TCP协议之上的请求-响应协议,它非常简单,我们先使用Chrome浏览器查看http://www.jnshu.com/task/5/5/detail//#1,然后选择View - Developer - Inspect Elements(按F12进入开发者模式)就可以看到HTML:
切换到Network,重新加载页面,可以看到浏览器发出的每一个请求和响应:
对于Browser来说,请求页面的流程如下:
- 与服务器建立TCP连接;
- 发送HTTP请求;
- 收取HTTP响应,然后把网页在浏览器中显示出来。
浏览器发送的HTTP请求如下:
GET / HTTP/1.1
Host: www.sina.com.cn
User-Agent: Mozilla/5.0 xxx
Accept: */*
Accept-Language: zh-CN,zh;q=0.9,en-US;q=0.8
其中,第一行表示使用GET请求获取路径为/的资源,并使用HTTP/1.1协议,从第二行开始,每行都是以Header: Value形式表示的HTTP头,比较常用的HTTP Header包括:
- Host: 表示请求的主机名,因为一个服务器上可能运行着多个网站,因此,Host表示浏览器正在请求的域名;
- User-Agent: 标识客户端本身,例如Chrome浏览器的标识类似Mozilla/5.0 ... Chrome/79,IE浏览器的标识类似Mozilla/5.0 (Windows NT ...) like Gecko;
- Accept:表示浏览器能接收的资源类型,如text/*,image/*或者*/*表示所有;
- Accept-Language:表示浏览器偏好的语言,服务器可以据此返回不同语言的网页;
- Accept-Encoding:表示浏览器可以支持的压缩类型,例如gzip, deflate, br。
服务器的响应如下:
HTTP/1.1 200 OK 这个应该是这个Status Code(状态码): 200 OK
Content-Type: text/html
Content-Length: 21932
Content-Encoding: gzip
Cache-Control: max-age=300
<html>...网页数据...
状态码用多很多,自己碰到最多的好像就是502
502 Bad Gateway是指错误网关,无效网关;在互联网中表示一种网络错误。表现在WEB浏览器中给出的页面反馈。它通常并不意味着上游服务器已关闭(无响应网关/代理) ,而是上游服务器和网关/代理使用不一致的协议交换数据。鉴于互联网协议是相当清楚的,它往往意味着一个或两个机器已不正确或不完全编程。
从第二行开始,服务器每一行均返回一个HTTP头。服务器经常返回的HTTP Header包括:
- Content-Type:表示该响应内容的类型,例如text/html,image/jpeg;
- Content-Length:表示该响应内容的长度(字节数);
- Content-Encoding:表示该响应压缩算法,例如gzip;
- Cache-Control:指示客户端应如何缓存,例如max-age=300表示可以最多缓存300秒。
HTTP请求和响应都由HTTP Header和HTTP Body构成,其中HTTP Header每行都以\r\n结束。如果遇到两个连续的\r\n,那么后面就是HTTP Body。浏览器读取HTTP Body,并根据Header信息中指示的Content-Type、Content-Encoding等解压后显示网页、图像或其他内容。
通常浏览器获取的第一个资源是HTML网页,在网页中,如果嵌入了JavaScript、CSS、图片、视频等其他资源,浏览器会根据资源的URL再次向服务器请求对应的资源。
HTTP编程:以客户端的身份去请求服务器资源。
Web开发:以服务器的身份响应客户端请求,编写服务器程序来处理客户端请求。
明天计划的事情:
学习Servlet,学习spring-mvc
遇到的问题:
restful命名风格,看了阮一峰-RESTful API 设计指南文章,也没看懂是什么。
任务二一头雾水,然后去看师兄任务都是先编写spring-mvc,然后去知乎搜了搜学习spring-mvc,之前了解一些Servlet,学起来会比较顺畅
收获:对注解,git更熟练了,知道网站都是基于Web这种Browser(浏览器)/Server(服务器)模式,想到之前把代码上传到服务器,知道web开发时以服务器的身份响应客户端请求,编写服务器程序来处理客户端请求。知道任务二从什么地方开始突破了
评论