java web 开发框架编
学习web 框架上开发需要的是安装 mysql 8.0 idea 2022 git 2.2.23 node 16以上 (新版本不好拉有些库了)jdk 最好是17以上
jdk8也是行的,反正不管新版如何发布,我们都是你发任你发,永远jjava 8
第一步新建项目一定要设文件编吗,然后才开如开发
2.配置maven
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
https://maven.apache.org/xsd/settings-1.0.0.xsd">
<localRepository>C:/Users/甲蛙/.m2/repository</localRepository>
<mirrors>
<mirror>
<id>alimaven</id>
<mirrorOf>central</mirrorOf>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/repositories/central</url>
</mirror>
</mirrors>
<!-- 其他配置,如pluginGroups, proxies, servers等 -->
</settings>
第三仓库管理,由于我是新建代码,后来想放在仓库中,以前在本地建个仓库也经不用了,所以提交总是找到上一个仓库。解决方法
首先,查看当前远程仓库的列表。运行以下命令:
-
git remote -v您将看到一个或多个已配置的远程仓库及其对应的URL。
-
如果现有的远程仓库指向了错误的URL,您可以使用以下命令更新它的URL:
git remote set-url origin https://gitee.com/xie_bi_yuan/ctboot.git这将把名为
origin的远程仓库的URL更新为https://gitee.com/xie_bi_yuan/ctboot.git。 -
如果您想要保留现有的远程仓库并添加一个新的远程仓库,您可以为新的远程仓库指定一个不同的名称。例如,您可以将其命名为
gitee:git remote add gitee https://gitee.com/xie_bi_yuan/ctboot.git
查看本地仓库key
在安装好的git 的菜单中 点帮助。然后查看key 复制到仓库配置key中,当然我说的是也经有key 的情况![]()
启动日志优化:
修改主入口文件:
@SpringBootApplication
public class GRskgApplication {
private static final Logger LOG = LoggerFactory.getLogger(GRskgApplication.class);
public static void main(String[] args) {
ConfigurableApplicationContext context = SpringApplication.run(GRskgApplication.class, args);
LOG.info("杰哥系统也启动");
Environment env = context.getEnvironment();
LOG.info("启动成功!!");
LOG.info("地址: http://127.0.0.1:{}", env.getProperty("server.port"));
}
}
第三部份 利用idea 工具自带的http 测试,在根根目录新建一个文件夹,取名http 在下面新建一个文件test.http
程序启动后 这个文件的类,和测试类一样 可以运行测试方法

如果是测试post 一定要加空行
代码如下
###http文件如下
###
POST http://localhost:8080/hello/post
Content-Type: application/x-www-form-urlencoded
name=worldxsy
###控制器类代码如下
@PostMapping("/hello/post")
public String helloPost(String name) {
return "Hello, " + name + "! (POST)";
}
配置文件读取
1,支持格式说明:
在reources 文件夹下面的配置文件都 可以被boot 识别,只是默认是这个文件下面的根目录而己。支持 的格式如
.properties .yml 在coud 开发中还支持 bootstrap.properties 动态配置,这个如果这儿没有说清在百度理解
,总结就是SpringBoot会自动识别下面这组配置文件application.properties/ymlconfig/application.properties/ym1如果是Springcloud,还会自动识别下面这组配置文件:bootstrap.properties/ymlconfig/bootstrap.properties/ym1
以下是支持 的格式

