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
随机推荐
- 《最新出炉》系列入门篇-Python+Playwright自动化测试-48-Route类拦截修改请求-上篇
1.简介 在日常工作和学习中,自动化测试的时候:在加载页面时,可能页面出现很多不是很重要或者不是我们所关注的,这个时候我们就可以选择不加载这些内容,以提高页面加载速度,节省资源.例如:可能页面上图片比 ...
- 安装vmware17和下载红帽镜像
安装vmware17 一.下载 1.访问vmware官网 (也可以使用这个链接https://www.vmware.com/products/workstation-pro/workstation-p ...
- 使用C代码实现读取文件中的hex字符串,转换为字节数组
举例说明: ptp.txt文件中的内容为: 7a7ac0a8c80100000000003388f70002002c000004000000000000000000000000000000000000 ...
- js布尔类型
<!-- 禁用 --> <input type="text" disabled> <!-- 只读 --> & ...
- reids分片技术cluster篇
为什么学redis-cluster 前面两篇文章,主从复制和哨兵机制保障了高可用 就读写分离,而言虽然slave节点扩展了主从的读并发能力 但是写能力和存储能力是无法进行扩展,就只能是master节点 ...
- ssh练习
根据要求完成部署 根据如下要求,完成部署过程 1.恢复7.8.9.31.41所有机器的快照 7 8 9 web服务 nginx 172.16.1.xx nfs-31 提供共享文件存储 ...
- Vue学习:11.了解生命周期
Vue.js框架为组件设计了一套完整的生命周期,涵盖了从创建到销毁的全过程.这些生命周期钩子函数(lifecycle hooks)允许开发者在特定的阶段执行自定义逻辑,以便更好地管理组件的状态和与其交 ...
- Do not access Object.prototype method 'hasOwnProperty' from target object
hasOwnProperty 判断对象是否为空 在使用 hasOwnProperty 判断对象是否为空时遇到了一下问题,总结一下 // Do not access Object.prototype m ...
- 判断URL是否编码,编码后的sign对签名和验签都有影响,导致验签不通过
判断URL是否编码,编码后的sign对签名和验签都有影响,导致验签不通过如果含有 + %符号无法判断, 否则判断不准或报错 Exception in thread "main" j ...
- 数据标注工具 doccano | 命名实体识别(Named Entity Recognition,简称NER)
目录 安装 数据准备 创建项目 创建抽取式任务 上传 定义标签 构建抽取式任务标签 任务标注 命名实体识别 导出数据 查看数据 命名实体识别(Named Entity Recognition,简称NE ...