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 的话。只需要在配置上加一句

java web 开发框架编的更多相关文章
- 高效 Java Web 开发框架 JessMA v3.5.1
JessMA 是功能完备的高性能 Full-Stack Web 应用开发框架,内置可扩展的 MVC Web 基础架构和 DAO 数据库访问组件(内部已提供了 Hibernate.MyBatis 与 J ...
- 高效 Java Web 开发框架 JessMA v3.4.1
JessMA 是功能完备的高性能 Full-Stack Web 应用开发框架,内置可扩展的 MVC Web 基础架构和 DAO 数据库访问组件(内部已提供了 Hibernate.MyBatis 与 J ...
- 高效 Java Web 开发框架 JessMA v3.3.1 正式发布
JessMA(原名:Portal-Basic)是一套功能完备的高性能 Full-Stack Web 应用开发框架,内置可扩展的 MVC Web 基础架构和 DAO 数据库访问组件(内部已提供了 Hib ...
- 高效 Java Web 开发框架 JessMA v3.3.1 Beta-1 发布
JessMA(原名:Portal-Basic)是一套功能完备的高性能 Full-Stack Web 应用开发框架,内置可扩展的 MVC Web 基础架构和 DAO 数据库访问组件(内部已提供了 Hib ...
- 高效 Java Web 开发框架 JessMA v3.2.3 正式发布
JessMA(原名:Portal-Basic)是一套功能完备的高性能 Full-Stack Web 应用开发框架,内置可扩展的 MVC Web 基础架构和 DAO 数据库访问组件(内部已提供了 Hib ...
- 高效 Java Web 开发框架 JessMA v3.2.3 beta-2 发布
JessMA(原名:Portal-Basic)是一套功能完备的高性能 Full-Stack Web 应用开发框架,内置可扩展的 MVC Web 基础架构和 DAO 数据库访问组件(内部已提供了 Hib ...
- 高效 Java Web 开发框架 JessMA v3.2.3 beta-1 发布
JessMA(原名:Portal-Basic)是一套功能完备的高性能 Full-Stack Web 应用开发框架,内置可扩展的 MVC Web 基础架构和 DAO 数据库访问组件(内部已提供了 Hib ...
- Java Web开发框架Spring+Hibernate整合效果介绍(附源码)
最近花了一些时间整合了一个SpringMVC+springAOP+spring security+Hibernate的一套框架,之前只专注于.NET的软件架构设计,并没有接触过Java EE,好在有经 ...
- Java Web开发框架Spring+Hibernate整合效果介绍(附源码)(已过期,有更好的)
最近花了一些时间整合了一个SpringMVC+springAOP+spring security+Hibernate的一套框架,之前只专注于.NET的软件架构设计,并没有接触过Java EE,好在有经 ...
- Java Web开发框架
http://blog.csdn.net/csolo/article/details/51965096
随机推荐
- 鸿蒙HarmonyOS实战-Web组件(页面跳转和浏览记录)
前言 页面跳转是指在浏览器中从当前页面跳转到另一个页面的操作.可以通过点击链接.输入网址.提交表单等方式实现页面跳转. 浏览记录是指记录用户在浏览器中浏览过的页面的历史记录.当用户跳转到一个新页面时, ...
- NOIP模拟64
T1 三元组 解题思路 一看题面,好像是一道数学题,但不完全是,或者说根本不是... 比较好想到的是 \(\mathcal{O}(n^2)\) 和 \(\mathcal{O}(nk)\) 的做法,然后 ...
- containerd 源码分析:创建 container(一)
0. 前言 Kubernetes:kubelet 源码分析之 pod 创建流程 介绍了 kubelet 创建 pod 的流程,containerd 源码分析:kubelet 和 containerd ...
- 数据结构 顺序表(C语言 与 Java实现)以及部分练习题
目录 数据结构 数组(顺序表) 特点 使用Java实现更高级的数组 C语言实现 总结 优点 缺点 例题 26. 删除有序数组中的重复项 1. 两数之和 27. 移除元素 153. 寻找旋转排序数组中的 ...
- kettle从入门到精通 第十二课 kettle java代码过滤记录、利用Janino计算Java表达式
1.下图通过简单的示例讲解了根据java代码过滤记录和利用Janino计算Java表达式两个组件. 2.根据java代码过滤记录 1)步骤名称:自定义 2)接收匹配的行的步骤(可选):下面条件(jav ...
- WIN11 Windows 11 安装过程中如何跳过强制联网
WIN11 Windows 11 安装过程中如何跳过强制联网.22H2. 在要求联网的页面中按下 "Shift+F10"调出命令行窗口,再输入"OOBE\BYPASSNR ...
- edge 书签栏 收藏夹栏 字体大小
WIN10中,edge收藏夹栏字体太大,如果收藏数目多,得多翻好几页. 解决方法: 地址栏中输入: edge://flags/#edge-pc-ui-integration Enable Window ...
- edge ctrl+c 复制不起作用
现象: 在edge中选中文字时,按一次ctrl+c,到其它程序ctrl+v,并不是你选中的内容. 需要在edge中按2次ctrl+c才行. --- 当你选中文字时,会出现一个三个点的菜单,点击后会出现 ...
- Task2 -- 关于Lecture3
Smiling & Weeping ---- 玲珑骰子安红豆, 入骨相思知不知. 1. 学习Git分支管理: Git分支是灵活开发的关键.创建.切换和合并分支是基础操作.使用如下命令: bas ...
- FFmpeg GL-transition转场的简单使用体验
写在前面 最近在处理视频,遇到两个视频之间的转场用原生的 xfade写起来很痛苦,实现成本高,难度大:我这里主要用的FFmpeg,就想找一个插件专门干转场这个事:搜索了一翻后找到 GL-transit ...