2 配置文件格式转换 ToYaml.com 网址:toyaml.com/index.html
3 自定义配置属性
我们在配置文件定义一个属性 。比如定一个叫xsy = hello
然后我们在控制器上加一个注解,便 可以在属性中设置这个属性的值
使用mybatis 步骤
第一导入包
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.2.0</version> <!-- 使用适合您项目的版本 -->
</dependency>
第二配置数据库存连接(上面是配连接,下面是配扫描)
spring.datasource.url=jdbc:mysql://192.168.3.21:3306/sams?characterEncoding=UTF8&autoReconnect=true&serverTimezone=Asia/Shanghai&allowMultiQueries=true
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
mybatis.mapper-locations=classpath:/mapper/**/*.xml
第三步,在主类配扫描mappe的包
@SpringBootApplication
@ComponentScan("com.rskg")
@MapperScan("com.rskg.g_rskg.Mapper")
public class GRskgApplication {
private static final Logger LOG = LoggerFactory.getLogger(GRskgApplication.class);
public static void main(String[] args) {
ConfigurableApplicationContext context = SpringApplication.run(GRskgApplication.class, args);
LOG.info("杰哥系统也启动");
Environment env = context.getEnvironment();
LOG.info("启动成功!!");
LOG.info("地址: http://127.0.0.1:{}", env.getProperty("server.port"));
}
}
额外注意,我们在service 在导入类的时候加上注解,
package com.rskg.g_rskg.service;
import com.rskg.g_rskg.Mapper.UserMappe;
import com.rskg.g_rskg.domin.User;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
@Service
public class TestService {
@Resource
// @Autowired 这是sprintboot 带的,上面那个jdk带的
private UserMappe userMappe;
public List<User> list(){
return userMappe.list();
}
}
mapper 类文件如下,这儿只是参考,不在这儿是重点,
package com.rskg.g_rskg.Mapper;
import com.rskg.g_rskg.domin.User;
import java.util.List;
public interface UserMappe {
public List<User> list();
}
最后就是针对mybatis 映射 的配置文件,示例
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- 定义映射器接口的完全限定名 -->
<mapper namespace="com.rskg.g_rskg.Mapper.UserMappe">
<!-- 定义插入用户的 SQL 映射 -->
<select id="list" resultType="com.rskg.g_rskg.domin.User">
select * from User
</select>
</mapper>
统一返回
1,我们可以建一个对象,对象其中属性有状态 mession 了内容体,将要返回的数据放到内容体就可以完成统一统回,
2 问题是 返回的时候我们要清楚一些不要的东西,我们还要做统一响应,统一接收参数的方法为绿色部分
package com.rskg.g_rskg.resp; public class CommonResp<T> { /** * 业务上的成功或失败 */ private boolean success = true; /** * 返回信息 */ private String message; /** * 返回泛型数据,自定义类型 */ private T content; public boolean getSuccess() { return success; } public void setSuccess(boolean success) { this.success = success; } public String getMessage() { return message; } public void setMessage(String message) { this.message = message; } public T getContent() { return content; } public void setContent(T content) { this.content = content; } @Override public String toString() { final StringBuffer sb = new StringBuffer("ResponseDto{"); sb.append("success=").append(success); sb.append(", message='").append(message).append('\''); sb.append(", content=").append(content); sb.append('}'); return sb.toString(); } }
@GetMapping("/list")
public CommonResp list(EbookReq req){
CommonResp<List<EbookResp>> rest = new CommonResp<>();
List<EbookResp> list = ebookService.list(req);
rest.setContent(list);
return rest;
}
}有
有时候要返回的值要处理一下就是将将结查复制到别一个对象,去掉某一些字段,比如密码,需要是处理结果的
注掉的部份是原生方法,后面是工具的方法
public List<EbookResp> list(EbookReq Req) {
EbookExample ebookExample = new EbookExample();
ebookExample.createCriteria().andNameLike("%" + Req.getName() + "%");
List<Ebook> ebooklist = ebookMapper.selectByExample(ebookExample);
List<EbookResp> respList =new ArrayList<>();
for (Ebook ebook : ebooklist) {
// EbookResp ebookResp = new EbookResp();
// ebookResp.setId(ebook.getId());
// ebookResp.setName(ebook.getName());
// ebookResp.setCategory1Id(ebook.getCategory1Id());
// ebookResp.setCategory2Id(ebook.getCategory2Id());
// ebookResp.setDescription(ebook.getDescription());
// ebookResp.setCover(ebook.getCover());
// respList.add(ebookResp);
// BeanUtils.copyProperties(ebook,ebookResp);
// respList.add(ebookResp);
EbookResp ebookResp = CopyUtil.copy(ebook, EbookResp.class);
respList.add(ebookResp);
}
return respList;
}
}
封装这个复制别个对象的方法代码在下面,来自课堂笔记
package com.rskg.g_rskg.util; import org.springframework.beans.BeanUtils; import org.springframework.util.CollectionUtils; import java.util.ArrayList; import java.util.List; public class CopyUtil { /** * 单体复制 */ public static <T> T copy(Object source, Class<T> clazz) { if (source == null) { return null; } T obj = null; try { obj = clazz.newInstance(); } catch (Exception e) { e.printStackTrace(); return null; } BeanUtils.copyProperties(source, obj); return obj; } /** * 列表复制 */ public static <T> List<T> copyList(List source, Class<T> clazz) { List<T> target = new ArrayList<>(); if (!CollectionUtils.isEmpty(source)){ for (Object c: source) { T obj = copy(c, clazz); target.add(obj); } } return target; } }
使用这个工具的示例:
EbookResp ebookResp = CopyUtil.copy(ebook, EbookResp.class);
respList.add(ebookResp);
过滤器使用
在项目中建一个文件夹,下面建一个文件 取名filter 为了这个类可以被系统知道 要加一下注解 @Component 最后一步增加一个配置文件指明路径
// package com.jiawa.wiki.filter; // // import org.slf4j.Logger; // import org.slf4j.LoggerFactory; // import org.springframework.stereotype.Component; // // import javax.servlet.*; // import javax.servlet.http.HttpServletRequest; // import java.io.IOException; // // @Component // public class LogFilter implements Filter { // // private static final Logger LOG = LoggerFactory.getLogger(LogFilter.class); // // @Override // public void init(FilterConfig filterConfig) throws ServletException { // // } // // @Override // public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { // // 打印请求信息 // HttpServletRequest request = (HttpServletRequest) servletRequest; // LOG.info("------------- LogFilter 开始 -------------"); // LOG.info("请求地址: {} {}", request.getRequestURL().toString(), request.getMethod()); // LOG.info("远程地址: {}", request.getRemoteAddr()); // // long startTime = System.currentTimeMillis(); // filterChain.doFilter(servletRequest, servletResponse); // LOG.info("------------- LogFilter 结束 耗时:{} ms -------------", System.currentTimeMillis() - startTime); // } // }
2 挡截器先新建这样的配置
SpringMvcConfig
package com.jiawa.wiki.config;
import
@Configuration
public class SpringMvcConfig implements WebMvcConfigurer {
@Resource
LogInterceptor logInterceptor;
public void addInterceptors(InterceptorRegistry registry){registry.addInterceptor(logInterceptor)
.addPathPatterns("/**").excludePathPatterns("/login");
这儿笔记做得乱,可以复习相关
打印日志,要显示sql 的话。只需要在配置上加一句



浙公网安备 33010602011771号