📇 本类导航
本页自动汇总「Java」分类下的全部笔记(含子分类),随笔记增删实时更新。
前提
先在IDEA中安装两个插件,如下图所示
1、安装图形化驱动程序(Scene Builder)
==其实只需要下载一个外部程序即可(就这么简单,不要下什么eclipse,纯纯sb!!!)==
提取码:m0ej
–来自百度网盘超级会员V4的分享
改一下安装路径,然后不断next即可2、具体使用
①:最简单的,直接新建一个普通的Java项目
②:在src文件夹下新建view软件包
③:右键view软件包,点击新建FXML文件
④:右键新建好的fxml文件,选择在SceneBuilder中打开
打开之后的窗口如下图所示
这里面就可以进行组件的拖拽布局以及设置组件id名,(这个id名和Qt中组件的类名是同一个意思,都是对象名,所以说大佬的设计思想往往不谋而同)
如何设置id名?请看以下分析
点击你想要命名的组件,在右边找到Code菜单项,里面即可设置id,请看下图
前提:如果你核查代码确保都没问题的时候,但还是出现莫名其妙的异常❎❎❎
解决思路
这时候就要看看是不是导的包导错了(这个跟微信开发小游戏时工具自动导的包一样,不过怎么说呢,idea还是比微信开发者工具智能一点,那个是真的sb),或者类名写错了(这个坑过你一个下午,真的艹了!!!)
开始打代码之前,先要进行一些前期准备
①:新建一个Maven项目,点击下一步,修改项目路径及项目名称,最后点完成即可。
②:文件->项目结构->Facet->添加Web项目,文件夹名称为webapp,下一级目录为WEB-INF,再下一级有一个文件web.xml,如果选项变灰添加不了,可以先把原来的先删除掉先再进行创建
③:设置->构建->构建工具,把任何变更勾上,再点入Maven,把Maven主路径修改为D:/JAVA/Maven/apache-maven-3.6.3,把用户设置文件修改为D:\JAVA\Maven\apache-maven-3.6.3\conf\settings.xml,点击应用->确定
④:在pom.xml文件中添加以下内容<build> <plugins> <plugin> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat7-maven-plugin</artifactId> <version>2.1</version> <configuration> <port>8080</port> <uriEncoding>UTF-8</uriEncoding> <url>http://localhost:8080/shiro</url> <server>Tomcat7</server> </configuration> </plugin> <!-- 编译插件 --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.1</version> <configuration> <source>1.8</source> <target>1.8</target> <encoding>UTF-8</encoding> </configuration> </plugin> </plugins> </build>⑤:一个jsp对应一个Servlet,Servlet有一个转发函数,也就是对你所做的请求做一个响应,Servlet就像一个中间人,负责接收请求以及响应的业务。
⑥:
⑦:axios里用的是_this,外面用的都是this
⑧:我给服务器数据用post,服务器给我数据用get。
②:javaWeb中当出现数据库的属性名和实体类的属性名不一致时,在Mapper.xml文件中取别名
例:
在sql语句中的占位符使用的都是实体类的属性名①:Maven其实就是一个可以自动载入jar包的一个框架,其中最重要的其实就是一个pom.xml文件,其次就是它分了两个目录,一个是开发目录,一个是测试目录。
②:MyBatis其实就是对JDBC进行了再度封装,不过得自己搭建,所有可以留一个地方放着,下次要的时候直接导入即可,就这么so easy!写程序进行优化时,避免硬编码的形式,把需要载入的数据放入xml文件中
Mapper代理的方式:
我觉得就是,把Mapper接口里面的函数名当作一个映射的键,Mapper的xml文件里面对应的sql语句当作一个映射的值。把函数名当作映射的键真的是很巧妙,这样调用的时候以为调用的是函数,没想到是拿去映射一个sql语句了。注意:接口文件和xml文件要在同一级目录下
给包取别名
(给包取一个别名,这里取的别名,让导com.itheima.pojo包的地方,只要写类就行,包名可以省略,注意:类名可以不区分大小写,mybatis真的很强大!!!搭配上mapper简直绝配)
sql语句的一些积累:
as:给数据类型取别名, like:与等号’='相反,模糊查询。
Mybatis事务
Mybatis是默认手动提交事务的,如果需自动提交事务,则需在创建对象时,给true
Mybatis提供的标签为我们在实现动态sql时规避了很多的问题。
Mybatis的xml文件传递多个参数时:封装为Map集合,可以使用@Param注解,替换Map集合中默认的arg键名HTML(超文本标记语言)
W3C标准:网页主要由三部分组成
结构:HTML>表现:CSS>行为:JavaScript
html的基本格式:
html的基本知识:
一些学习经验
request.js封装在doc的7.Vue实现增删改查里面
解决跨域问题在doc的5.SpringBoot实现分页查询里面
- 前端界面写的东西没效果,最大的可能是你写的位置不对。
- yml配置文件中,键和值之间一定要空一格,不然会报格式错误的错
- varchar相当于Java中的String,bigint相当于Java中的long
- Vue的data里面,如果直接写对象名称,则在页面调用时,直接
.属性名使用即可,Vue会自动生成的- 在sql语句中的占位符使用的都是实体类的属性名
- javaWeb中当出现数据库的字段名和实体类的属性名不一致时,在Mapper.xml文件中取别名
- 模糊查询表达式为:%
实体类属性名%(实体类属性名为字符串时才需要添加,数字则不需要添加),数字不许模糊查询,1就是1,2就是2!!!!,还有mapper接口方法有返回值的,一定不能去掉,不然会报 It’s likely that neither a Result Type nor a Result Map was specified. 错!!- 前端vue框架用的是JSON字符串,后端接口要的是一个对象或里面的一个数据,所以要进行转换
- 如果请求是用get的方式提交,则参数会携带在链接上,Servlet获取参数使用
request.getParameter(“键名”)得到链接上对应的值,如果请求是用post的方式提交,则参数会携带在data上,Servlet获取参数使用BufferedReader br = request.getReader(); String params = br.readLine();//json字符串获取
- model是一个大的容器,v-model是model里面的一个属性
- mapper参数有两个以上时才需要添加 @Param注解,只有单独一个则不需要添加 @Param注解
- 点击超链接、按钮、图片…,亦或者是刷新,都视为一次请求。Servlet做的就是响应你这次请求
- 分页查询使用limit关键字,select * from tb_brand limit 3,4,意思为:在数据表tb_brand中查询下标为3往后的4条数据
遇到前端跨域访问问题,类似于这样的:
在Springboot项目里加上这个配置文件CorsConfig.java,重启之后即可实现跨域访问,前端无需再配置跨域。import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web.cors.CorsConfiguration; import org.springframework.web.cors.UrlBasedCorsConfigurationSource; import org.springframework.web.filter.CorsFilter; @Configuration public class CorsConfig { // 当前跨域请求最大有效时长。这里默认1天 private static final long MAX_AGE = 24 * 60 * 60; @Bean public CorsFilter corsFilter() { UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); CorsConfiguration corsConfiguration = new CorsConfiguration(); corsConfiguration.addAllowedOrigin("*"); // 1 设置访问源地址 corsConfiguration.addAllowedHeader("*"); // 2 设置访问源请求头 corsConfiguration.addAllowedMethod("*"); // 3 设置访问源请求方法 corsConfiguration.setMaxAge(MAX_AGE); source.registerCorsConfiguration("/**", corsConfiguration); // 4 对接口配置跨域设置 return new CorsFilter(source); } }注意,加完这个配置类后一定要 重启后台 !!!
Ioc:好比在一个容器中放了很多对象,我们只需要管对象的调用,至于对象的创建与配置我们无需关心,底层代码已经有人帮你实现,无需担心,用就好
**具体详解,请看链接:**我们到底为什么要用 IoC 和 AOP - 知乎 (zhihu.com)总结
IoC 解决了以下问题:
- 创建了许多重复对象,造成大量资源浪费;
- 更换实现类需要改动多个地方;
- 创建和配置组件工作繁杂,给组件调用方带来极大不便。
AOP 解决了以下问题:- 切面逻辑编写繁琐,有多少个业务方法就需要编写多少次。
1、JDK17
wget http://49.232.8.65/jdk/jdk17/jdk-17_linux-x64_bin.tar.gz tar -zxvf jdk-17_linux-x64_bin.tar.gz vim /etc/profile # 文件添加如下内容 export JAVA_HOME=jdk文件夹全路径 export PATH=$JAVA_HOME/bin:$PATH export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar # 刷新配置使其生效 source /etc/profile # 查看安装的版本 java -version2、MySQL
具体教程可以参考
((20251130181901-0b7e0k7 ‘二 安装mysql’))
3、Redis
wget http://download.redis.io/releases/redis-6.2.7.tar.gz tar -zxvf redis-6.2.7.tar.gz cd redis-6.2.7 make make PREFIX=/usr/local/src/redis-6.2.7 install cp redis.conf /usr/local/src/redis-6.2.7/bin vim redis.conf # 文件修改如下内容 # 1、允许访问的地址,默认是127.0.0.1,会导致只能在本地访问。修改为0.0.0.0则可以在任意IP访问 bind 0.0.0.0 # 2、守护进程,修改为yes后即可后台运行 daemonize yes # 3、密码,设置后访问Redis必须输入密码 requirepass X7#kLp!2fQ@5z # 启动Redis cd /usr/local/src/redis-6.2.7/bin ./redis-server redis.conf4、Nginx
具体教程可以参考
配置可以参考
HTTPS:
worker_processes 1; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; # HTTPS server # server { listen 443 ssl; server_name 自己的域名或者云服务器IP; client_max_body_size 5m; ssl_certificate 云服务器.crt的ssl文件; ssl_certificate_key 云服务器.key的ssl文件; ssl_session_cache shared:SSL:1m; ssl_session_timeout 5m; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers HIGH:!aNULL:!MD5; ssl_prefer_server_ciphers on; location / { root /usr/local/nginx/html/dist; index index.html index.htm; try_files $uri $uri/ /index.html; } location /admin { alias /usr/local/nginx/html/admin/dist; index index.html index.htm; try_files $uri $uri/ /admin/index.html; } location /api/{ proxy_pass http://[服务器地址]:8080/; } } }HTTP:
#user nobody; worker_processes 1; #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; #pid logs/nginx.pid; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; #log_format main '$remote_addr - $remote_user [$time_local] "$request" ' # '$status $body_bytes_sent "$http_referer" ' # '"$http_user_agent" "$http_x_forwarded_for"'; #access_log logs/access.log main; sendfile on; #tcp_nopush on; #keepalive_timeout 0; keepalive_timeout 65; #gzip on; server { listen 80; server_name localhost; #charset koi8-r; #access_log logs/host.access.log main; location / { root /usr/local/nginx/html/dist; index index.html index.htm; try_files $uri $uri/ /index.html; } #error_page 404 /404.html; # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location /admin { alias /usr/local/nginx/html/admin/dist; index index.html index.htm; try_files $uri $uri/ /index.html; } # proxy the PHP scripts to Apache listening on 127.0.0.1:80 # #location ~ \.php$ { # proxy_pass http://127.0.0.1; #} location /api/{ proxy_pass http://www.qiuqingsheng.fun:48080/; } # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 # #location ~ \.php$ { # root html; # fastcgi_pass 127.0.0.1:9000; # fastcgi_index index.php; # fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; # include fastcgi_params; #} # deny access to .htaccess files, if Apache's document root # concurs with nginx's one # #location ~ /\.ht { # deny all; #} } # another virtual host using mix of IP-, name-, and port-based configuration # #server { # listen 8000; # listen somename:8080; # server_name somename alias another.alias; # location / { # root html; # index index.html index.htm; # } #} # HTTPS server # #server { # listen 443 ssl; # server_name localhost; # ssl_certificate cert.pem; # ssl_certificate_key cert.key; # ssl_session_cache shared:SSL:1m; # ssl_session_timeout 5m; # ssl_ciphers HIGH:!aNULL:!MD5; # ssl_prefer_server_ciphers on; # location / { # root html; # index index.html index.htm; # } #} }
一、下载JDBC驱动包
1.打开 MySQL 官网:https://www.mysql.com/
2.点击 DOWNLOADS,把页面滚动到最下面,点击 MySQL Community (GPL) Downloads
3.点击 Connector/J
4.点击 General Availability(GA) Releases,在 Select Operating System 下拉列表选择 Platform Independent,然后选择任意一种压缩包格式后面的 Download
5.点击 No thanks,just start my download.
6.下载完成后,解压,打开文件夹,就可以看到里面的 JDBC 驱动 JAR 包了
二、将JDBC驱动包导入到IDEA中
文件 --> 项目结构 --> ******库(项目设置那一栏)****** –> + --> 选择JDBC驱动包 --> 应用 --> 确定
















