web开发
web应用程序:可以提供浏览器访问的程序
a.html 多个web资源,这些web资源可以被外界访问,对外界提供服务
你能访问到的任何一个页面或者资源,都存在于这个世界的某一台计算机上
url统一资源定位符
这个统一的web资源会被放在同一个文件夹下,web应用程序–>tomcat:服务器
一个web应用由多部分组成
HTML css js
jsp servlet
java程序
jar包
配置文件(properties)
web应用程序编写完毕后,若想提供给外界访问,需要一个服务器统一管理
一次请求request
一次响应response
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2nmkYdXH-1678093948837)(D:\桌面\java全栈冲冲冲\javaweb\1.assets\image-20230104101809803.png)]
静态web存在缺点,页面无法动态更新,所有用户都看到同一个页面
轮播图,点击特效,伪动态
javascript
vbscript
页面会动态展示,web的页面展示效果会因人而异
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1PVkF7Q1-1678093948838)(D:\桌面\java全栈冲冲冲\javaweb\1.assets\image-20230104102646359.png)]
缺点
优点web页面可以动态更新,所有用户看到都不是同一个页面,它可以与数据库交互
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Su0sB9NL-1678093948839)(D:\桌面\java全栈冲冲冲\javaweb\1.assets\image-20230104103030570.png)]
APS
微软 国内最早流行的
在html中嵌入了vb脚本,asp+com
asp开发中,基本一个页面 都会有几千行的业务代码,页面及其换乱
维护成本高
JSP
- jsp/servlet
- b/s浏览和服务器
- c/s客户端和服务器
- sun公司主推的b/s架构
- 基于java语言的(所有的大公司活,或者一些开源组件,都用java写)
- 可以承载三高问题带来的影响;
- 语法像asp,asp-->jsp,加强市场强度
-
PHP php开发速度很快,功能很强大,跨平台,代码很简单(70% wp)
无法承载大访问量的情况(局限性)
服务器是一种被动操作,用来处理用户的一些请求,和给用户一些响应信息
IIS
微软的;asp…windows中自带
tomcat
tomcat实际上运行jsp页面和servlet
工作3到5年之后,可以尝试手写tomcat服务器
tomcat下载
tomcat配置
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bYYt4un6-1678093948840)(D:\桌面\java全栈冲冲冲\javaweb\1.assets\image-20230104132949907.png)]
访问测试http://localhost:8080/
可能遇到的问题,
java环境变量没有配置
闪退问题,需要配置兼容性
乱码问题:配置文件
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5MTsfJOD-1678093948840)(D:\桌面\java全栈冲冲冲\javaweb\1.assets\image-20230104173258906.png)]
可以配置启动的端口号
tomcat的默认端口号8080
mysql3306
http80
https443
可以配置主机的名称
默认的主机名为localhost 127.0.0.1
默认网站应存放的位置为webapps
请你谈谈网站上如何进行访问的
1.输入一个域名;回车
2.检查本机的c盘下,window\System32\drivers\etc\hosts配置文件下有没有这个域名映射,
有 直接返回对应的ip地址,这个地址中,有我们需要访问的web车程序,可以直接访问
127.0.0.1 www.qinjiang.com
没有:去dns服务器找,找到的话就返回找不到就返回找不到
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0UCLowaM-1678093948841)(D:\桌面\java全栈冲冲冲\javaweb\1.assets\image-20230105075445316.png)]
不会就先模仿
将自己写的网站,放到服务器tomcat中指定的web应用的文件夹webapps下,就可以访问了网站应该有点结构
--webapps:tomcat服务器的web目录
-root
-kuangstudy:网站的目录名
-web-inf
-classes:java程序
- lib:web应用所依赖的jar包
-web.xml:网站配置文件
-index。html默认的首页
-static
-css
-style。css
-js
-img
http(超文本传输协议)是一个简单的请求,响应协议,它通常运行在tcp之上
文本:html,字符串
超文本:图片,音乐,视频,定位,地图…
80
https:安全的
http1.0
http2.0
####请求行
请求行中的请求方式:get
请求方式:get post,head,delete,put,tract
get请求能够携带的参数比较少,大小有限制,会在浏览器的url地址栏显示数据内容,不安全,但高效
post :请求能够携带的参数没有限制,大小有限制,不会在浏览器的url地址栏显示数据内容,安全但不搞笑
200:请求响应成功200
3xx:请求重定向
重定向,你重新到我给你的新位置去
4xx找不到资源 404、
资源不纯在
5xx服务器代码错误,500 502 网关报错
当你的浏览器中地址栏输入地址并回车的一瞬间到页面展示出来,经历了什么
我们为什么要学习这个技术
在javaweb开发中,需要使用大量的jar包,我们手动去导入;
如何能够让一个东西自动帮我导入和配置这个jar包
我们目前用来就是方便导入jar包
maven的核心思想:约定大于配置
maven环境配置
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lHPPfd39-1678093948841)(D:\桌面\java全栈冲冲冲\javaweb\1.assets\image-20230108222328481.png)]
这个只有在web应用下才有
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5YmJdXIq-1678093948842)(D:\桌面\java全栈冲冲冲\javaweb\1.assets\image-20230108222522515.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JltII0Uc-1678093948843)(D:\桌面\java全栈冲冲冲\javaweb\1.assets\image-20230108222838118.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LuT6rqNb-1678093948843)(D:\桌面\java全栈冲冲冲\javaweb\1.assets\image-20230108223824090.png)]
pom.xml是maven的核心配置文件
maven由于他的约定大于配置,我们之后可以能遇到我们写的配置文件,无法被导出或者生效的问题,
解决方法
//在build中配置resources,来防止我们资源导出失败的问题
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UwWVAvoc-1678093948844)(D:\桌面\java全栈冲冲冲\javaweb\1.assets\image-20230110105132560.png)]
Servlet就是sun公司开发动态web的一门技术
sun在这些api中提供一个接口,servlet,如果你想开发一个servlet程序,只需要完成两个小步骤,
编写一个类,实现servlet接口
把开发好的java类部署懂啊web服务器中
把实现了Servlet接口的java程序叫做Servlet
Serlvet接口Sun公司有两个默认的实现类,HttpServlet,GenericServlet
构建一个Maven项目,删掉里面的src目录,以后我们的学习就在这个项目里简历moudel;这个空的工程就是maven打主工程
关于Maven父子工程的理解父亲项目会有
<modules>
<module>servlet</moudule>
</modules>
<parent>
<artifactId>javaweb-02-servlet</artifactId>
<groupId>com.kuang</groupId>
<version>1.0-SNAPAHOT</version>
</parent>
Maven环境优化
修改web.xml为最新的
将maven的结构搭建完整
编写一个Servlet程序
编写Servlet的映射
为什么需要映射:我们写的是java程序,但是要通过浏览器访问,而浏览器需要连接web服务器,所以我们需要再web服务中注册我们写的Servlet,还需要给他一个浏览器能够访问的路径
配置Tomcat
注意:配置项目发布的路径就可以了
启动测试
servlet是web服务器调用,web服务器在收到浏览器请求之后,会
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XFRDKP3M-1678093948844)(D:\桌面\java全栈冲冲冲\javaweb\1.assets\image-20230115090945524.png)]
一个Servlet可以指定一个映射路径
一个Servlet可以指定多个映射地址
一个Servlet可以指定通用映射路径
默认请求路径
指定一些后缀或者前缀等等
优先级问题:指定了固有的映射路径优先级最高,如果找不到就会走默认的处理请求
web容器在启动的时候,它会为每个web程序都创建一个对应的ServletContext对象,它代表了当前的web应用
共享数据
我在这个Servlet中保存的数据,可以在另外一个Servlet中拿到
//this.getInitParameter() 初始化参数
//this.getServletConfig() Servlet配置
//this.getServletContext() Servlet上下文
获取初始化参数
、
<context-param>
<param-name>urlparam-name>
<param-value>jdbc:mysql://localhost:3306/mybatisparam-value>
context-param>
protected void doGet(HttpServletRequest req,HttpServletRespon resp)
throws ServletException ,IOException{
ServletContext context =this.getServletContext();
String url =context.getInitParameter("url");
resp.getWriter().print(url);
}
请求转发
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
ServletContext context=this.getServletContext();
RequestDispatcher requestDispatcher=context.getRequestDispatcher("gp");//转 发的请求路径
requestDispatcher.forward(req,resp);//调用forward实现请求转发
读取资源文件
Properties
在java目录下新建properties
在resources目录下新建properties
发现,都被打包到了同一个路径下:classes我们俗称这个路径为classpath
思路:需要一个文件流
username=root12312
password=zxczxczxc
public class ServletDemo05 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
InputStream is = this.getServletContext().getResourceAsStream("/WEB-INF/classes/db.properties");
Properties prop=new Properties();
prop.load(is);
String user = prop.getProperty("username");
String pwd=prop.getProperty("password");
resp.getWriter().print(user+""+pwd);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
}
}
访问测试即可;
web服务器接收到客户端的http请求,针对这个请求,分别创建一个代表请求的HttpServletRequset对象
代表响应的一个HttpServletReponse;
如果要获取客户端请求过来的参数,找HttpServletRequest
如果要给客户端响应一些信息:找HttpServletResponse
简单分类
负责向浏览器发送数据的方法
ServletOutputStream getOutputStream() throws IOException;
PrintWriter getWriter() throws IOException;
负责向浏览器发送响应头的方法
响应的状态码
常见应用
向浏览器输出消息
下载文件
要获取下载文件的路径
下载的文件名是啥
设置想办法让浏览器能够支持我们需要的东西
获取下载文件的输入流
创建缓冲区
获取OutputStream对象
将FileOutStream流写入到buffe缓冲区
使用OutPutStream将缓冲区的数据输出到客户端
验证码功能
验证怎么来的
实现重定向
常见场景:用户登录
void sendRedirext(String var1)throws IOException;
测试
public class RedirectServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.sendRedirect("/r/img");
resp.setStatus(302);
resp.setHeader("Location ","/r/img");
}
面试题,请你聊聊重定向和转发的区别
相同点
不同点
#HttpServeltRequest
HttpServletRequest代表客户端的请求,用户通过Http协议访问服务器,HTTP请求中的所有信息会被封装到HttpServletRequest,通过这个HttpServletRequest的方法,获取客户端的所有信息
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sMyV1oKn-1678093948845)(D:\桌面\java全栈冲冲冲\javaweb\1.assets\image-20230220100814688.png)]
获取前端传递的参数
请求转发
public class LoginServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
req.setCharacterEncoding("utf-8");
String username = req.getParameter("username");
String password=req.getParameter("password");
String[] hobbys = req.getParameterValues("hobbys");
System.out.println(password);
System.out.println(username);
System.out.println(Arrays.toString(hobbys));
//通过请求转发
//这里的/代表当前的web应用
resp.setCharacterEncoding("utf-8");
req.getRequestDispatcher("/r/success.jsp").forward(req,resp);
}
会话,用户打开了一个浏览器,点击了很多超链接,访问多个web资源,关闭浏览器,这个过程可以称之为会话
有状态会话:一个同学来过教室,下次在来教室,我们会知道这个同学,曾经来过,称之为有状态会话
有状态会话
一个网站,怎么证明你来过
客户端 服务端
cookie
session
常见常见:网站登陆之后,你下次就不用再登陆了,第二次访问直接就上去了
从请求中拿到cookie信息
服务器响应给客户端cookie
Cookie[] cookies = req.getCookies();//获得cookie
cookie.getName();//获得cookie中的key
cookie.getValue();//获得cookie中的value
new Cookie("LastLoginTime",System.currentTimeMillis()+"")//新建一个cookie
cookie.setMaxAge(20*60*60);//设置cookie的有效期
resp.addCookie(cookie);//响应
cookie 一般会保存在本地的目录下appdata;
一个网站的cookie是否存在上线
一个cookie只能保存一个信息
一个web站点可以给浏览器发送多个cookie, 最多存放20个cookie
cookie大小有限制4kb
300个cookie浏览器上限
删除cookie
不设置有效期,关闭浏览器,自动失效
设置有效期时间为0
编码解码
URLEncoder.encode("qingjiang","utf-8");
URLDecoder.decode(cookie.getValue(),"UTF-8")
什么是session:
服务器会给每一个用户(浏览器)创建一个Seesion对象
一个Session独占一个浏览器,只要浏览器没有关闭,这个Seesion就存在
用户登陆之后,整个网站它都可以访问–>保存用户的信息,保存购物车信息
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-E2o1VBij-1678093948845)(D:\桌面\java全栈冲冲冲\javaweb\1.assets\image-20230222152812769.png)]
session和cookie的区别
使用场景:
cookie
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6EJh1WJP-1678093948846)(D:\桌面\java全栈冲冲冲\javaweb\1.assets\image-20230222174954637.png)]
session
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SVO3akQE-1678093948846)(D:\桌面\java全栈冲冲冲\javaweb\1.assets\image-20230222175151770.png)]
java serverpages:java服务器端页面,也和Servlet一样,用于动态web技术,
最大的特点
写jsp就像在写html
区别
html只给用户提供静态的数据
jsp页面中可以嵌入java代码,为用户提供动态数据
看文件
浏览器向服务器发送请求,不管访问什么资源,其实都是在访问Servlet
jsp最终会转化成一个java类
jsp本质上就是servlet
//初始化
public void _jspInit(){
}
//销毁
public void _jspDestroy(){
}
//jspServier
public void _jspService(final javax.servlet.http.HttpServletRequest request,final java.servlet.http.HttpServletResponse response)
throws java.io.IOException,javax.servlet.ServeltException
判断请求
内置一些对象
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fE9zemlz-1678093948847)(D:\桌面\java全栈冲冲冲\javaweb\1.assets\image-20230223172509594.png)]
输出页面前增加代码
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FrwGQ84U-1678093948847)(D:\桌面\java全栈冲冲冲\javaweb\1.assets\image-20230223173609945.png)]
以上的这些对象我们可以在jsp页面中可以直接使用
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-V2xD84Dr-1678093948848)(D:\桌面\java全栈冲冲冲\javaweb\1.assets\image-20230223204859266.png)]
在jsp页面中;
只要是java代码就会原封不动的输出
如果是HTML代码,就会被转换为
out.write(“name”)
这样的格式,输出到前端
任何语言都有自己的语法,java中有,jsp作为java技术的一种应用,它拥有一些自己扩充的语法(了解,知道即可!),java所有语法都支持
jsp表达式
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6PtsketA-1678093948848)(D:\桌面\java全栈冲冲冲\javaweb\1.assets\image-20230223213224261.png)]
jsp脚本片段
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rGt9zebO-1678093948849)(D:\桌面\java全栈冲冲冲\javaweb\1.assets\image-20230223213617048.png)]
jsp声明
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fon1VR3a-1678093948849)(D:\桌面\java全栈冲冲冲\javaweb\1.assets\image-20230223230217772.png)]
jsp声明:会被编译到jsp生成java类中,其他的,就会被生到jspService方法中
在jsp嵌入java 代码即可
<%%>
<%=%>
<%!%>
<%--注释--%>
jsp的注释,不会在客户端显示,html会
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8IKpwXW9-1678093948850)(D:\桌面\java全栈冲冲冲\javaweb\1.assets\image-20230223233910909.png)]
PageContext 存东西
Request 存东西
Response
Session 存东西
Application(servletcontext) 存东西
config(servletconfig)
out
page
exception
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HbCOZ5fL-1678093948850)(D:\桌面\java全栈冲冲冲\javaweb\1.assets\image-20230224111702516.png)]
request客户端向服务端发送请求,产生的数据,用户看完就没有用了,比如:新闻,用户看完没用的
session客户端向服务器发送请求,产生的数据,用户用完一会还有用,比如购物车
application客户端向服务器发送请求,产生的数据,一个用户用完了,其他用户还可能用,比如聊天数据
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3hDkETk9-1678093948851)(D:\桌面\java全栈冲冲冲\javaweb\1.assets\image-20230224124123786.png)]
EL表达式
获取数据
执行运算
获取web开发的常用对象
jdp标签
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QwjCfu3f-1678093948851)(D:\桌面\java全栈冲冲冲\javaweb\1.assets\image-20230224130352893.png)]
jstl表达式
jstl标签库的使用就是为了弥补html标签的不足,它自定义许多标签可以供我们使用,标签的功能和java代码一样
核心标签
格式化标签
sql标签
xml标签
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sRrDCjKg-1678093948852)(D:\桌面\java全栈冲冲冲\javaweb\1.assets\image-20230224131605963.png)]
jstl标签库使用步骤
引入对应的taglib
使用其中的方法
在tomcat也需要引入jstl的包,否则会报错:jstl解析错误
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ivan5kFR-1678093948852)(D:\桌面\java全栈冲冲冲\javaweb\1.assets\image-20230224165015643.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lxn2HRcd-1678093948853)(D:\桌面\java全栈冲冲冲\javaweb\1.assets\image-20230224172853992.png)]
实体类
javabean有特定的写法
一般用来和数据库的字段做映射 ORM
ORM:对象关系映射
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qidrcKM5-1678093948853)(D:\桌面\java全栈冲冲冲\javaweb\1.assets\image-20230224203724328.png)]
class People{
private int id;
private String name;
private int id;
private String address;
}
class A{
new People{1,"秦疆1号",3,"西安"}
new People{2,"秦疆2号",3,"西安"}
}
什么是MVC
Model(模型)
view (视图)
controller(控制器)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-y6f5Hi4r-1678093948854)(D:\桌面\java全栈冲冲冲\javaweb\1.assets\image-20230225100150640.png)]
早期
用户直接访问控制层,控制层就可以直接操作数据库
servlet --->CURD-->数据库
弊端:程序十分臃肿,不利于维护
servlet的代码中,处理请求,响应,视图跳转,处理jdbc,处理业务代码,处理逻辑代码
架构:没什么事加一层解决不了的
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9A7sw5xr-1678093948854)(D:\桌面\java全栈冲冲冲\javaweb\1.assets\image-20230225101419971.png)]
Model
view
controller(Servlet)
接收用户的请求(req:请求参数,Session信息)
交给业务层处理对应的代码
控制试图的跳转
登陆---》接收用户的登陆请求---》处理用户的请求(获取用户登陆的参数,username,password)---》交给业务层处理登陆业务(判断用户名密码是否正确:事物)---》dao层查询用户名和密码是否正确---》数据库
Filter:过滤器,用来过滤网站的数据
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GlisJDYm-1678093948855)(D:\桌面\java全栈冲冲冲\javaweb\1.assets\image-20230225103050390.png)]
Filter开发步骤
导包
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JCr7W8hA-1678093948855)(D:\桌面\java全栈冲冲冲\javaweb\1.assets\image-20230225171733576.png)]
编写过滤器
package com.kuang.filter;
import javax.servlet.*;
import java.io.IOException;
public class CharacterEncodingFilter implements Filter {
//初始化:web服务器一旦启动,就开始初始化,随时等待过滤对象出现
@Override
public void init(FilterConfig filterConfig) throws ServletException {
System.out.println("CharacterEncodingFilter初始化");
}
//Chain:链
/*
*过滤中的所有代码,在过滤 特定请求的时候都会执行
必须要让过滤器继续同行
*/
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
servletRequest.setCharacterEncoding("utf-8");
servletResponse.setCharacterEncoding("utf-8");
servletResponse.setContentType("text/html;charset=UTF-8");
System.out.println("CharacterEncodingFilter执行前。。。");
filterChain.doFilter(servletRequest,servletResponse);//让我们的请求继续走,如果不写 程序在这里会被截止
System.out.println("CharacterEncodingFilter执行后");
}
//销毁
@Override
public void destroy() {
System.out.println("CharacterEncodingFilter销毁");
}
}
在web.xml中配置filter
<filter>
<filter-name>CharacterEncodingFilterfilter-name>
<filter-class>com.kuang.filter.CharacterEncodingFilterfilter-class>
filter>
<filter-mapping>
<filter-name>CharacterEncodingFilterfilter-name>
<url-pattern>servlet/*url-pattern>
filter-mapping>
实现一个监听器的接口
编写一个监听器
实现监听器的接口
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WE1INjmq-1678093948856)(D:\桌面\java全栈冲冲冲\javaweb\1.assets\image-20230226124804462.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gfDAX7SS-1678093948856)(D:\桌面\java全栈冲冲冲\javaweb\1.assets\image-20230226124843017.png)]
3.看情况是否使用
监听器,gui编程中经常使用
package com.kuang.listener;
import java.awt.*;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
public class TestPanel {
public static void main(String[] args) {
Frame frame = new Frame("快乐");//创建一个窗口
Panel panel = new Panel(null);//面板
frame.setLayout(null);//设置窗体的布局
frame.setBounds(300,300,500,500);
frame.setBackground(new Color(0,0,255));//设置背景颜色
panel.setBounds(50,50,300,300);
panel.setBackground(new Color(0,255,0));
frame.add(panel);
frame.setVisible(true);
//监听事件,监听关闭事件
frame.addWindowListener(new WindowListener() {
@Override
public void windowOpened(WindowEvent e) {
}
@Override
public void windowClosing(WindowEvent e) {
}
@Override
public void windowClosed(WindowEvent e) {
}
@Override
public void windowIconified(WindowEvent e) {
}
@Override
public void windowDeiconified(WindowEvent e) {
}
@Override
public void windowActivated(WindowEvent e) {
}
@Override
public void windowDeactivated(WindowEvent e) {
}
});
}
}
什么是jdbc:java链接数据库
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rCe8l1iR-1678093948857)(D:\桌面\java全栈冲冲冲\javaweb\1.assets\image-20230226214737903.png)]
需要jar包的支持
package com.kuang.test;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
public class TestJdbc {
public static void main(String[] args) {
//配置信息
//useUnicode=true&characterEncoding=utf-8解决中文乱码
String url="jdbc://localhost:3306/jdbc?uesUnicode=true&characterEncoding=utf-8";
String username="root";
String Password="123456";
//加载驱动
//Class.forName("com.mysql.jdbc.Driver");
//连接数据库
//Connection connection= DriverManager.getConnection(url,uesrname,password);
//向数据库发送sql的对象Statement:CRUD
//Statement statement=connection.createStatement();
//编写sql
String sql="select * from users";
//执行sql,返回一个resultset:结果集
//ResultSet resultSet=statement.executeQuery(sql);
// while(rs.next()){
// System.out.println("id"+rs.getObject("id"));
// }
//关闭连接,释放资源(一定要做,)先开后关
// rs.close();
// statement.close();
// connection.close();
}
}
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-x8Rgj6Qo-1678093948857)(D:\桌面\java全栈冲冲冲\javaweb\1.assets\image-20230226232230102.png)]
导入数据库依赖
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gtcyxpS8-1678093948858)(D:\桌面\java全栈冲冲冲\javaweb\1.assets\image-20230226231541543.png)]
idea中连接数据库
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0JYFVCS0-1678093948859)(D:\桌面\java全栈冲冲冲\javaweb\1.assets\image-20230226231607809.png)]
jdbc固定步骤
预编译sql
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cIOMsNZC-1678093948859)(D:\桌面\java全栈冲冲冲\javaweb\1.assets\image-20230226233026350.png)]
要么都成功,要么都失败
ACID原则:保证数据的安全
开启事物
事物提交commit
事物回滚rollback
关闭事物
转账
a:1000
b:1000
a(900)--100-》b(1100)
依赖
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-t32A9y7h-1678093948860)(D:\桌面\java全栈冲冲冲\javaweb\1.assets\image-20230227133953574.png)]
简单使用
@Test注解只有在方法上有效,只要加了这个注解的方法,就可以直接运行
@Test
public void test(){
System.out.println("Hello")
}
//加载驱动
//Class.forName("com.mysql.jdbc.Driver");
//连接数据库
//Connection connection= DriverManager.getConnection(url,uesrname,password);
//向数据库发送sql的对象Statement:CRUD
//Statement statement=connection.createStatement();
//编写sql
String sql="select * from users";
//执行sql,返回一个resultset:结果集
//ResultSet resultSet=statement.executeQuery(sql);
// while(rs.next()){
// System.out.println(“id”+rs.getObject(“id”));
// }
//关闭连接,释放资源(一定要做,)先开后关
// rs.close();
// statement.close();
// connection.close();
}
}
[外链图片转存中...(img-x8Rgj6Qo-1678093948857)]
导入数据库依赖
[外链图片转存中...(img-gtcyxpS8-1678093948858)]
idea中连接数据库
[外链图片转存中...(img-0JYFVCS0-1678093948859)]
jdbc固定步骤
1. 加载驱动
2. 连接数据库,代表数据库
3. 向数据库发送sql的对象statement:crud
4. 编写sql(根据业务,不同的sql)
5. 执行sql
6. 关闭连接
预编译sql
[外链图片转存中...(img-cIOMsNZC-1678093948859)]
# 事物
要么都成功,要么都失败
ACID原则:保证数据的安全
开启事物
事物提交commit
事物回滚rollback
关闭事物
转账
a:1000
b:1000
a(900)–100-》b(1100)
### junit单元测试
依赖
[外链图片转存中...(img-t32A9y7h-1678093948860)]
简单使用
@Test注解只有在方法上有效,只要加了这个注解的方法,就可以直接运行
```java
@Test
public void test(){
System.out.println("Hello")
}